From 864416925d88f4252f1c63766fd8f53ed64ff9b7 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Thu, 28 Dec 2023 22:35:11 +0100 Subject: [PATCH] enhanced ui --- app.py | 17 +- lollms_core | 2 +- web/dist/assets/bash_block-7ca80e4e.png | Bin 0 -> 24894 bytes .../{index-dbbd1f94.js => index-553d66ea.js} | 328 +++++++++--------- web/dist/assets/python_block-4008a934.png | Bin 0 -> 20637 bytes web/dist/index.html | 2 +- web/src/assets/bash_block.png | Bin 0 -> 24894 bytes web/src/assets/extension.png | Bin 0 -> 240838 bytes web/src/assets/python_block.png | Bin 0 -> 20637 bytes web/src/components/Message.vue | 53 ++- zoos/personalities_zoo | 2 +- 11 files changed, 224 insertions(+), 180 deletions(-) create mode 100644 web/dist/assets/bash_block-7ca80e4e.png rename web/dist/assets/{index-dbbd1f94.js => index-553d66ea.js} (97%) create mode 100644 web/dist/assets/python_block-4008a934.png create mode 100644 web/src/assets/bash_block.png create mode 100644 web/src/assets/extension.png create mode 100644 web/src/assets/python_block.png diff --git a/app.py b/app.py index 89872ead..9a2591ca 100644 --- a/app.py +++ b/app.py @@ -33,7 +33,7 @@ from lollms.config import InstallOption from lollms.main_config import LOLLMSConfig from lollms.paths import LollmsPaths, gptqlora_repo from lollms.com import NotificationType, NotificationDisplayType -from lollms.utilities import AdvancedGarbageCollector, reinstall_pytorch_with_cuda, convert_language_name +from lollms.utilities import AdvancedGarbageCollector, reinstall_pytorch_with_cuda, convert_language_name, find_first_available_file_index lollms_paths = LollmsPaths.find_paths(force_local=True, custom_default_cfg_path="configs/config.yaml") # Configuration loading part config = LOLLMSConfig.autoload(lollms_paths) @@ -788,8 +788,17 @@ try: def read(self): # Get the JSON data from the POST request. + try: + from lollms.audio_gen_modules.lollms_xtts import LollmsXTTS + if self.tts is None: + self.tts = LollmsXTTS(self, voice_samples_path=Path(__file__).parent/"voices") + except: + return jsonify({"url": None}) + data = request.get_json() voice=data.get("voice",self.config.current_voice) + index = find_first_available_file_index(self.tts.output_folder, "voice_sample_",".wav") + output_fn=data.get("fn",f"voice_sample_{index}.wav") if voice is None: voice = "main_voice" self.info("Starting to build voice") @@ -803,10 +812,8 @@ try: else: voices_folder = Path(__file__).parent/"voices" self.tts.set_speaker_folder(voices_folder) - fn = self.personality.name.lower().replace(' ',"_").replace('.','') - fn = f"playground_voice.wav" - url = f"audio/{fn}" - self.tts.tts_to_file(data['text'], f"{voice}.wav", f"{fn}", language=language) + url = f"audio/{output_fn}" + self.tts.tts_to_file(data['text'], f"{voice}.wav", f"{output_fn}", language=language) self.info("Voice file ready") return jsonify({"url": url}) except: diff --git a/lollms_core b/lollms_core index 1a49dd9d..f1fd6521 160000 --- a/lollms_core +++ b/lollms_core @@ -1 +1 @@ -Subproject commit 1a49dd9dfc07c42c8329fc637274f7f4fc71dc36 +Subproject commit f1fd6521e3840a11e2e2f626d01a6c44ad39bc93 diff --git a/web/dist/assets/bash_block-7ca80e4e.png b/web/dist/assets/bash_block-7ca80e4e.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f639492e47f9c4f30e574db7de8fc18b64e944 GIT binary patch literal 24894 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 this.isLoading=!1,console.log("reinstall_extension",e),e.data.status?this.$store.state.toast.showToast("Extension reinstalled successfully!",4,!0):this.$store.state.toast.showToast("Could not reinstall extension",4,!1),e.data;this.isLoading=!1}).catch(e=>(this.isLoading=!1,this.$store.state.toast.showToast(`Could not reinstall personality `+e.message,4,!1),{status:!1}))},onPersonalityReinstall(n){console.log("on reinstall ",n),this.isLoading=!0,Pe.post("/reinstall_personality",{name:n.personality.path}).then(e=>{if(e)return this.isLoading=!1,console.log("reinstall_personality",e),e.data.status?this.$store.state.toast.showToast("Personality reinstalled successfully!",4,!0):this.$store.state.toast.showToast("Could not reinstall personality",4,!1),e.data;this.isLoading=!1}).catch(e=>(this.isLoading=!1,this.$store.state.toast.showToast(`Could not reinstall personality `+e.message,4,!1),{status:!1}))},personalityImgPlacehodler(n){n.target.src=Vo},extensionImgPlacehodler(n){n.target.src=Iet},searchPersonality_func(){clearTimeout(this.searchPersonalityTimer),this.searchPersonality&&(this.searchPersonalityInProgress=!0,setTimeout(this.filterPersonalities,this.searchPersonalityTimerInterval))},searchModel_func(){this.filterModels()}},async mounted(){console.log("Getting voices"),this.getVoices(),console.log("Constructing"),this.load_everything(),this.getSeviceVoices()},activated(){},computed:{rendered_models_zoo:{get(){return this.searchModel?this.show_only_installed_models?this.modelsFiltered.filter(n=>n.isInstalled===!0):this.modelsFiltered.slice(0,Math.min(this.models_zoo.length,this.models_zoo_initialLoadCount)):(console.log("this.models_zoo"),console.log(this.models_zoo),console.log(this.models_zoo_initialLoadCount),this.show_only_installed_models?this.models_zoo.filter(n=>n.isInstalled===!0):this.models_zoo.slice(0,Math.min(this.models_zoo.length,this.models_zoo_initialLoadCount)))}},imgBinding:{get(){if(!this.isMounted)return Ti;try{return this.$refs.bindingZoo[this.$refs.bindingZoo.findIndex(n=>n.binding.folder==this.configFile.binding_name)].$refs.imgElement.src}catch{return Ti}}},imgModel:{get(){try{if(idx=this.$store.state.modelsZoo.findIndex(n=>n.name==this.$store.state.selectedModel),idx>=0)return this.$store.state.modelsZoo[idx].avatar}catch{}if(!this.isMounted)return Ti;try{return this.$refs.bindingZoo[this.$refs.bindingZoo.findIndex(n=>n.binding.folder==this.configFile.binding_name)].$refs.imgElement.src}catch{return Ti}}},isReady:{get(){return this.$store.state.ready}},audio_out_voice:{get(){return this.$store.state.config.audio_out_voice},set(n){this.$store.state.config.audio_out_voice=n}},audioLanguages(){return[{code:"en-US",name:"English (US)"},{code:"en-GB",name:"English (UK)"},{code:"es-ES",name:"Spanish (Spain)"},{code:"es-MX",name:"Spanish (Mexico)"},{code:"fr-FR",name:"French (France)"},{code:"fr-CA",name:"French (Canada)"},{code:"de-DE",name:"German (Germany)"},{code:"it-IT",name:"Italian (Italy)"},{code:"pt-BR",name:"Portuguese (Brazil)"},{code:"pt-PT",name:"Portuguese (Portugal)"},{code:"ru-RU",name:"Russian (Russia)"},{code:"zh-CN",name:"Chinese (China)"},{code:"ja-JP",name:"Japanese (Japan)"},{code:"ar-SA",name:"Arabic (Saudi Arabia)"},{code:"tr-TR",name:"Turkish (Turkey)"},{code:"ms-MY",name:"Malay (Malaysia)"},{code:"ko-KR",name:"Korean (South Korea)"},{code:"nl-NL",name:"Dutch (Netherlands)"},{code:"sv-SE",name:"Swedish (Sweden)"},{code:"da-DK",name:"Danish (Denmark)"},{code:"fi-FI",name:"Finnish (Finland)"},{code:"no-NO",name:"Norwegian (Norway)"},{code:"pl-PL",name:"Polish (Poland)"},{code:"el-GR",name:"Greek (Greece)"},{code:"hu-HU",name:"Hungarian (Hungary)"},{code:"cs-CZ",name:"Czech (Czech Republic)"},{code:"th-TH",name:"Thai (Thailand)"},{code:"hi-IN",name:"Hindi (India)"},{code:"he-IL",name:"Hebrew (Israel)"},{code:"id-ID",name:"Indonesian (Indonesia)"},{code:"vi-VN",name:"Vietnamese (Vietnam)"},{code:"uk-UA",name:"Ukrainian (Ukraine)"},{code:"ro-RO",name:"Romanian (Romania)"},{code:"bg-BG",name:"Bulgarian (Bulgaria)"},{code:"hr-HR",name:"Croatian (Croatia)"},{code:"sr-RS",name:"Serbian (Serbia)"},{code:"sk-SK",name:"Slovak (Slovakia)"},{code:"sl-SI",name:"Slovenian (Slovenia)"},{code:"et-EE",name:"Estonian (Estonia)"},{code:"lv-LV",name:"Latvian (Latvia)"},{code:"lt-LT",name:"Lithuanian (Lithuania)"},{code:"ka-GE",name:"Georgian (Georgia)"},{code:"hy-AM",name:"Armenian (Armenia)"},{code:"az-AZ",name:"Azerbaijani (Azerbaijan)"},{code:"kk-KZ",name:"Kazakh (Kazakhstan)"},{code:"uz-UZ",name:"Uzbek (Uzbekistan)"},{code:"kkj-CM",name:"Kako (Cameroon)"},{code:"my-MM",name:"Burmese (Myanmar)"},{code:"ne-NP",name:"Nepali (Nepal)"},{code:"si-LK",name:"Sinhala (Sri Lanka)"}]},configFile:{get(){return this.$store.state.config},set(n){this.$store.commit("setConfig",n)}},userName:{get(){return this.$store.state.config.user_name},set(n){this.$store.state.config.user_name=n}},user_avatar:{get(){return"/user_infos/"+this.$store.state.config.user_avatar},set(n){this.$store.state.config.user_avatar=n}},enable_gpu:{get(){return this.$store.state.config.enable_gpu},set(n){this.$store.state.config.enable_gpu=n}},auto_update:{get(){return this.$store.state.config.auto_update},set(n){this.$store.state.config.auto_update=n}},auto_speak:{get(){return this.$store.state.config.auto_speak},set(n){this.$store.state.config.auto_speak=n}},auto_read:{get(){return this.$store.state.config.auto_read},set(n){this.$store.state.config.auto_read=n}},enable_voice_service:{get(){return this.$store.state.config.enable_voice_service},set(n){this.$store.state.config.enable_voice_service=n}},current_voice:{get(){return this.$store.state.config.current_voice===null||this.$store.state.config.current_voice===void 0?(console.log("current voice",this.$store.state.config.current_voice),"main_voice"):this.$store.state.config.current_voice},set(n){n=="main_voice"?this.$store.state.config.current_voice=null:this.$store.state.config.current_voice=n}},audio_pitch:{get(){return this.$store.state.config.audio_pitch},set(n){this.$store.state.config.audio_pitch=n}},audio_in_language:{get(){return this.$store.state.config.audio_in_language},set(n){this.$store.state.config.audio_in_language=n}},use_user_name_in_discussions:{get(){return this.$store.state.config.use_user_name_in_discussions},set(n){this.$store.state.config.use_user_name_in_discussions=n}},db_path:{get(){return this.$store.state.config.db_path},set(n){this.$store.state.config.db_path=n}},personalities:{get(){return this.$store.state.personalities},set(n){this.$store.commit("setPersonalities",n)}},mountedPersArr:{get(){return this.$store.state.mountedPersArr},set(n){this.$store.commit("setMountedPers",n)}},mountedExtensions:{get(){return console.log("this.$store.state.mountedExtensions:",this.$store.state.mountedExtensions),this.$store.state.mountedExtensions},set(n){this.$store.commit("setActiveExtensions",n)}},bindingsZoo:{get(){return this.$store.state.bindingsZoo},set(n){this.$store.commit("setbindingsZoo",n)}},modelsArr:{get(){return this.$store.state.modelsArr},set(n){this.$store.commit("setModelsArr",n)}},models:{get(){return this.models_zoo},set(n){this.$store.commit("setModelsZoo",n)}},installed_models:{get(){return this.models_zoo},set(n){this.$store.commit("setModelsZoo",n)}},diskUsage:{get(){return this.$store.state.diskUsage},set(n){this.$store.commit("setDiskUsage",n)}},ramUsage:{get(){return this.$store.state.ramUsage},set(n){this.$store.commit("setRamUsage",n)}},vramUsage:{get(){return this.$store.state.vramUsage},set(n){this.$store.commit("setVramUsage",n)}},disk_available_space(){return this.computedFileSize(this.diskUsage.available_space)},disk_binding_models_usage(){return console.log(`this.diskUsage : ${this.diskUsage}`),this.computedFileSize(this.diskUsage.binding_models_usage)},disk_percent_usage(){return this.diskUsage.percent_usage},disk_total_space(){return this.computedFileSize(this.diskUsage.total_space)},ram_available_space(){return this.computedFileSize(this.ramUsage.available_space)},ram_usage(){return this.computedFileSize(this.ramUsage.ram_usage)},ram_percent_usage(){return this.ramUsage.percent_usage},ram_total_space(){return this.computedFileSize(this.ramUsage.total_space)},model_name(){if(this.isMounted)return this.configFile.model_name},binding_name(){if(!this.isMounted)return;const n=this.bindingsZoo.findIndex(e=>e.folder===this.configFile.binding_name);if(n>-1)return this.bindingsZoo[n].name},active_pesonality(){if(!this.isMounted)return;const n=this.personalities.findIndex(e=>e.full_path===this.configFile.personalities[this.configFile.active_personality_id]);if(n>-1)return this.personalities[n].name},speed_computed(){return Oi(this.addModel.speed)},total_size_computed(){return Oi(this.addModel.total_size)},downloaded_size_computed(){return Oi(this.addModel.downloaded_size)}},watch:{enable_voice_service(n){n||(this.configFile.auto_read=!1)},bec_collapsed(){Ue(()=>{Ge.replace()})},pc_collapsed(){Ue(()=>{Ge.replace()})},mc_collapsed(){Ue(()=>{Ge.replace()})},sc_collapsed(){Ue(()=>{Ge.replace()})},showConfirmation(){Ue(()=>{Ge.replace()})},mzl_collapsed(){Ue(()=>{Ge.replace()})},pzl_collapsed(){Ue(()=>{Ge.replace()})},ezl_collapsed(){Ue(()=>{Ge.replace()})},bzl_collapsed(){Ue(()=>{Ge.replace()})},all_collapsed(n){this.collapseAll(n),Ue(()=>{Ge.replace()})},settingsChanged(n){this.$store.state.settingsChanged=n,Ue(()=>{Ge.replace()})},isLoading(){Ue(()=>{Ge.replace()})},searchPersonality(n){n==""&&this.filterPersonalities()},mzdc_collapsed(){Ue(()=>{Ge.replace()})}},async beforeRouteLeave(n){if(await this.$router.isReady(),this.settingsChanged)return await this.$store.state.yesNoDialog.askQuestion(`Did You forget to apply changes? -You need to apply changes before you leave, or else.`,"Apply configuration","Cancel")&&this.applyConfiguration(),!1}},Ce=n=>(Gs("data-v-8ad66bce"),n=n(),zs(),n),jtt={class:"container overflow-y-scroll flex flex-row shadow-lg p-10 pt-0 overflow-y-scroll w-full dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},Qtt={class:"sticky top-0 z-10 flex flex-row mb-2 p-3 gap-3 w-full rounded-b-lg bg-bg-light-tone dark:bg-bg-dark-tone shadow-lg"},Xtt={key:0,class:"flex gap-3 flex-1 items-center duration-75"},Ztt=Ce(()=>p("i",{"data-feather":"x"},null,-1)),Jtt=[Ztt],ent=Ce(()=>p("i",{"data-feather":"check"},null,-1)),tnt=[ent],nnt={key:1,class:"flex gap-3 flex-1 items-center"},int=Ce(()=>p("i",{"data-feather":"save"},null,-1)),rnt=[int],snt=Ce(()=>p("i",{"data-feather":"refresh-ccw"},null,-1)),ont=[snt],ant=Ce(()=>p("i",{"data-feather":"list"},null,-1)),lnt=[ant],cnt={class:"flex gap-3 flex-1 items-center justify-end"},dnt=Ce(()=>p("i",{"data-feather":"trash-2"},null,-1)),unt=[dnt],_nt=Ce(()=>p("i",{"data-feather":"refresh-ccw"},null,-1)),pnt=[_nt],hnt=Ce(()=>p("i",{"data-feather":"arrow-up-circle"},null,-1)),fnt={key:0},mnt=Ce(()=>p("i",{"data-feather":"alert-circle"},null,-1)),gnt=[mnt],Ent={class:"flex gap-3 items-center"},bnt={key:0,class:"flex gap-3 items-center"},Snt=Ce(()=>p("p",{class:"text-red-600 font-bold"},"Apply changes:",-1)),ynt=Ce(()=>p("i",{"data-feather":"check"},null,-1)),vnt=[ynt],Tnt={key:1,role:"status"},xnt=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Cnt=Ce(()=>p("span",{class:"sr-only"},"Loading...",-1)),Rnt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Ant={class:"flex flex-row p-3"},wnt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),Ont=[wnt],Nnt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Mnt=[Nnt],Int=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," System status",-1)),Dnt=Ce(()=>p("div",{class:"mr-2"},"|",-1)),Lnt={class:"text-base font-semibold cursor-pointer select-none items-center"},knt={class:"flex gap-2 items-center"},Pnt={key:0},Unt={class:"flex gap-2 items-center"},Fnt=["src"],Bnt={class:"font-bold font-large text-lg"},Gnt={key:1},znt={class:"flex gap-2 items-center"},Vnt=["src"],Hnt={class:"font-bold font-large text-lg"},qnt=Ce(()=>p("i",{"data-feather":"cpu",title:"CPU Ram",class:"w-5 h-5 mx-1 flex-shrink-0"},null,-1)),Ynt={class:"font-bold font-large text-lg"},$nt=Ce(()=>p("i",{"data-feather":"hard-drive",title:"Hard drive",class:"w-5 h-5 mx-1 flex-shrink-0"},null,-1)),Wnt={class:"font-bold font-large text-lg"},Knt={class:"mb-2"},jnt=Ce(()=>p("label",{class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},[p("path",{fill:"currentColor",d:"M17 17H7V7h10m4 4V9h-2V7a2 2 0 0 0-2-2h-2V3h-2v2h-2V3H9v2H7c-1.11 0-2 .89-2 2v2H3v2h2v2H3v2h2v2a2 2 0 0 0 2 2h2v2h2v-2h2v2h2v-2h2a2 2 0 0 0 2-2v-2h2v-2h-2v-2m-6 2h-2v-2h2m2-2H9v6h6V9Z"})]),$e(" CPU Ram usage: ")],-1)),Qnt={class:"flex flex-col mx-2"},Xnt=Ce(()=>p("b",null,"Avaliable ram: ",-1)),Znt=Ce(()=>p("b",null,"Ram usage: ",-1)),Jnt={class:"p-2"},eit={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},tit={class:"mb-2"},nit=Ce(()=>p("label",{class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},[p("i",{"data-feather":"hard-drive",class:"w-5 h-5"}),$e(" Disk usage: ")],-1)),iit={class:"flex flex-col mx-2"},rit=Ce(()=>p("b",null,"Avaliable disk space: ",-1)),sit=Ce(()=>p("b",null,"Disk usage: ",-1)),oit={class:"p-2"},ait={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},lit={class:"mb-2"},cit={class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},dit=["src"],uit={class:"flex flex-col mx-2"},_it=Ce(()=>p("b",null,"Model: ",-1)),pit=Ce(()=>p("b",null,"Avaliable vram: ",-1)),hit=Ce(()=>p("b",null,"GPU usage: ",-1)),fit={class:"p-2"},mit={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},git={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Eit={class:"flex flex-row p-3"},bit=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),Sit=[bit],yit=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),vit=[yit],Tit=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Main configurations",-1)),xit={class:"flex flex-col mb-2 px-3 pb-2"},Cit={class:"expand-to-fit bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},Rit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Host:")],-1)),Ait={style:{width:"100%"}},wit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Port:")],-1)),Oit={style:{width:"100%"}},Nit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Database path:")],-1)),Mit={style:{width:"100%"}},Iit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_show_browser",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto show browser:")],-1)),Dit={class:"flex flex-row"},Lit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"activate_debug",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate debug mode:")],-1)),kit={class:"flex flex-row"},Pit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"enable_gpu",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable GPU:")],-1)),Uit={class:"text-center items-center"},Fit={class:"flex flex-row"},Bit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_save",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto save:")],-1)),Git={class:"flex flex-row"},zit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_update",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto update:")],-1)),Vit={class:"flex flex-row"},Hit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_update",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto title:")],-1)),qit={class:"flex flex-row"},Yit={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},$it=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_name",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User name:")],-1)),Wit={style:{width:"100%"}},Kit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_description",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User description:")],-1)),jit={style:{width:"100%"}},Qit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_description",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Use user description in discussion:")],-1)),Xit={style:{width:"100%"}},Zit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_name",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User avatar:")],-1)),Jit={style:{width:"100%"}},ert={for:"avatar-upload"},trt=["src"],nrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_user_name_in_discussions",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Use User Name in discussions:")],-1)),irt={class:"flex flex-row"},rrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"min_n_predict",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Minimum number of output tokens space (forces the model to have more space to speak):")],-1)),srt={style:{width:"100%"}},ort={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},art=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_files",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate files support:")],-1)),lrt={class:"flex flex-row"},crt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_discussions_history",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate discussion vectorization:")],-1)),drt={class:"flex flex-row"},urt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"summerize_discussion",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate Continuous Learning from discussions:")],-1)),_rt={class:"flex flex-row"},prt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_visualize_on_vectorization",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"show vectorized data:")],-1)),hrt={class:"flex flex-row"},frt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_activate",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate data Vectorization:")],-1)),mrt={class:"flex flex-row"},grt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_build_keys_words",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Build keywords when querying the vectorized database:")],-1)),Ert={class:"flex flex-row"},brt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_method",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization method:")],-1)),Srt=Ce(()=>p("option",{value:"tfidf_vectorizer"},"tfidf Vectorizer",-1)),yrt=Ce(()=>p("option",{value:"model_embedding"},"Model Embedding",-1)),vrt=[Srt,yrt],Trt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_visualization_method",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data visualization method:")],-1)),xrt=Ce(()=>p("option",{value:"PCA"},"PCA",-1)),Crt=Ce(()=>p("option",{value:"TSNE"},"TSNE",-1)),Rrt=[xrt,Crt],Art=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_save_db",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Save the new files to the database (The database wil always grow and continue to be the same over many sessions):")],-1)),wrt={class:"flex flex-row"},Ort=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_chunk_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization chunk size(tokens):")],-1)),Nrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_overlap_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization overlap size(tokens):")],-1)),Mrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_overlap_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Number of chunks to use for each message:")],-1)),Irt={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},Drt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_auto_send_input",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Send audio input automatically:")],-1)),Lrt={class:"flex flex-row"},krt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_speak",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable auto speak:")],-1)),Prt={class:"flex flex-row"},Urt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"enable_voice_service",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable voice service:")],-1)),Frt={class:"flex flex-row"},Brt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"current_voice",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Current voice:")],-1)),Grt={class:"flex flex-row"},zrt=["disabled"],Vrt=["value"],Hrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_read",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable auto read:")],-1)),qrt={class:"flex flex-row"},Yrt=["disabled"],$rt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_pitch",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"audio pitch:")],-1)),Wrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_silenceTimer",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"audio in silence timer (ms):")],-1)),Krt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_in_language",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Input Audio Language:")],-1)),jrt=["value"],Qrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_out_voice",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Output Audio Voice:")],-1)),Xrt=["value"],Zrt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Jrt={class:"flex flex-row p-3"},est=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),tst=[est],nst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),ist=[nst],rst=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Binding zoo",-1)),sst={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},ost=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),ast={key:1,class:"mr-2"},lst={key:2,class:"text-base font-semibold cursor-pointer select-none items-center"},cst={class:"flex gap-1 items-center"},dst=["src"],ust={class:"font-bold font-large text-lg line-clamp-1"},_st={key:0,class:"mb-2"},pst={for:"binding",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},hst=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),fst=[hst],mst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),gst=[mst],Est={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},bst={class:"flex flex-row p-3"},Sst=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),yst=[Sst],vst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Tst=[vst],xst=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Models zoo",-1)),Cst={class:"flex flex-row items-center"},Rst={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},Ast=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),wst={key:1,class:"text-base text-red-600 flex gap-3 items-center mr-2"},Ost=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),Nst={key:2,class:"mr-2"},Mst={key:3,class:"text-base font-semibold cursor-pointer select-none items-center"},Ist={class:"flex gap-1 items-center"},Dst=["src"],Lst={class:"font-bold font-large text-lg line-clamp-1"},kst={class:"mx-2 mb-4"},Pst={class:"relative"},Ust={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},Fst={key:0},Bst=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Gst=[Bst],zst={key:1},Vst=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),Hst=[Vst],qst=Ce(()=>p("label",{for:"only_installed"},"Show only installed models",-1)),Yst=Ce(()=>p("a",{href:"https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard",target:"_blank",class:"mb-4 font-bold underline text-blue-500 pb-4"},"Hugging face Leaderboard",-1)),$st={key:0,role:"status",class:"text-center w-full display: flex;align-items: center;"},Wst=Ce(()=>p("svg",{"aria-hidden":"true",class:"text-center w-full display: flex;align-items: center; h-20 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Kst=Ce(()=>p("p",{class:"heartbeat-text"},"Loading models Zoo",-1)),jst=[Wst,Kst],Qst={key:1,class:"mb-2"},Xst={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},Zst=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Jst=[Zst],eot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),tot=[eot],not={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},iot={class:"flex flex-row p-3"},rot=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),sot=[rot],oot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),aot=[oot],lot=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Add models for binding",-1)),cot={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},dot=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),uot={key:1,class:"mr-2"},_ot={key:2,class:"text-base font-semibold cursor-pointer select-none items-center"},pot={class:"flex gap-1 items-center"},hot=["src"],fot={class:"font-bold font-large text-lg line-clamp-1"},mot={class:"mb-2"},got={class:"p-2"},Eot={class:"mb-3"},bot=Ce(()=>p("label",{class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},"Create a reference from local file path:",-1)),Sot={key:0},yot={class:"mb-3"},vot=Ce(()=>p("label",{class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},"Download from web:",-1)),Tot={key:1,class:"relative flex flex-col items-center justify-center flex-grow h-full"},xot=Ce(()=>p("div",{role:"status",class:"justify-center"},null,-1)),Cot={class:"relative flex flex-row flex-grow items-center w-full h-full bottom-0"},Rot={class:"w-full p-2"},Aot={class:"flex justify-between mb-1"},wot=Og(' Downloading Loading...',1),Oot={class:"text-sm font-medium text-blue-700 dark:text-white"},Not=["title"],Mot={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},Iot={class:"flex justify-between mb-1"},Dot={class:"text-base font-medium text-blue-700 dark:text-white"},Lot={class:"text-sm font-medium text-blue-700 dark:text-white"},kot={class:"flex flex-grow"},Pot={class:"flex flex-row flex-grow gap-3"},Uot={class:"p-2 text-center grow"},Fot={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Bot={class:"flex flex-row p-3 items-center"},Got=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),zot=[Got],Vot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Hot=[Vot],qot=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Personalities zoo",-1)),Yot={key:0,class:"mr-2"},$ot={class:"mr-2 font-bold font-large text-lg line-clamp-1"},Wot={key:1,class:"mr-2"},Kot={key:2,class:"text-base font-semibold cursor-pointer select-none items-center flex flex-row"},jot={key:0,class:"flex -space-x-4 items-center"},Qot={class:"group items-center flex flex-row"},Xot=["onClick"],Zot=["src","title"],Jot=["onClick"],eat=Ce(()=>p("span",{class:"hidden group-hover:block top-0 left-7 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),tat=[eat],nat={class:"mx-2 mb-4"},iat=Ce(()=>p("label",{for:"personality-search",class:"mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"},"Search",-1)),rat={class:"relative"},sat={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},oat={key:0},aat=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),lat=[aat],cat={key:1},dat=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),uat=[dat],_at={key:0,class:"mx-2 mb-4"},pat={for:"persCat",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},hat=["selected"],fat={key:0,class:"mb-2"},mat={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},gat=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Eat=[gat],bat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Sat=[bat],yat={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},vat={class:"flex flex-row p-3 items-center"},Tat=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),xat=[Tat],Cat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Rat=[Cat],Aat=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Extensions zoo",-1)),wat={key:0,class:"mr-2"},Oat={key:1,class:"text-base font-semibold cursor-pointer select-none items-center flex flex-row"},Nat={key:0,class:"flex -space-x-4 items-center"},Mat={class:"group items-center flex flex-row"},Iat=["src","title"],Dat=["onClick"],Lat=Ce(()=>p("span",{class:"hidden group-hover:block top-0 left-7 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),kat=[Lat],Pat={class:"mx-2 mb-4"},Uat=Ce(()=>p("label",{for:"personality-search",class:"mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"},"Search",-1)),Fat={class:"relative"},Bat={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},Gat={key:0},zat=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Vat=[zat],Hat={key:1},qat=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),Yat=[qat],$at={key:0,class:"mx-2 mb-4"},Wat={for:"extCat",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},Kat=["selected"],jat={key:0,class:"mb-2"},Qat={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},Xat=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Zat=[Xat],Jat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),elt=[Jat],tlt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},nlt={class:"flex flex-row p-3 items-center"},ilt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),rlt=[ilt],slt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),olt=[slt],alt=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Mounted Extensions Priority",-1)),llt={class:"flex flex-col mb-2 p-3 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},clt={class:"flex flex-row"},dlt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),ult=[dlt],_lt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),plt=[_lt],hlt=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none"}," Model Configuration",-1)),flt={class:"m-2"},mlt={class:"flex flex-row gap-2 items-center"},glt=Ce(()=>p("label",{for:"override-model-parameters",class:"block text-sm font-medium"}," Override personality model parameters ",-1)),Elt={class:"m-2"},blt=Ce(()=>p("label",{for:"seed",class:"block mb-2 text-sm font-medium"}," Seed: ",-1)),Slt={class:"m-2"},ylt={class:"flex flex-col align-bottom"},vlt={class:"relative"},Tlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"temperature",class:"text-sm font-medium"}," Temperature: ")],-1)),xlt={class:"absolute right-0"},Clt={class:"m-2"},Rlt={class:"flex flex-col align-bottom"},Alt={class:"relative"},wlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"predict",class:"text-sm font-medium"}," N Predict: ")],-1)),Olt={class:"absolute right-0"},Nlt={class:"m-2"},Mlt={class:"flex flex-col align-bottom"},Ilt={class:"relative"},Dlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"top_k",class:"text-sm font-medium"}," Top-K: ")],-1)),Llt={class:"absolute right-0"},klt={class:"m-2"},Plt={class:"flex flex-col align-bottom"},Ult={class:"relative"},Flt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"top_p",class:"text-sm font-medium"}," Top-P: ")],-1)),Blt={class:"absolute right-0"},Glt={class:"m-2"},zlt={class:"flex flex-col align-bottom"},Vlt={class:"relative"},Hlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"repeat_penalty",class:"text-sm font-medium"}," Repeat penalty: ")],-1)),qlt={class:"absolute right-0"},Ylt={class:"m-2"},$lt={class:"flex flex-col align-bottom"},Wlt={class:"relative"},Klt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"repeat_last_n",class:"text-sm font-medium"}," Repeat last N: ")],-1)),jlt={class:"absolute right-0"};function Qlt(n,e,t,i,r,s){const o=St("Card"),a=St("BindingEntry"),l=St("RadioOptions"),c=St("model-entry"),d=St("personality-entry"),u=St("ExtensionEntry"),_=St("AddModelDialog"),f=St("ChoiceDialog");return M(),L(Xe,null,[p("div",jtt,[p("div",Qtt,[r.showConfirmation?(M(),L("div",Xtt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel",type:"button",onClick:e[0]||(e[0]=Oe(h=>r.showConfirmation=!1,["stop"]))},Jtt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm save changes",type:"button",onClick:e[1]||(e[1]=Oe(h=>s.save_configuration(),["stop"]))},tnt)])):X("",!0),r.showConfirmation?X("",!0):(M(),L("div",nnt,[p("button",{title:"Save configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[2]||(e[2]=h=>r.showConfirmation=!0)},rnt),p("button",{title:"Reset configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[3]||(e[3]=h=>s.reset_configuration())},ont),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Collapse / Expand all panels",type:"button",onClick:e[4]||(e[4]=Oe(h=>r.all_collapsed=!r.all_collapsed,["stop"]))},lnt)])),p("div",cnt,[p("button",{title:"Clear uploads",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[5]||(e[5]=h=>s.api_get_req("clear_uploads").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast(["failed!"],4,!1)}))},unt),p("button",{title:"Restart program",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[6]||(e[6]=h=>s.api_get_req("restart_program").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast(["failed!"],4,!1)}))},pnt),p("button",{title:"Upgrade program ",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[7]||(e[7]=h=>s.api_get_req("update_software").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast("Success!",4,!0)}))},[hnt,r.has_updates?(M(),L("div",fnt,gnt)):X("",!0)]),p("div",Ent,[r.settingsChanged?(M(),L("div",bnt,[Snt,r.isLoading?X("",!0):(M(),L("button",{key:0,class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Apply changes",type:"button",onClick:e[8]||(e[8]=Oe(h=>s.applyConfiguration(),["stop"]))},vnt))])):X("",!0),r.isLoading?(M(),L("div",Tnt,[p("p",null,me(r.loading_text),1),xnt,Cnt])):X("",!0)])])]),p("div",{class:Ke(r.isLoading?"pointer-events-none opacity-30 w-full":"w-full")},[p("div",Rnt,[p("div",Ant,[p("button",{onClick:e[9]||(e[9]=Oe(h=>r.sc_collapsed=!r.sc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,Ont,512),[[At,r.sc_collapsed]]),Ae(p("div",null,Mnt,512),[[At,!r.sc_collapsed]]),Int,Dnt,p("div",Lnt,[p("div",knt,[p("div",null,[s.vramUsage&&s.vramUsage.gpus&&s.vramUsage.gpus.length==1?(M(),L("div",Pnt,[(M(!0),L(Xe,null,bt(s.vramUsage.gpus,h=>(M(),L("div",Unt,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,Fnt),p("h3",Bnt,[p("div",null,me(s.computedFileSize(h.used_vram))+" / "+me(s.computedFileSize(h.total_vram))+" ("+me(h.percentage)+"%) ",1)])]))),256))])):X("",!0),s.vramUsage&&s.vramUsage.gpus&&s.vramUsage.gpus.length>1?(M(),L("div",Gnt,[p("div",znt,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,Vnt),p("h3",Hnt,[p("div",null,me(s.vramUsage.gpus.length)+"x ",1)])])])):X("",!0)]),qnt,p("h3",Ynt,[p("div",null,me(s.ram_usage)+" / "+me(s.ram_total_space)+" ("+me(s.ram_percent_usage)+"%)",1)]),$nt,p("h3",Wnt,[p("div",null,me(s.disk_binding_models_usage)+" / "+me(s.disk_total_space)+" ("+me(s.disk_percent_usage)+"%)",1)])])])])]),p("div",{class:Ke([{hidden:r.sc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",Knt,[jnt,p("div",Qnt,[p("div",null,[Xnt,$e(me(s.ram_available_space),1)]),p("div",null,[Znt,$e(" "+me(s.ram_usage)+" / "+me(s.ram_total_space)+" ("+me(s.ram_percent_usage)+")% ",1)])]),p("div",Jnt,[p("div",eit,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+s.ram_percent_usage+"%;")},null,4)])])]),p("div",tit,[nit,p("div",iit,[p("div",null,[rit,$e(me(s.disk_available_space),1)]),p("div",null,[sit,$e(" "+me(s.disk_binding_models_usage)+" / "+me(s.disk_total_space)+" ("+me(s.disk_percent_usage)+"%)",1)])]),p("div",oit,[p("div",ait,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+s.disk_percent_usage+"%;")},null,4)])])]),(M(!0),L(Xe,null,bt(s.vramUsage.gpus,h=>(M(),L("div",lit,[p("label",cit,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,dit),$e(" GPU usage: ")]),p("div",uit,[p("div",null,[_it,$e(me(h.gpu_model),1)]),p("div",null,[pit,$e(me(this.computedFileSize(h.available_space)),1)]),p("div",null,[hit,$e(" "+me(this.computedFileSize(h.used_vram))+" / "+me(this.computedFileSize(h.total_vram))+" ("+me(h.percentage)+"%)",1)])]),p("div",fit,[p("div",mit,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+h.percentage+"%;")},null,4)])])]))),256))],2)]),p("div",git,[p("div",Eit,[p("button",{onClick:e[10]||(e[10]=Oe(h=>r.minconf_collapsed=!r.minconf_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,Sit,512),[[At,r.minconf_collapsed]]),Ae(p("div",null,vit,512),[[At,!r.minconf_collapsed]]),Tit])]),p("div",{class:Ke([{hidden:r.minconf_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",xit,[Le(o,{title:"General",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Cit,[p("tr",null,[Rit,p("td",Ait,[Ae(p("input",{type:"text",id:"host",required:"","onUpdate:modelValue":e[11]||(e[11]=h=>s.configFile.host=h),onChange:e[12]||(e[12]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.host]])])]),p("tr",null,[wit,p("td",Oit,[Ae(p("input",{type:"number",step:"1",id:"port",required:"","onUpdate:modelValue":e[13]||(e[13]=h=>s.configFile.port=h),onChange:e[14]||(e[14]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.port]])])]),p("tr",null,[Nit,p("td",Mit,[Ae(p("input",{type:"text",id:"db_path",required:"","onUpdate:modelValue":e[15]||(e[15]=h=>s.configFile.db_path=h),onChange:e[16]||(e[16]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.db_path]])])]),p("tr",null,[Iit,p("td",null,[p("div",Dit,[Ae(p("input",{type:"checkbox",id:"auto_show_browser",required:"","onUpdate:modelValue":e[17]||(e[17]=h=>s.configFile.auto_show_browser=h),onChange:e[18]||(e[18]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_show_browser]])])])]),p("tr",null,[Lit,p("td",null,[p("div",kit,[Ae(p("input",{type:"checkbox",id:"activate_debug",required:"","onUpdate:modelValue":e[19]||(e[19]=h=>s.configFile.debug=h),onChange:e[20]||(e[20]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.debug]])])])]),p("tr",null,[Pit,p("td",Uit,[p("div",Fit,[Ae(p("input",{type:"checkbox",id:"enable_gpu",required:"","onUpdate:modelValue":e[21]||(e[21]=h=>s.configFile.enable_gpu=h),onChange:e[22]||(e[22]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.enable_gpu]]),s.configFile.enable_gpu?X("",!0):(M(),L("button",{key:0,onClick:e[23]||(e[23]=Oe((...h)=>s.upgrade2GPU&&s.upgrade2GPU(...h),["prevent"])),class:"w-100 text-center rounded m-2 bg-blue-300 hover:bg-blue-200 text-l hover:text-primary p-2 m-2 text-left flex flex-row"}," Upgrade from CPU to GPU "))])])]),p("tr",null,[Bit,p("td",null,[p("div",Git,[Ae(p("input",{type:"checkbox",id:"auto_save",required:"","onUpdate:modelValue":e[24]||(e[24]=h=>s.configFile.auto_save=h),onChange:e[25]||(e[25]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_save]])])])]),p("tr",null,[zit,p("td",null,[p("div",Vit,[Ae(p("input",{type:"checkbox",id:"auto_update",required:"","onUpdate:modelValue":e[26]||(e[26]=h=>s.configFile.auto_update=h),onChange:e[27]||(e[27]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_update]])])])]),p("tr",null,[Hit,p("td",null,[p("div",qit,[Ae(p("input",{type:"checkbox",id:"auto_title",required:"","onUpdate:modelValue":e[28]||(e[28]=h=>s.configFile.auto_title=h),onChange:e[29]||(e[29]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_title]])])])])])]),_:1}),Le(o,{title:"User",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Yit,[p("tr",null,[$it,p("td",Wit,[Ae(p("input",{type:"text",id:"user_name",required:"","onUpdate:modelValue":e[30]||(e[30]=h=>s.configFile.user_name=h),onChange:e[31]||(e[31]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.user_name]])])]),p("tr",null,[Kit,p("td",jit,[Ae(p("textarea",{id:"user_description",required:"","onUpdate:modelValue":e[32]||(e[32]=h=>s.configFile.user_description=h),onChange:e[33]||(e[33]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.user_description]])])]),p("tr",null,[Qit,p("td",Xit,[Ae(p("input",{type:"checkbox",id:"override_personality_model_parameters",required:"","onUpdate:modelValue":e[34]||(e[34]=h=>s.configFile.override_personality_model_parameters=h),onChange:e[35]||(e[35]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.override_personality_model_parameters]])])]),p("tr",null,[Zit,p("td",Jit,[p("label",ert,[p("img",{src:"/user_infos/"+s.configFile.user_avatar,class:"w-50 h-50 rounded-full",style:{"max-width":"50px","max-height":"50px",cursor:"pointer"}},null,8,trt)]),p("input",{type:"file",id:"avatar-upload",style:{display:"none"},onChange:e[36]||(e[36]=(...h)=>s.uploadAvatar&&s.uploadAvatar(...h))},null,32)])]),p("tr",null,[nrt,p("td",null,[p("div",irt,[Ae(p("input",{type:"checkbox",id:"use_user_name_in_discussions",required:"","onUpdate:modelValue":e[37]||(e[37]=h=>s.configFile.use_user_name_in_discussions=h),onChange:e[38]||(e[38]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_user_name_in_discussions]])])])]),p("tr",null,[rrt,p("td",srt,[Ae(p("input",{type:"number",id:"min_n_predict",required:"","onUpdate:modelValue":e[39]||(e[39]=h=>s.configFile.min_n_predict=h),onChange:e[40]||(e[40]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.min_n_predict]])])])])]),_:1}),Le(o,{title:"Data Vectorization",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",ort,[p("tr",null,[art,p("td",null,[p("div",lrt,[Ae(p("input",{type:"checkbox",id:"use_files",required:"","onUpdate:modelValue":e[41]||(e[41]=h=>s.configFile.use_files=h),onChange:e[42]||(e[42]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_files]])])])]),p("tr",null,[crt,p("td",null,[p("div",drt,[Ae(p("input",{type:"checkbox",id:"use_discussions_history",required:"","onUpdate:modelValue":e[43]||(e[43]=h=>s.configFile.use_discussions_history=h),onChange:e[44]||(e[44]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_discussions_history]])])])]),p("tr",null,[urt,p("td",null,[p("div",_rt,[Ae(p("input",{type:"checkbox",id:"summerize_discussion",required:"","onUpdate:modelValue":e[45]||(e[45]=h=>s.configFile.summerize_discussion=h),onChange:e[46]||(e[46]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.summerize_discussion]])])])]),p("tr",null,[prt,p("td",null,[p("div",hrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_visualize_on_vectorization",required:"","onUpdate:modelValue":e[47]||(e[47]=h=>s.configFile.data_vectorization_visualize_on_vectorization=h),onChange:e[48]||(e[48]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_visualize_on_vectorization]])])])]),p("tr",null,[frt,p("td",null,[p("div",mrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_activate",required:"","onUpdate:modelValue":e[49]||(e[49]=h=>s.configFile.data_vectorization_activate=h),onChange:e[50]||(e[50]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_activate]])])])]),p("tr",null,[grt,p("td",null,[p("div",Ert,[Ae(p("input",{type:"checkbox",id:"data_vectorization_build_keys_words",required:"","onUpdate:modelValue":e[51]||(e[51]=h=>s.configFile.data_vectorization_build_keys_words=h),onChange:e[52]||(e[52]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_build_keys_words]])])])]),p("tr",null,[brt,p("td",null,[Ae(p("select",{id:"data_vectorization_method",required:"","onUpdate:modelValue":e[53]||(e[53]=h=>s.configFile.data_vectorization_method=h),onChange:e[54]||(e[54]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},vrt,544),[[_i,s.configFile.data_vectorization_method]])])]),p("tr",null,[Trt,p("td",null,[Ae(p("select",{id:"data_visualization_method",required:"","onUpdate:modelValue":e[55]||(e[55]=h=>s.configFile.data_visualization_method=h),onChange:e[56]||(e[56]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},Rrt,544),[[_i,s.configFile.data_visualization_method]])])]),p("tr",null,[Art,p("td",null,[p("div",wrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_save_db",required:"","onUpdate:modelValue":e[57]||(e[57]=h=>s.configFile.data_vectorization_save_db=h),onChange:e[58]||(e[58]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_save_db]])])])]),p("tr",null,[Ort,p("td",null,[Ae(p("input",{id:"data_vectorization_chunk_size","onUpdate:modelValue":e[59]||(e[59]=h=>s.configFile.data_vectorization_chunk_size=h),onChange:e[60]||(e[60]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"64000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_chunk_size]]),Ae(p("input",{"onUpdate:modelValue":e[61]||(e[61]=h=>s.configFile.data_vectorization_chunk_size=h),type:"number",onChange:e[62]||(e[62]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_chunk_size]])])]),p("tr",null,[Nrt,p("td",null,[Ae(p("input",{id:"data_vectorization_overlap_size","onUpdate:modelValue":e[63]||(e[63]=h=>s.configFile.data_vectorization_overlap_size=h),onChange:e[64]||(e[64]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"64000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_overlap_size]]),Ae(p("input",{"onUpdate:modelValue":e[65]||(e[65]=h=>s.configFile.data_vectorization_overlap_size=h),type:"number",onChange:e[66]||(e[66]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_overlap_size]])])]),p("tr",null,[Mrt,p("td",null,[Ae(p("input",{id:"data_vectorization_nb_chunks","onUpdate:modelValue":e[67]||(e[67]=h=>s.configFile.data_vectorization_nb_chunks=h),onChange:e[68]||(e[68]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"1000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_nb_chunks]]),Ae(p("input",{"onUpdate:modelValue":e[69]||(e[69]=h=>s.configFile.data_vectorization_nb_chunks=h),type:"number",onChange:e[70]||(e[70]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_nb_chunks]])])])])]),_:1}),Le(o,{title:"Audio",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Irt,[p("tr",null,[Drt,p("td",null,[p("div",Lrt,[Ae(p("input",{type:"checkbox",id:"audio_auto_send_input",required:"","onUpdate:modelValue":e[71]||(e[71]=h=>s.configFile.audio_auto_send_input=h),onChange:e[72]||(e[72]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.audio_auto_send_input]])])])]),p("tr",null,[krt,p("td",null,[p("div",Prt,[Ae(p("input",{type:"checkbox",id:"auto_speak",required:"","onUpdate:modelValue":e[73]||(e[73]=h=>s.configFile.auto_speak=h),onChange:e[74]||(e[74]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_speak]])])])]),p("tr",null,[Urt,p("td",null,[p("div",Frt,[Ae(p("input",{type:"checkbox",id:"enable_voice_service",required:"","onUpdate:modelValue":e[75]||(e[75]=h=>s.configFile.enable_voice_service=h),onChange:e[76]||(e[76]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.enable_voice_service]])])])]),p("tr",null,[Brt,p("td",null,[p("div",Grt,[Ae(p("select",{"onUpdate:modelValue":e[77]||(e[77]=h=>s.current_voice=h),onChange:e[78]||(e[78]=h=>r.settingsChanged=!0),disabled:!s.enable_voice_service},[(M(!0),L(Xe,null,bt(r.voices,h=>(M(),L("option",{key:h.id,value:h.id},me(h),9,Vrt))),128))],40,zrt),[[_i,s.current_voice]])])])]),p("tr",null,[Hrt,p("td",null,[p("div",qrt,[Ae(p("input",{type:"checkbox",id:"auto_read",required:"","onUpdate:modelValue":e[79]||(e[79]=h=>s.configFile.auto_read=h),onChange:e[80]||(e[80]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600",disabled:!s.enable_voice_service},null,40,Yrt),[[Mt,s.configFile.auto_read]])])])]),p("tr",null,[$rt,p("td",null,[Ae(p("input",{id:"audio_pitch","onUpdate:modelValue":e[81]||(e[81]=h=>s.configFile.audio_pitch=h),onChange:e[82]||(e[82]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"10",step:"0.1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.audio_pitch]]),Ae(p("input",{"onUpdate:modelValue":e[83]||(e[83]=h=>s.configFile.audio_pitch=h),onChange:e[84]||(e[84]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.audio_pitch]])])]),p("tr",null,[Wrt,p("td",null,[Ae(p("input",{id:"audio_silenceTimer","onUpdate:modelValue":e[85]||(e[85]=h=>s.configFile.audio_silenceTimer=h),onChange:e[86]||(e[86]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"10000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.audio_silenceTimer]]),Ae(p("input",{"onUpdate:modelValue":e[87]||(e[87]=h=>s.configFile.audio_silenceTimer=h),onChange:e[88]||(e[88]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.audio_silenceTimer]])])]),p("tr",null,[Krt,p("td",null,[Ae(p("select",{id:"audio_in_language","onUpdate:modelValue":e[89]||(e[89]=h=>s.configFile.audio_in_language=h),onChange:e[90]||(e[90]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},[(M(!0),L(Xe,null,bt(s.audioLanguages,h=>(M(),L("option",{key:h.code,value:h.code},me(h.name),9,jrt))),128))],544),[[_i,s.configFile.audio_in_language]])])]),p("tr",null,[Qrt,p("td",null,[Ae(p("select",{id:"audio_out_voice","onUpdate:modelValue":e[91]||(e[91]=h=>s.configFile.audio_out_voice=h),onChange:e[92]||(e[92]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},[(M(!0),L(Xe,null,bt(r.audioVoices,h=>(M(),L("option",{key:h.name,value:h.name},me(h.name),9,Xrt))),128))],544),[[_i,s.configFile.audio_out_voice]])])])])]),_:1})])],2)]),p("div",Zrt,[p("div",Jrt,[p("button",{onClick:e[93]||(e[93]=Oe(h=>r.bzc_collapsed=!r.bzc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,tst,512),[[At,r.bzc_collapsed]]),Ae(p("div",null,ist,512),[[At,!r.bzc_collapsed]]),rst,s.configFile.binding_name?X("",!0):(M(),L("div",sst,[ost,$e(" No binding selected! ")])),s.configFile.binding_name?(M(),L("div",ast,"|")):X("",!0),s.configFile.binding_name?(M(),L("div",lst,[p("div",cst,[p("img",{src:s.imgBinding,class:"w-8 h-8 rounded-full object-fill text-blue-700"},null,8,dst),p("h3",ust,me(s.binding_name),1)])])):X("",!0)])]),p("div",{class:Ke([{hidden:r.bzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[s.bindingsZoo&&s.bindingsZoo.length>0?(M(),L("div",_st,[p("label",pst," Bindings: ("+me(s.bindingsZoo.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.bzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(s.bindingsZoo,(h,E)=>(M(),Qt(a,{ref_for:!0,ref:"bindingZoo",key:"index-"+E+"-"+h.folder,binding:h,"on-selected":s.onBindingSelected,"on-reinstall":s.onReinstallBinding,"on-unInstall":s.onUnInstallBinding,"on-install":s.onInstallBinding,"on-settings":s.onSettingsBinding,"on-reload-binding":s.onReloadBinding,selected:h.folder===s.configFile.binding_name},null,8,["binding","on-selected","on-reinstall","on-unInstall","on-install","on-settings","on-reload-binding","selected"]))),128))]),_:1})],2)])):X("",!0),r.bzl_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[94]||(e[94]=h=>r.bzl_collapsed=!r.bzl_collapsed)},fst)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[95]||(e[95]=h=>r.bzl_collapsed=!r.bzl_collapsed)},gst))],2)]),p("div",Est,[p("div",bst,[p("button",{onClick:e[96]||(e[96]=Oe(h=>s.modelsZooToggleCollapse(),["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,yst,512),[[At,r.mzc_collapsed]]),Ae(p("div",null,Tst,512),[[At,!r.mzc_collapsed]]),xst,p("div",Cst,[s.configFile.binding_name?X("",!0):(M(),L("div",Rst,[Ast,$e(" Select binding first! ")])),!r.isModelSelected&&s.configFile.binding_name?(M(),L("div",wst,[Ost,$e(" No model selected! ")])):X("",!0),s.configFile.model_name?(M(),L("div",Nst,"|")):X("",!0),s.configFile.model_name?(M(),L("div",Mst,[p("div",Ist,[p("img",{src:s.imgModel,class:"w-8 h-8 rounded-lg object-fill"},null,8,Dst),p("h3",Lst,me(s.configFile.model_name),1)])])):X("",!0)])])]),p("div",{class:Ke([{hidden:r.mzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",kst,[p("div",Pst,[p("div",Ust,[r.searchModelInProgress?(M(),L("div",Fst,Gst)):X("",!0),r.searchModelInProgress?X("",!0):(M(),L("div",zst,Hst))]),Ae(p("input",{type:"search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search models...",required:"","onUpdate:modelValue":e[97]||(e[97]=h=>r.searchModel=h),onKeyup:e[98]||(e[98]=Fo((...h)=>s.searchModel_func&&s.searchModel_func(...h),["enter"]))},null,544),[[Je,r.searchModel]]),r.searchModel?(M(),L("button",{key:0,onClick:e[99]||(e[99]=Oe(h=>r.searchModel="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),p("div",null,[Ae(p("input",{"onUpdate:modelValue":e[100]||(e[100]=h=>r.show_only_installed_models=h),class:"m-2 p-2",type:"checkbox",ref:"only_installed"},null,512),[[Mt,r.show_only_installed_models]]),qst]),p("div",null,[Le(l,{radioOptions:r.sortOptions,onRadioSelected:s.handleRadioSelected},null,8,["radioOptions","onRadioSelected"])]),Yst,r.is_loading_zoo?(M(),L("div",$st,jst)):X("",!0),r.models_zoo&&r.models_zoo.length>0?(M(),L("div",Qst,[p("label",Xst," Models: ("+me(r.models_zoo.length)+") ",1),p("div",{class:Ke(["overflow-y-auto p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4 overflow-y-scroll w-full dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",r.mzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(s.rendered_models_zoo,(h,E)=>(M(),Qt(c,{ref_for:!0,ref:"modelZoo",key:"index-"+E+"-"+h.name,model:h,"is-installed":h.isInstalled,"on-install":s.onInstall,"on-uninstall":s.onUninstall,"on-selected":s.onModelSelected,selected:h.name===s.configFile.model_name,model_type:h.model_type,"on-copy":s.onCopy,"on-copy-link":s.onCopyLink,"on-cancel-install":s.onCancelInstall},null,8,["model","is-installed","on-install","on-uninstall","on-selected","selected","model_type","on-copy","on-copy-link","on-cancel-install"]))),128)),p("button",{ref:"load_more_models",class:"relative items-start p-4 hover:bg-primary-light rounded-lg mb-2 shadow-lg border-2 select-none",onClick:e[101]||(e[101]=(...h)=>s.load_more_models&&s.load_more_models(...h))},"Load more models",512)]),_:1})],2)])):X("",!0),r.mzl_collapsed?(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[102]||(e[102]=(...h)=>s.open_mzl&&s.open_mzl(...h))},Jst)):(M(),L("button",{key:3,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[103]||(e[103]=(...h)=>s.open_mzl&&s.open_mzl(...h))},tot))],2)]),p("div",not,[p("div",iot,[p("button",{onClick:e[104]||(e[104]=Oe(h=>r.mzdc_collapsed=!r.mzdc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,sot,512),[[At,r.mzdc_collapsed]]),Ae(p("div",null,aot,512),[[At,!r.mzdc_collapsed]]),lot,s.binding_name?X("",!0):(M(),L("div",cot,[dot,$e(" No binding selected! ")])),s.configFile.binding_name?(M(),L("div",uot,"|")):X("",!0),s.configFile.binding_name?(M(),L("div",_ot,[p("div",pot,[p("img",{src:s.imgBinding,class:"w-8 h-8 rounded-full object-fill text-blue-700"},null,8,hot),p("h3",fot,me(s.binding_name),1)])])):X("",!0)])]),p("div",{class:Ke([{hidden:r.mzdc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",mot,[p("div",got,[p("div",null,[p("div",Eot,[bot,Ae(p("input",{type:"text","onUpdate:modelValue":e[105]||(e[105]=h=>r.reference_path=h),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Enter Path ...",required:""},null,512),[[Je,r.reference_path]])]),p("button",{type:"button",onClick:e[106]||(e[106]=Oe(h=>s.onCreateReference(),["stop"])),class:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"},"Add reference")]),r.modelDownlaodInProgress?X("",!0):(M(),L("div",Sot,[p("div",yot,[vot,Ae(p("input",{type:"text","onUpdate:modelValue":e[107]||(e[107]=h=>r.addModel.url=h),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Enter URL ...",required:""},null,512),[[Je,r.addModel.url]])]),p("button",{type:"button",onClick:e[108]||(e[108]=Oe(h=>s.onInstallAddModel(),["stop"])),class:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"},"Download")])),r.modelDownlaodInProgress?(M(),L("div",Tot,[xot,p("div",Cot,[p("div",Rot,[p("div",Aot,[wot,p("span",Oot,me(Math.floor(r.addModel.progress))+"%",1)]),p("div",{class:"mx-1 opacity-80 line-clamp-1",title:r.addModel.url},me(r.addModel.url),9,Not),p("div",Mot,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un({width:r.addModel.progress+"%"})},null,4)]),p("div",Iot,[p("span",Dot,"Download speed: "+me(s.speed_computed)+"/s",1),p("span",Lot,me(s.downloaded_size_computed)+"/"+me(s.total_size_computed),1)])])]),p("div",kot,[p("div",Pot,[p("div",Uot,[p("button",{onClick:e[109]||(e[109]=Oe((...h)=>s.onCancelInstall&&s.onCancelInstall(...h),["stop"])),type:"button",title:"Cancel download",class:"text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-gray-200 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600"}," Cancel ")])])])])):X("",!0)])])],2)]),p("div",Fot,[p("div",Bot,[p("button",{onClick:e[111]||(e[111]=Oe(h=>r.pzc_collapsed=!r.pzc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,zot,512),[[At,r.pzc_collapsed]]),Ae(p("div",null,Hot,512),[[At,!r.pzc_collapsed]]),qot,s.configFile.personalities?(M(),L("div",Yot,"|")):X("",!0),p("div",$ot,me(s.active_pesonality),1),s.configFile.personalities?(M(),L("div",Wot,"|")):X("",!0),s.configFile.personalities?(M(),L("div",Kot,[s.mountedPersArr.length>0?(M(),L("div",jot,[(M(!0),L(Xe,null,bt(s.mountedPersArr,(h,E)=>(M(),L("div",{class:"relative hover:-translate-y-2 duration-300 hover:z-10 shrink-0",key:E+"-"+h.name,ref_for:!0,ref:"mountedPersonalities"},[p("div",Qot,[p("button",{onClick:Oe(g=>s.onPersonalitySelected(h),["stop"])},[p("img",{src:r.bUrl+h.avatar,onError:e[110]||(e[110]=(...g)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...g)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 group-hover:border-secondary",s.configFile.active_personality_id==s.configFile.personalities.indexOf(h.full_path)?"border-secondary":"border-transparent z-0"]),title:h.name},null,42,Zot)],8,Xot),p("button",{onClick:Oe(g=>s.unmountPersonality(h),["stop"])},tat,8,Jot)])]))),128))])):X("",!0)])):X("",!0)])]),p("div",{class:Ke([{hidden:r.pzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",nat,[iat,p("div",rat,[p("div",sat,[r.searchPersonalityInProgress?(M(),L("div",oat,lat)):X("",!0),r.searchPersonalityInProgress?X("",!0):(M(),L("div",cat,uat))]),Ae(p("input",{type:"search",id:"personality-search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search personality...",required:"","onUpdate:modelValue":e[112]||(e[112]=h=>r.searchPersonality=h),onKeyup:e[113]||(e[113]=Oe((...h)=>s.searchPersonality_func&&s.searchPersonality_func(...h),["stop"]))},null,544),[[Je,r.searchPersonality]]),r.searchPersonality?(M(),L("button",{key:0,onClick:e[114]||(e[114]=Oe(h=>r.searchPersonality="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),r.searchPersonality?X("",!0):(M(),L("div",_at,[p("label",pat," Personalities Category: ("+me(r.persCatgArr.length)+") ",1),p("select",{id:"persCat",onChange:e[115]||(e[115]=h=>s.update_personality_category(h.target.value,s.refresh)),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},[(M(!0),L(Xe,null,bt(r.persCatgArr,(h,E)=>(M(),L("option",{key:E,selected:h==this.configFile.personality_category},me(h),9,hat))),128))],32)])),p("div",null,[r.personalitiesFiltered.length>0?(M(),L("div",fat,[p("label",mat,me(r.searchPersonality?"Search results":"Personalities")+": ("+me(r.personalitiesFiltered.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.pzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"bounce"},{default:dt(()=>[(M(!0),L(Xe,null,bt(r.personalitiesFiltered,(h,E)=>(M(),Qt(d,{ref_for:!0,ref:"personalitiesZoo",key:"index-"+E+"-"+h.name,personality:h,select_language:!0,full_path:h.full_path,selected:s.configFile.active_personality_id==s.configFile.personalities.findIndex(g=>g===h.full_path||g===h.full_path+":"+h.language),"on-selected":s.onPersonalitySelected,"on-mount":s.mountPersonality,"on-un-mount":s.unmountPersonality,"on-remount":s.remountPersonality,"on-reinstall":s.onPersonalityReinstall,"on-settings":s.onSettingsPersonality,"on-copy-personality-name":s.onCopyPersonalityName},null,8,["personality","full_path","selected","on-selected","on-mount","on-un-mount","on-remount","on-reinstall","on-settings","on-copy-personality-name"]))),128))]),_:1})],2)])):X("",!0)]),r.pzl_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[116]||(e[116]=h=>r.pzl_collapsed=!r.pzl_collapsed)},Eat)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[117]||(e[117]=h=>r.pzl_collapsed=!r.pzl_collapsed)},Sat))],2)]),p("div",yat,[p("div",vat,[p("button",{onClick:e[119]||(e[119]=Oe(h=>r.ezc_collapsed=!r.ezc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,xat,512),[[At,r.ezc_collapsed]]),Ae(p("div",null,Rat,512),[[At,!r.ezc_collapsed]]),Aat,s.configFile.extensions?(M(),L("div",wat,"|")):X("",!0),s.configFile.extensions?(M(),L("div",Oat,[s.mountedExtensions.length>0?(M(),L("div",Nat,[(M(!0),L(Xe,null,bt(s.mountedExtensions,(h,E)=>(M(),L("div",{class:"relative hover:-translate-y-2 duration-300 hover:z-10 shrink-0",key:E+"-"+h.name,ref_for:!0,ref:"mountedExtensions"},[p("div",Mat,[p("button",null,[p("img",{src:r.bUrl+h.avatar,onError:e[118]||(e[118]=(...g)=>s.extensionImgPlacehodler&&s.extensionImgPlacehodler(...g)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 group-hover:border-secondary","border-transparent z-0"]),title:h.name},null,40,Iat)]),p("button",{onClick:Oe(g=>s.unmountExtension(h),["stop"])},kat,8,Dat)])]))),128))])):X("",!0)])):X("",!0)])]),p("div",{class:Ke([{hidden:r.ezc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",Pat,[Uat,p("div",Fat,[p("div",Bat,[r.searchExtensionInProgress?(M(),L("div",Gat,Vat)):X("",!0),r.searchExtensionInProgress?X("",!0):(M(),L("div",Hat,Yat))]),Ae(p("input",{type:"search",id:"personality-search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search extension...",required:"","onUpdate:modelValue":e[120]||(e[120]=h=>r.searchExtension=h),onKeyup:e[121]||(e[121]=Oe((...h)=>n.searchExtension_func&&n.searchExtension_func(...h),["stop"]))},null,544),[[Je,r.searchExtension]]),r.searchExtension?(M(),L("button",{key:0,onClick:e[122]||(e[122]=Oe(h=>r.searchExtension="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),r.searchExtension?X("",!0):(M(),L("div",$at,[p("label",Wat," Extensions Category: ("+me(r.extCatgArr.length)+") ",1),p("select",{id:"extCat",onChange:e[123]||(e[123]=h=>s.update_extension_category(h.target.value,s.refresh)),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},[(M(!0),L(Xe,null,bt(r.extCatgArr,(h,E)=>(M(),L("option",{key:E,selected:h==this.extension_category},me(h),9,Kat))),128))],32)])),p("div",null,[r.extensionsFiltererd.length>0?(M(),L("div",jat,[p("label",Qat,me(r.searchExtension?"Search results":"Personalities")+": ("+me(r.extensionsFiltererd.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.ezl_collapsed?"":"max-h-96"])},[(M(!0),L(Xe,null,bt(r.extensionsFiltererd,(h,E)=>(M(),Qt(u,{ref_for:!0,ref:"extensionsZoo",key:"index-"+E+"-"+h.name,extension:h,select_language:!0,full_path:h.full_path,"on-mount":s.mountExtension,"on-un-mount":s.unmountExtension,"on-remount":s.remountExtension,"on-reinstall":s.onExtensionReinstall,"on-settings":s.onSettingsExtension},null,8,["extension","full_path","on-mount","on-un-mount","on-remount","on-reinstall","on-settings"]))),128))],2)])):X("",!0)]),r.ezc_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[124]||(e[124]=h=>r.ezl_collapsed=!r.ezl_collapsed)},Zat)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[125]||(e[125]=h=>r.ezl_collapsed=!r.ezl_collapsed)},elt))],2)]),p("div",tlt,[p("div",nlt,[p("button",{onClick:e[126]||(e[126]=Oe(h=>r.mep_collapsed=!r.mep_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,rlt,512),[[At,r.mep_collapsed]]),Ae(p("div",null,olt,512),[[At,!r.mep_collapsed]]),alt])]),p("div",{class:Ke([{hidden:r.mep_collapsed},"flex flex-col mb-2 px-3 pb-0"])},null,2)]),p("div",llt,[p("div",clt,[p("button",{onClick:e[127]||(e[127]=Oe(h=>r.mc_collapsed=!r.mc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,ult,512),[[At,r.mc_collapsed]]),Ae(p("div",null,plt,512),[[At,!r.mc_collapsed]]),hlt])]),p("div",{class:Ke([{hidden:r.mc_collapsed},"flex flex-col mb-2 p-2"])},[p("div",flt,[p("div",mlt,[Ae(p("input",{id:"override-model-parameters",type:"checkbox",class:"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-700 dark:focus:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500",onClick:e[128]||(e[128]=Oe(()=>{},["stop"])),"onUpdate:modelValue":e[129]||(e[129]=h=>s.configFile.override_personality_model_parameters=h),onChange:e[130]||(e[130]=h=>s.update_setting("override_personality_model_parameters",s.configFile.override_personality_model_parameters))},null,544),[[Mt,s.configFile.override_personality_model_parameters]]),glt])]),p("div",{class:Ke(s.configFile.override_personality_model_parameters?"":"pointer-events-none opacity-30")},[p("div",Elt,[blt,Ae(p("input",{type:"text",id:"seed","onUpdate:modelValue":e[131]||(e[131]=h=>s.configFile.seed=h),class:"bg-gray-50 border border-gray-300 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,512),[[Je,s.configFile.seed]])]),p("div",Slt,[p("div",ylt,[p("div",vlt,[Tlt,p("p",xlt,[Ae(p("input",{type:"text",id:"temp-val","onUpdate:modelValue":e[132]||(e[132]=h=>s.configFile.temperature=h),onChange:e[133]||(e[133]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.temperature]])])]),Ae(p("input",{id:"temperature",onChange:e[134]||(e[134]=h=>r.settingsChanged=!0),type:"range","onUpdate:modelValue":e[135]||(e[135]=h=>s.configFile.temperature=h),min:"0",max:"5",step:"0.1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.temperature]])])]),p("div",Clt,[p("div",Rlt,[p("div",Alt,[wlt,p("p",Olt,[Ae(p("input",{type:"text",id:"predict-val","onUpdate:modelValue":e[136]||(e[136]=h=>s.configFile.n_predict=h),onChange:e[137]||(e[137]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.n_predict]])])]),Ae(p("input",{id:"predict",type:"range",onChange:e[138]||(e[138]=h=>r.settingsChanged=!0),"onUpdate:modelValue":e[139]||(e[139]=h=>s.configFile.n_predict=h),min:"0",max:"2048",step:"32",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.n_predict]])])]),p("div",Nlt,[p("div",Mlt,[p("div",Ilt,[Dlt,p("p",Llt,[Ae(p("input",{type:"text",id:"top_k-val","onUpdate:modelValue":e[140]||(e[140]=h=>s.configFile.top_k=h),onChange:e[141]||(e[141]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_k]])])]),Ae(p("input",{id:"top_k",type:"range",onChange:e[142]||(e[142]=h=>r.settingsChanged=!0),"onUpdate:modelValue":e[143]||(e[143]=h=>s.configFile.top_k=h),min:"0",max:"100",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_k]])])]),p("div",klt,[p("div",Plt,[p("div",Ult,[Flt,p("p",Blt,[Ae(p("input",{type:"text",id:"top_p-val","onUpdate:modelValue":e[144]||(e[144]=h=>s.configFile.top_p=h),onChange:e[145]||(e[145]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_p]])])]),Ae(p("input",{id:"top_p",type:"range","onUpdate:modelValue":e[146]||(e[146]=h=>s.configFile.top_p=h),min:"0",max:"1",step:"0.01",onChange:e[147]||(e[147]=h=>r.settingsChanged=!0),class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_p]])])]),p("div",Glt,[p("div",zlt,[p("div",Vlt,[Hlt,p("p",qlt,[Ae(p("input",{type:"text",id:"repeat_penalty-val","onUpdate:modelValue":e[148]||(e[148]=h=>s.configFile.repeat_penalty=h),onChange:e[149]||(e[149]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_penalty]])])]),Ae(p("input",{id:"repeat_penalty",onChange:e[150]||(e[150]=h=>r.settingsChanged=!0),type:"range","onUpdate:modelValue":e[151]||(e[151]=h=>s.configFile.repeat_penalty=h),min:"0",max:"2",step:"0.01",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_penalty]])])]),p("div",Ylt,[p("div",$lt,[p("div",Wlt,[Klt,p("p",jlt,[Ae(p("input",{type:"text",id:"repeat_last_n-val","onUpdate:modelValue":e[152]||(e[152]=h=>s.configFile.repeat_last_n=h),onChange:e[153]||(e[153]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_last_n]])])]),Ae(p("input",{id:"repeat_last_n",type:"range","onUpdate:modelValue":e[154]||(e[154]=h=>s.configFile.repeat_last_n=h),min:"0",max:"100",step:"1",onChange:e[155]||(e[155]=h=>r.settingsChanged=!0),class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_last_n]])])])],2)],2)])],2)]),Le(_,{ref:"addmodeldialog"},null,512),Le(f,{class:"z-20",show:r.variantSelectionDialogVisible,choices:r.variant_choices,onChoiceSelected:s.onVariantChoiceSelected,onCloseDialog:s.oncloseVariantChoiceDialog,onChoiceValidated:s.onvalidateVariantChoice},null,8,["show","choices","onChoiceSelected","onCloseDialog","onChoiceValidated"])],64)}const Xlt=ft(Ktt,[["render",Qlt],["__scopeId","data-v-8ad66bce"]]),Zlt={components:{ClipBoardTextInput:_E,Card:Ll},data(){return{dataset_path:"",max_length:1024,batch_size:4,lr:5e-5,num_epochs:2,selectedFolder:"",selectedDataset:""}},methods:{submitForm(){const n={model_name:this.selectedModel,dataset_file:this.selectedDataset,max_length:this.max_length,batch_size:this.batch_size,lr:this.lr,num_epochs:this.num_epochs,output_dir:this.selectedFolder};Pe.post("/start_training",n).then(e=>{})},openFolderSelector(){this.$refs.folder_selector.click()},selectOutputDirectory(n){var t;console.log("here");const e=(t=n.target.files[0])==null?void 0:t.path;console.log(e),e&&(this.selectedFolder=e)},selectDataset(n){const e=n.target.files;e.length>0&&(this.selectedDataset=e[0])}},computed:{selectedModel:{get(){return this.$store.state.selectedModel}},models:{get(){return this.$store.state.modelsArr}}},watch:{model_name(n){console.log("watching model_name",n),this.$refs.clipboardInput.inputValue=n}}},Jlt={key:0,class:"container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-2 bg-bg-light-tone dark:bg-bg-dark-tone"},ect={class:"mb-4"},tct=p("label",{for:"model_name",class:"text-sm"},"Model Name:",-1),nct=["value"],ict={class:"mb-4"},rct=p("label",{for:"dataset_path",class:"text-sm"},"Dataset:",-1),sct={class:"mb-4"},oct=p("label",{for:"lr",class:"text-sm"},"Learning Rate:",-1),act={class:"mb-4"},lct=p("label",{for:"num_epochs",class:"text-sm"},"Number of Epochs:",-1),cct={class:"mb-4"},dct=p("label",{for:"max_length",class:"text-sm"},"Max Length:",-1),uct={class:"mb-4"},_ct=p("label",{for:"batch_size",class:"text-sm"},"Batch Size:",-1),pct={class:"mb-4"},hct=p("label",{for:"output_dir",class:"text-sm"},"Output Directory:",-1),fct=p("button",{class:"bg-blue-500 text-white px-4 py-2 rounded"},"Start training",-1),mct={key:1};function gct(n,e,t,i,r,s){const o=St("Card"),a=St("ClipBoardTextInput");return s.selectedModel!==null&&s.selectedModel.toLowerCase().includes("gptq")?(M(),L("div",Jlt,[p("form",{onSubmit:e[2]||(e[2]=Oe((...l)=>s.submitForm&&s.submitForm(...l),["prevent"])),class:""},[Le(o,{title:"Training configuration",isHorizontal:!0,disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Le(o,{title:"Model",class:"",isHorizontal:!1},{default:dt(()=>[p("div",ect,[tct,Ae(p("select",{"onUpdate:modelValue":e[0]||(e[0]=l=>s.selectedModel=l),onChange:e[1]||(e[1]=(...l)=>n.setModel&&n.setModel(...l)),class:"bg-white dark:bg-black m-0 border-2 rounded-md shadow-sm w-full"},[(M(!0),L(Xe,null,bt(s.models,l=>(M(),L("option",{key:l,value:l},me(l),9,nct))),128))],544),[[_i,s.selectedModel]])])]),_:1}),Le(o,{title:"Data",isHorizontal:!1},{default:dt(()=>[p("div",ict,[rct,Le(a,{id:"model_path",inputType:"file",value:r.dataset_path,onchange:"selectDataset()"},null,8,["value"])])]),_:1}),Le(o,{title:"Training",isHorizontal:!1},{default:dt(()=>[p("div",sct,[oct,Le(a,{id:"model_path",inputType:"integer",value:r.lr},null,8,["value"])]),p("div",act,[lct,Le(a,{id:"model_path",inputType:"integer",value:r.num_epochs},null,8,["value"])]),p("div",cct,[dct,Le(a,{id:"model_path",inputType:"integer",value:r.max_length},null,8,["value"])]),p("div",uct,[_ct,Le(a,{id:"model_path",inputType:"integer",value:r.batch_size},null,8,["value"])])]),_:1}),Le(o,{title:"Output",isHorizontal:!1},{default:dt(()=>[p("div",pct,[hct,Le(a,{id:"model_path",inputType:"text",value:n.output_dir},null,8,["value"])])]),_:1})]),_:1}),Le(o,{disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[fct]),_:1})],32)])):(M(),L("div",mct,[Le(o,{title:"Info",class:"",isHorizontal:!1},{default:dt(()=>[$e(" Only GPTQ models are supported for QLora fine tuning. Please select a GPTQ compatible binding. ")]),_:1})]))}const Ect=ft(Zlt,[["render",gct]]),bct={components:{ClipBoardTextInput:_E,Card:Ll},data(){return{model_name:"jondurbin/airoboros-7b-gpt4",tokenizer_name:"jondurbin/airoboros-7b-gpt4",dataset_path:"",max_length:1024,batch_size:4,lr:5e-5,num_epochs:2,selectedFolder:"",selectedDatasetPath:""}},methods:{submitForm(){this.model_name,this.tokenizer_name,this.selectedDatasetPath,this.max_length,this.batch_size,this.lr,this.num_epochs,this.selectedFolder},openFolderSelector(){this.$refs.folder_selector.click()},selectOutputDirectory(n){var t;console.log("here");const e=(t=n.target.files[0])==null?void 0:t.path;console.log(e),e&&(this.selectedFolder=e)},selectDatasetPath(n){const e=n.target.files;e.length>0&&(this.selectedDatasetPath=e[0].webkitRelativePath)}}},Sct={class:"container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-2 bg-bg-light-tone dark:bg-bg-dark-tone"},yct={class:"mb-4"},vct=p("label",{for:"model_name",class:"text-sm"},"Model Name:",-1),Tct={class:"mb-4"},xct=p("label",{for:"tokenizer_name",class:"text-sm"},"Tokenizer Name:",-1),Cct=p("button",{type:"submit",class:"bg-blue-500 text-white px-4 py-2 rounded"},"Quantize LLM",-1);function Rct(n,e,t,i,r,s){const o=St("ClipBoardTextInput"),a=St("Card");return M(),L("div",Sct,[p("form",{onSubmit:e[0]||(e[0]=Oe((...l)=>s.submitForm&&s.submitForm(...l),["prevent"])),class:"max-w-md mx-auto"},[Le(a,{title:"Quantizing configuration",isHorizontal:!0,disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Le(a,{title:"Model",class:"",isHorizontal:!1},{default:dt(()=>[p("div",yct,[vct,Le(o,{id:"model_path",inputType:"text",value:r.model_name},null,8,["value"])]),p("div",Tct,[xct,Le(o,{id:"model_path",inputType:"text",value:r.tokenizer_name},null,8,["value"])])]),_:1})]),_:1}),Le(a,{disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Cct]),_:1})],32)])}const Act=ft(bct,[["render",Rct]]),wct={data(){return{show:!1,prompt:"",inputText:""}},methods:{showPanel(){this.show=!0},ok(){this.show=!1,this.$emit("ok",this.inputText)},cancel(){this.show=!1,this.inputText=""}},props:{promptText:{type:String,required:!0}},watch:{promptText(n){this.prompt=n}}},Oct={key:0,class:"fixed top-0 left-0 w-full h-full flex justify-center items-center bg-black bg-opacity-50"},Nct={class:"bg-white p-8 rounded"},Mct={class:"text-xl font-bold mb-4"};function Ict(n,e,t,i,r,s){return M(),L("div",null,[r.show?(M(),L("div",Oct,[p("div",Nct,[p("h2",Mct,me(t.promptText),1),Ae(p("input",{type:"text","onUpdate:modelValue":e[0]||(e[0]=o=>r.inputText=o),class:"border border-gray-300 px-4 py-2 rounded mb-4"},null,512),[[Je,r.inputText]]),p("button",{onClick:e[1]||(e[1]=(...o)=>s.ok&&s.ok(...o)),class:"bg-blue-500 text-white px-4 py-2 rounded mr-2"},"OK"),p("button",{onClick:e[2]||(e[2]=(...o)=>s.cancel&&s.cancel(...o)),class:"bg-gray-500 text-white px-4 py-2 rounded"},"Cancel")])])):X("",!0)])}const Ew=ft(wct,[["render",Ict]]),Dct={props:{htmlContent:{type:String,required:!0}}},Lct=["innerHTML"];function kct(n,e,t,i,r,s){return M(),L("div",null,[p("div",{innerHTML:t.htmlContent},null,8,Lct)])}const Pct=ft(Dct,[["render",kct]]);const Uct={props:{jsonData:{type:[Object,Array,String],default:null},jsonFormText:{type:String,default:"JSON Form"}},data(){return{collapsed:!0}},computed:{formattedJson(){return typeof this.jsonData=="string"?JSON.stringify(JSON.parse(this.jsonData),null," ").replace(/\n/g,"
"):JSON.stringify(this.jsonData,null," ").replace(/\n/g,"
")},isObject(){return typeof this.jsonData=="object"&&this.jsonData!==null},isContentPresent(){return this.jsonData!==null&&(typeof this.jsonData!="string"||this.jsonData.trim()!=="")}},methods:{toggleCollapsed(){this.collapsed=!this.collapsed},toggleCollapsible(){this.collapsed=!this.collapsed}}},Fct={key:0},Bct={class:"toggle-icon mr-1"},Gct={key:0,class:"fas fa-plus-circle text-gray-600"},zct={key:1,class:"fas fa-minus-circle text-gray-600"},Vct={class:"json-viewer max-h-64 overflow-auto p-4 bg-gray-100 border border-gray-300 rounded dark:bg-gray-600"},Hct={key:0,class:"fas fa-plus-circle text-gray-600"},qct={key:1,class:"fas fa-minus-circle text-gray-600"},Yct=["innerHTML"];function $ct(n,e,t,i,r,s){return s.isContentPresent?(M(),L("div",Fct,[p("div",{class:"collapsible-section cursor-pointer mb-4 font-bold hover:text-gray-900",onClick:e[0]||(e[0]=(...o)=>s.toggleCollapsible&&s.toggleCollapsible(...o))},[p("span",Bct,[r.collapsed?(M(),L("i",Gct)):(M(),L("i",zct))]),$e(" "+me(t.jsonFormText),1)]),Ae(p("div",null,[p("div",Vct,[s.isObject?(M(),L("span",{key:0,onClick:e[1]||(e[1]=(...o)=>s.toggleCollapsed&&s.toggleCollapsed(...o)),class:"toggle-icon cursor-pointer mr-1"},[r.collapsed?(M(),L("i",Hct)):(M(),L("i",qct))])):X("",!0),p("pre",{innerHTML:s.formattedJson},null,8,Yct)])],512),[[At,!r.collapsed]])])):X("",!0)}const Wct=ft(Uct,[["render",$ct]]),Kct={props:{done:{type:Boolean,required:!0},message:{type:String,required:!0},status:{type:Boolean,required:!0}}},jct={class:"step flex items-center mb-4"},Qct={class:"flex items-center justify-center w-6 h-6 mr-2"},Xct={key:0},Zct=p("i",{"data-feather":"square",class:"text-gray-400 w-4 h-4"},null,-1),Jct=[Zct],edt={key:1},tdt=p("i",{"data-feather":"check-square",class:"text-green-500 w-4 h-4"},null,-1),ndt=[tdt],idt={key:2},rdt=p("i",{"data-feather":"x-square",class:"text-red-500 w-4 h-4"},null,-1),sdt=[rdt],odt={key:0,role:"status"},adt=p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1),ldt=[adt];function cdt(n,e,t,i,r,s){return M(),L("div",jct,[p("div",Qct,[t.done?X("",!0):(M(),L("div",Xct,Jct)),t.done&&t.status?(M(),L("div",edt,ndt)):X("",!0),t.done&&!t.status?(M(),L("div",idt,sdt)):X("",!0)]),t.done?X("",!0):(M(),L("div",odt,ldt)),p("div",{class:Ke(["content flex-1 px-2",{"text-green-500":t.done,"text-yellow-500":!t.done}])},me(t.message),3)])}const ddt=ft(Kct,[["render",cdt]]);const ax="/",udt={name:"Message",emits:["copy","delete","rankUp","rankDown","updateMessage","resendMessage","continueMessage"],components:{MarkdownRenderer:hw,Step:ddt,RenderHTMLJS:Pct,JsonViewer:Wct,DynamicUIRenderer:gw},props:{host:{type:String,required:!1,default:"http://localhost:9600"},message:Object,avatar:""},data(){return{audio_url:null,audio:null,msg:null,isSpeaking:!1,speechSynthesis:null,voices:[],expanded:!1,showConfirmation:!1,editMsgMode_:!1,deleteMsgMode:!1,mdRenderHeight:Number}},mounted(){"speechSynthesis"in window?(this.speechSynthesis=window.speechSynthesis,this.voices=this.speechSynthesis.getVoices(),this.voices.length===0&&this.speechSynthesis.addEventListener("voiceschanged",this.onVoicesChanged)):console.error("Speech synthesis is not supported in this browser."),Ue(()=>{Ge.replace(),this.mdRenderHeight=this.$refs.mdRender.$el.offsetHeight})},methods:{insertTab(n){const e=n.target,t=e.selectionStart,i=e.selectionEnd,r=e.value.substring(0,t),s=e.value.substring(i),o=r+" "+s;this.message.content=o,this.$nextTick(()=>{e.selectionStart=e.selectionEnd=t+4}),n.preventDefault()},onVoicesChanged(){this.voices=this.speechSynthesis.getVoices()},read(){this.isSpeaking?this.audio.pause():(this.isSpeaking=!0,Pe.post("./read",{text:this.message.content}).then(n=>{let e=n.data.url;console.log(e),this.audio_url=e}).catch(n=>{this.$store.state.toast.showToast(`Error: ${n}`,4,!1),this.generating=!1}))},speak(){if(this.msg){this.speechSynthesis.cancel(),this.msg=null,this.isSpeaking=!1;return}let n=0;console.log("voice on"),this.isSpeaking=!0;const e=200;this.message.content,this.msg=new SpeechSynthesisUtterance,this.msg.pitch=this.$store.state.config.audio_pitch,this.voices.length>0&&(this.msg.voice=this.voices.filter(r=>r.name===this.$store.state.config.audio_out_voice)[0]);const t=r=>{let s=this.message.content.substring(r,r+e);const o=[".","!","?",` -`];let a=-1;return o.forEach(l=>{const c=s.lastIndexOf(l);c>a&&(a=c)}),a==-1&&(a=s.length),console.log(a),a+r+1},i=()=>{if(this.message.content.includes(".")){const r=t(n),s=this.message.content.substring(n,r);this.msg.text=s,n=r+1,this.msg.onend=o=>{n{i()},1):(this.isSpeaking=!1,console.log("voice off :",this.message.content.length," ",r))},this.speechSynthesis.speak(this.msg)}else setTimeout(()=>{i()},1)};i()},toggleModel(){this.expanded=!this.expanded},copyContentToClipboard(){this.$emit("copy",this)},deleteMsg(){this.$emit("delete",this.message.id),this.deleteMsgMode=!1},rankUp(){this.$emit("rankUp",this.message.id)},rankDown(){this.$emit("rankDown",this.message.id)},updateMessage(){this.$emit("updateMessage",this.message.id,this.message.content),this.editMsgMode=!1},resendMessage(n){this.$emit("resendMessage",this.message.id,this.message.content,n)},continueMessage(){this.$emit("continueMessage",this.message.id,this.message.content)},getImgUrl(){return this.avatar?(console.log("Avatar:",ax+this.avatar),ax+this.avatar):(console.log("No avatar found"),Vo)},defaultImg(n){n.target.src=Vo},parseDate(n){let e=new Date(Date.parse(n)),i=Math.floor((new Date-e)/1e3);return i<=1?"just now":i<20?i+" seconds ago":i<40?"half a minute ago":i<60?"less than a minute ago":i<=90?"one minute ago":i<=3540?Math.round(i/60)+" minutes ago":i<=5400?"1 hour ago":i<=86400?Math.round(i/3600)+" hours ago":i<=129600?"1 day ago":i<604800?Math.round(i/86400)+" days ago":i<=777600?"1 week ago":n},prettyDate(n){let e=new Date((n||"").replace(/-/g,"/").replace(/[TZ]/g," ")),t=(new Date().getTime()-e.getTime())/1e3,i=Math.floor(t/86400);if(!(isNaN(i)||i<0||i>=31))return i==0&&(t<60&&"just now"||t<120&&"1 minute ago"||t<3600&&Math.floor(t/60)+" minutes ago"||t<7200&&"1 hour ago"||t<86400&&Math.floor(t/3600)+" hours ago")||i==1&&"Yesterday"||i<7&&i+" days ago"||i<31&&Math.ceil(i/7)+" weeks ago"},checkForFullSentence(){if(this.message.content.trim().split(" ").length>3){this.speak();return}}},watch:{"message.content":function(n){this.$store.state.config.auto_speak&&(this.isSpeaking||this.checkForFullSentence())},"message.ui":function(n){console.log("ui changed"),console.log(this.message.ui)},showConfirmation(){Ue(()=>{Ge.replace()})},deleteMsgMode(){Ue(()=>{Ge.replace()})}},computed:{enable_voice_service:{get(){this.$store.state.config.enable_voice_service}},editMsgMode:{get(){return this.message.hasOwnProperty("open")?this.editMsgMode_||this.message.open:this.editMsgMode_},set(n){this.message.open=n,this.editMsgMode_=n,Ue(()=>{Ge.replace()})}},isTalking:{get(){return this.isSpeaking}},created_at(){return this.prettyDate(this.message.created_at)},created_at_parsed(){return new Date(Date.parse(this.message.created_at)).toLocaleString()},finished_generating_at_parsed(){return new Date(Date.parse(this.message.finished_generating_at)).toLocaleString()},time_spent(){const n=new Date(Date.parse(this.message.created_at)),e=new Date(Date.parse(this.message.finished_generating_at));if(e.getTime()===n.getTime()||!e.getTime())return;let i=e.getTime()-n.getTime();const r=Math.floor(i/(1e3*60*60));i-=r*(1e3*60*60);const s=Math.floor(i/(1e3*60));i-=s*(1e3*60);const o=Math.floor(i/1e3);i-=o*1e3;function a(c){return c<10&&(c="0"+c),c}return a(r)+"h:"+a(s)+"m:"+a(o)+"s"}}},_dt={class:"relative w-full group rounded-lg m-2 shadow-lg hover:border-primary dark:hover:border-primary hover:border-solid hover:border-2 border-2 border-transparent even:bg-bg-light-discussion-odd dark:even:bg-bg-dark-discussion-odd flex flex-col flex-grow flex-wrap overflow-visible p-4 pb-2"},pdt={class:"flex flex-row gap-2"},hdt={class:"flex-shrink-0"},fdt={class:"group/avatar"},mdt=["src","data-popover-target"],gdt={class:"flex flex-col w-full flex-grow-0"},Edt={class:"flex flex-row flex-grow items-start"},bdt={class:"flex flex-col mb-2"},Sdt={class:"drop-shadow-sm text-lg text-opacity-95 font-bold grow"},ydt=["title"],vdt=p("div",{class:"flex-grow"},null,-1),Tdt={class:"flex-row justify-end mx-2"},xdt={class:"invisible group-hover:visible flex flex-row"},Cdt={key:0,class:"flex items-center duration-75"},Rdt=p("i",{"data-feather":"x"},null,-1),Adt=[Rdt],wdt=p("i",{"data-feather":"check"},null,-1),Odt=[wdt],Ndt=p("i",{"data-feather":"edit"},null,-1),Mdt=[Ndt],Idt=p("i",{"data-feather":"copy"},null,-1),Ddt=[Idt],Ldt=p("i",{"data-feather":"send"},null,-1),kdt=[Ldt],Pdt=p("i",{"data-feather":"send"},null,-1),Udt=[Pdt],Fdt=p("i",{"data-feather":"fast-forward"},null,-1),Bdt=[Fdt],Gdt={key:5,class:"flex items-center duration-75"},zdt=p("i",{"data-feather":"x"},null,-1),Vdt=[zdt],Hdt=p("i",{"data-feather":"check"},null,-1),qdt=[Hdt],Ydt=p("i",{"data-feather":"trash"},null,-1),$dt=[Ydt],Wdt=p("i",{"data-feather":"thumbs-up"},null,-1),Kdt=[Wdt],jdt={class:"flex flex-row items-center"},Qdt=p("i",{"data-feather":"thumbs-down"},null,-1),Xdt=[Qdt],Zdt={class:"flex flex-row items-center"},Jdt=p("i",{"data-feather":"volume-2"},null,-1),eut=[Jdt],tut={key:7,class:"flex flex-row items-center"},nut=p("i",{"data-feather":"voicemail"},null,-1),iut=[nut],rut={class:"overflow-x-auto w-full"},sut={class:"flex flex-col items-start w-full"},out={class:"flex flex-col items-start w-full"},aut={key:1},lut={key:3,controls:"",autoplay:""},cut=["src"],dut={class:"text-sm text-gray-400 mt-2"},uut={class:"flex flex-row items-center gap-2"},_ut={key:0},put={class:"font-thin"},hut={key:1},fut={class:"font-thin"},mut={key:2},gut={class:"font-thin"},Eut={key:3},but=["title"];function Sut(n,e,t,i,r,s){const o=St("Step"),a=St("RenderHTMLJS"),l=St("MarkdownRenderer"),c=St("JsonViewer"),d=St("DynamicUIRenderer");return M(),L("div",_dt,[p("div",pdt,[p("div",hdt,[p("div",fdt,[p("img",{src:s.getImgUrl(),onError:e[0]||(e[0]=u=>s.defaultImg(u)),"data-popover-target":"avatar"+t.message.id,"data-popover-placement":"bottom",class:"w-10 h-10 rounded-full object-fill text-red-700"},null,40,mdt)])]),p("div",gdt,[p("div",Edt,[p("div",bdt,[p("div",Sdt,me(t.message.sender)+" ",1),t.message.created_at?(M(),L("div",{key:0,class:"text-sm text-gray-400 font-thin",title:"Created at: "+s.created_at_parsed},me(s.created_at),9,ydt)):X("",!0)]),vdt,p("div",Tdt,[p("div",xdt,[s.editMsgMode?(M(),L("div",Cdt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90 p-2",title:"Cancel edit",type:"button",onClick:e[1]||(e[1]=Oe(u=>s.editMsgMode=!1,["stop"]))},Adt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 p-2",title:"Update message",type:"button",onClick:e[2]||(e[2]=Oe((...u)=>s.updateMessage&&s.updateMessage(...u),["stop"]))},Odt)])):X("",!0),s.editMsgMode?X("",!0):(M(),L("div",{key:1,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Edit message",onClick:e[3]||(e[3]=Oe(u=>s.editMsgMode=!0,["stop"]))},Mdt)),p("div",{class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Copy message to clipboard",onClick:e[4]||(e[4]=Oe(u=>s.copyContentToClipboard(),["stop"]))},Ddt),!s.editMsgMode&&t.message.sender!=this.$store.state.mountedPers.name?(M(),L("div",{key:2,class:Ke(["text-lg text-red-500 hover:text-secondary duration-75 active:scale-90 p-2",{"text-5xl":s.editMsgMode}]),title:"Resend message with full context",onClick:e[5]||(e[5]=Oe(u=>s.resendMessage("full_context"),["stop"]))},kdt,2)):X("",!0),!s.editMsgMode&&t.message.sender!=this.$store.state.mountedPers.name?(M(),L("div",{key:3,class:Ke(["text-lg hover:text-secondary duration-75 active:scale-90 p-2",{"text-5xl":s.editMsgMode}]),title:"Resend message without the full context",onClick:e[6]||(e[6]=Oe(u=>s.resendMessage("simple_question"),["stop"]))},Udt,2)):X("",!0),!s.editMsgMode&&t.message.sender==this.$store.state.mountedPers.name?(M(),L("div",{key:4,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Resend message",onClick:e[7]||(e[7]=Oe(u=>s.continueMessage(),["stop"]))},Bdt)):X("",!0),r.deleteMsgMode?(M(),L("div",Gdt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90 p-2",title:"Cancel removal",type:"button",onClick:e[8]||(e[8]=Oe(u=>r.deleteMsgMode=!1,["stop"]))},Vdt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 p-2",title:"Confirm removal",type:"button",onClick:e[9]||(e[9]=Oe(u=>s.deleteMsg(),["stop"]))},qdt)])):X("",!0),!s.editMsgMode&&!r.deleteMsgMode?(M(),L("div",{key:6,class:"text-lg hover:text-red-600 duration-75 active:scale-90 p-2",title:"Remove message",onClick:e[10]||(e[10]=u=>r.deleteMsgMode=!0)},$dt)):X("",!0),p("div",{class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Upvote",onClick:e[11]||(e[11]=Oe(u=>s.rankUp(),["stop"]))},Kdt),p("div",jdt,[p("div",{class:"text-lg hover:text-red-600 duration-75 active:scale-90 p-2",title:"Downvote",onClick:e[12]||(e[12]=Oe(u=>s.rankDown(),["stop"]))},Xdt),t.message.rank!=0?(M(),L("div",{key:0,class:Ke(["rounded-full px-2 text-sm flex items-center justify-center font-bold",t.message.rank>0?"bg-secondary":"bg-red-600"]),title:"Rank"},me(t.message.rank),3)):X("",!0)]),p("div",Zdt,[p("div",{class:Ke(["text-lg hover:text-red-600 duration-75 active:scale-90 p-2",{"text-red-500":s.isTalking}]),title:"speak",onClick:e[13]||(e[13]=Oe(u=>s.speak(),["stop"]))},eut,2)]),s.enable_voice_service?(M(),L("div",tut,[p("div",{class:Ke(["text-lg hover:text-red-600 duration-75 active:scale-90 p-2",{"text-red-500":s.isTalking}]),title:"read",onClick:e[14]||(e[14]=Oe(u=>s.read(),["stop"]))},iut,2)])):X("",!0)])])]),p("div",rut,[p("div",sut,[(M(!0),L(Xe,null,bt(t.message.steps,(u,_)=>(M(),L("div",{key:"step-"+t.message.id+"-"+_,class:"step font-bold",style:un({backgroundColor:u.done?"transparent":"inherit"})},[Le(o,{done:u.done,message:u.message,status:u.status},null,8,["done","message","status"])],4))),128))]),p("div",out,[(M(!0),L(Xe,null,bt(t.message.html_js_s,(u,_)=>(M(),L("div",{key:"htmljs-"+t.message.id+"-"+_,class:"htmljs font-bold",style:un({backgroundColor:n.step.done?"transparent":"inherit"})},[Le(a,{htmlContent:u},null,8,["htmlContent"])],4))),128))]),s.editMsgMode?X("",!0):(M(),Qt(l,{key:0,ref:"mdRender",host:t.host,"markdown-text":t.message.content,message_id:t.message.id,discussion_id:t.message.discussion_id},null,8,["host","markdown-text","message_id","discussion_id"])),p("div",null,[t.message.open?Ae((M(),L("textarea",{key:0,ref:"mdTextarea",onKeydown:e[15]||(e[15]=Fo(Oe((...u)=>s.insertTab&&s.insertTab(...u),["prevent"]),["tab"])),class:"block min-h-[900px] p-2.5 w-full text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500 overflow-y-scroll flex flex-col shadow-lg p-10 pt-0 overflow-y-scroll dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",rows:4,style:un({minHeight:r.mdRenderHeight+"px"}),placeholder:"Enter message here...","onUpdate:modelValue":e[16]||(e[16]=u=>t.message.content=u)},`\r - `,36)),[[Je,t.message.content]]):X("",!0)]),t.message.metadata!==null?(M(),L("div",aut,[(M(!0),L(Xe,null,bt(t.message.metadata,(u,_)=>(M(),L("div",{key:"json-"+t.message.id+"-"+_,class:"json font-bold"},[Le(c,{jsonFormText:u.title,jsonData:u.content},null,8,["jsonFormText","jsonData"])]))),128))])):X("",!0),t.message.ui!==null&&t.message.ui!==void 0&&t.message.ui!==""?(M(),Qt(d,{key:2,class:"w-full h-full",code:t.message.ui},null,8,["code"])):X("",!0),r.audio_url!=null?(M(),L("audio",lut,[p("source",{src:r.audio_url,type:"audio/wav"},null,8,cut),$e(" Your browser does not support the audio element. ")])):X("",!0)]),p("div",dut,[p("div",uut,[t.message.binding?(M(),L("p",_ut,[$e("Binding: "),p("span",put,me(t.message.binding),1)])):X("",!0),t.message.model?(M(),L("p",hut,[$e("Model: "),p("span",fut,me(t.message.model),1)])):X("",!0),t.message.seed?(M(),L("p",mut,[$e("Seed: "),p("span",gut,me(t.message.seed),1)])):X("",!0),s.time_spent?(M(),L("p",Eut,[$e("Time spent: "),p("span",{class:"font-thin",title:"Finished generating: "+s.finished_generating_at_parsed},me(s.time_spent),9,but)])):X("",!0)])])])])])}const bw=ft(udt,[["render",Sut]]),yut="/";Pe.defaults.baseURL="/";const vut={name:"MountedPersonalities",props:{onShowPersList:Function,onReady:Function},components:{Toast:Ol,UniversalForm:Nl},data(){return{bUrl:yut,isMounted:!1,show:!1}},async mounted(){await this.constructor(),this.isMounted=!0},async activated(){this.isMounted&&await this.constructor()},computed:{configFile:{get(){return this.$store.state.config},set(n){this.$store.commit("setConfig",n)}},mountedPers:{get(){return this.$store.state.mountedPers},set(n){this.$store.commit("setMountedPers",n)}},personalities:{get(){return this.$store.state.personalities},set(n){this.$store.commit("setPersonalities",n)}},mountedPersArr:{get(){return this.$store.state.mountedPersArr},set(n){this.$store.commit("setMountedPers",n)}}},methods:{onSettingsPersonality(n){try{Pe.get("/get_active_personality_settings").then(e=>{e&&(console.log("pers sett",e),e.data&&Object.keys(e.data).length>0?this.$refs.universalForm.showForm(e.data,"Personality settings - "+n.name,"Save changes","Cancel").then(t=>{try{Pe.post("/set_active_personality_settings",t).then(i=>{i&&i.data?(console.log("personality set with new settings",i.data),this.$refs.toast.showToast("Personality settings updated successfully!",4,!0)):this.$refs.toast.showToast(`Did not get Personality settings responses. +You need to apply changes before you leave, or else.`,"Apply configuration","Cancel")&&this.applyConfiguration(),!1}},Ce=n=>(Gs("data-v-8ad66bce"),n=n(),zs(),n),jtt={class:"container overflow-y-scroll flex flex-row shadow-lg p-10 pt-0 overflow-y-scroll w-full dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},Qtt={class:"sticky top-0 z-10 flex flex-row mb-2 p-3 gap-3 w-full rounded-b-lg bg-bg-light-tone dark:bg-bg-dark-tone shadow-lg"},Xtt={key:0,class:"flex gap-3 flex-1 items-center duration-75"},Ztt=Ce(()=>p("i",{"data-feather":"x"},null,-1)),Jtt=[Ztt],ent=Ce(()=>p("i",{"data-feather":"check"},null,-1)),tnt=[ent],nnt={key:1,class:"flex gap-3 flex-1 items-center"},int=Ce(()=>p("i",{"data-feather":"save"},null,-1)),rnt=[int],snt=Ce(()=>p("i",{"data-feather":"refresh-ccw"},null,-1)),ont=[snt],ant=Ce(()=>p("i",{"data-feather":"list"},null,-1)),lnt=[ant],cnt={class:"flex gap-3 flex-1 items-center justify-end"},dnt=Ce(()=>p("i",{"data-feather":"trash-2"},null,-1)),unt=[dnt],_nt=Ce(()=>p("i",{"data-feather":"refresh-ccw"},null,-1)),pnt=[_nt],hnt=Ce(()=>p("i",{"data-feather":"arrow-up-circle"},null,-1)),fnt={key:0},mnt=Ce(()=>p("i",{"data-feather":"alert-circle"},null,-1)),gnt=[mnt],Ent={class:"flex gap-3 items-center"},bnt={key:0,class:"flex gap-3 items-center"},Snt=Ce(()=>p("p",{class:"text-red-600 font-bold"},"Apply changes:",-1)),ynt=Ce(()=>p("i",{"data-feather":"check"},null,-1)),vnt=[ynt],Tnt={key:1,role:"status"},xnt=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Cnt=Ce(()=>p("span",{class:"sr-only"},"Loading...",-1)),Rnt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Ant={class:"flex flex-row p-3"},wnt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),Ont=[wnt],Nnt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Mnt=[Nnt],Int=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," System status",-1)),Dnt=Ce(()=>p("div",{class:"mr-2"},"|",-1)),Lnt={class:"text-base font-semibold cursor-pointer select-none items-center"},knt={class:"flex gap-2 items-center"},Pnt={key:0},Unt={class:"flex gap-2 items-center"},Fnt=["src"],Bnt={class:"font-bold font-large text-lg"},Gnt={key:1},znt={class:"flex gap-2 items-center"},Vnt=["src"],Hnt={class:"font-bold font-large text-lg"},qnt=Ce(()=>p("i",{"data-feather":"cpu",title:"CPU Ram",class:"w-5 h-5 mx-1 flex-shrink-0"},null,-1)),Ynt={class:"font-bold font-large text-lg"},$nt=Ce(()=>p("i",{"data-feather":"hard-drive",title:"Hard drive",class:"w-5 h-5 mx-1 flex-shrink-0"},null,-1)),Wnt={class:"font-bold font-large text-lg"},Knt={class:"mb-2"},jnt=Ce(()=>p("label",{class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},[p("path",{fill:"currentColor",d:"M17 17H7V7h10m4 4V9h-2V7a2 2 0 0 0-2-2h-2V3h-2v2h-2V3H9v2H7c-1.11 0-2 .89-2 2v2H3v2h2v2H3v2h2v2a2 2 0 0 0 2 2h2v2h2v-2h2v2h2v-2h2a2 2 0 0 0 2-2v-2h2v-2h-2v-2m-6 2h-2v-2h2m2-2H9v6h6V9Z"})]),$e(" CPU Ram usage: ")],-1)),Qnt={class:"flex flex-col mx-2"},Xnt=Ce(()=>p("b",null,"Avaliable ram: ",-1)),Znt=Ce(()=>p("b",null,"Ram usage: ",-1)),Jnt={class:"p-2"},eit={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},tit={class:"mb-2"},nit=Ce(()=>p("label",{class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},[p("i",{"data-feather":"hard-drive",class:"w-5 h-5"}),$e(" Disk usage: ")],-1)),iit={class:"flex flex-col mx-2"},rit=Ce(()=>p("b",null,"Avaliable disk space: ",-1)),sit=Ce(()=>p("b",null,"Disk usage: ",-1)),oit={class:"p-2"},ait={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},lit={class:"mb-2"},cit={class:"flex items-center gap-1 ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},dit=["src"],uit={class:"flex flex-col mx-2"},_it=Ce(()=>p("b",null,"Model: ",-1)),pit=Ce(()=>p("b",null,"Avaliable vram: ",-1)),hit=Ce(()=>p("b",null,"GPU usage: ",-1)),fit={class:"p-2"},mit={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},git={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Eit={class:"flex flex-row p-3"},bit=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),Sit=[bit],yit=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),vit=[yit],Tit=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Main configurations",-1)),xit={class:"flex flex-col mb-2 px-3 pb-2"},Cit={class:"expand-to-fit bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},Rit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Host:")],-1)),Ait={style:{width:"100%"}},wit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Port:")],-1)),Oit={style:{width:"100%"}},Nit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"db_path",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Database path:")],-1)),Mit={style:{width:"100%"}},Iit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_show_browser",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto show browser:")],-1)),Dit={class:"flex flex-row"},Lit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"activate_debug",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate debug mode:")],-1)),kit={class:"flex flex-row"},Pit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"enable_gpu",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable GPU:")],-1)),Uit={class:"text-center items-center"},Fit={class:"flex flex-row"},Bit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_save",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto save:")],-1)),Git={class:"flex flex-row"},zit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_update",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto update:")],-1)),Vit={class:"flex flex-row"},Hit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_update",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Auto title:")],-1)),qit={class:"flex flex-row"},Yit={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},$it=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_name",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User name:")],-1)),Wit={style:{width:"100%"}},Kit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_description",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User description:")],-1)),jit={style:{width:"100%"}},Qit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_description",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Use user description in discussion:")],-1)),Xit={style:{width:"100%"}},Zit=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"user_name",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"User avatar:")],-1)),Jit={style:{width:"100%"}},ert={for:"avatar-upload"},trt=["src"],nrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_user_name_in_discussions",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Use User Name in discussions:")],-1)),irt={class:"flex flex-row"},rrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"min_n_predict",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Minimum number of output tokens space (forces the model to have more space to speak):")],-1)),srt={style:{width:"100%"}},ort={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},art=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_files",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate files support:")],-1)),lrt={class:"flex flex-row"},crt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"use_discussions_history",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate discussion vectorization:")],-1)),drt={class:"flex flex-row"},urt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"summerize_discussion",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate Continuous Learning from discussions:")],-1)),_rt={class:"flex flex-row"},prt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_visualize_on_vectorization",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"show vectorized data:")],-1)),hrt={class:"flex flex-row"},frt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_activate",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Activate data Vectorization:")],-1)),mrt={class:"flex flex-row"},grt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_build_keys_words",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Build keywords when querying the vectorized database:")],-1)),Ert={class:"flex flex-row"},brt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_method",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization method:")],-1)),Srt=Ce(()=>p("option",{value:"tfidf_vectorizer"},"tfidf Vectorizer",-1)),yrt=Ce(()=>p("option",{value:"model_embedding"},"Model Embedding",-1)),vrt=[Srt,yrt],Trt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_visualization_method",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data visualization method:")],-1)),xrt=Ce(()=>p("option",{value:"PCA"},"PCA",-1)),Crt=Ce(()=>p("option",{value:"TSNE"},"TSNE",-1)),Rrt=[xrt,Crt],Art=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_save_db",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Save the new files to the database (The database wil always grow and continue to be the same over many sessions):")],-1)),wrt={class:"flex flex-row"},Ort=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_chunk_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization chunk size(tokens):")],-1)),Nrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_overlap_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Data vectorization overlap size(tokens):")],-1)),Mrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"data_vectorization_overlap_size",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Number of chunks to use for each message:")],-1)),Irt={class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},Drt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_auto_send_input",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Send audio input automatically:")],-1)),Lrt={class:"flex flex-row"},krt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_speak",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable auto speak:")],-1)),Prt={class:"flex flex-row"},Urt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"enable_voice_service",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable voice service:")],-1)),Frt={class:"flex flex-row"},Brt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"current_voice",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Current voice:")],-1)),Grt={class:"flex flex-row"},zrt=["disabled"],Vrt=["value"],Hrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"auto_read",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Enable auto read:")],-1)),qrt={class:"flex flex-row"},Yrt=["disabled"],$rt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_pitch",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"audio pitch:")],-1)),Wrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_silenceTimer",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"audio in silence timer (ms):")],-1)),Krt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_in_language",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Input Audio Language:")],-1)),jrt=["value"],Qrt=Ce(()=>p("td",{style:{"min-width":"200px"}},[p("label",{for:"audio_out_voice",class:"text-sm font-bold",style:{"margin-right":"1rem"}},"Output Audio Voice:")],-1)),Xrt=["value"],Zrt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Jrt={class:"flex flex-row p-3"},est=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),tst=[est],nst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),ist=[nst],rst=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Binding zoo",-1)),sst={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},ost=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),ast={key:1,class:"mr-2"},lst={key:2,class:"text-base font-semibold cursor-pointer select-none items-center"},cst={class:"flex gap-1 items-center"},dst=["src"],ust={class:"font-bold font-large text-lg line-clamp-1"},_st={key:0,class:"mb-2"},pst={for:"binding",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},hst=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),fst=[hst],mst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),gst=[mst],Est={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},bst={class:"flex flex-row p-3"},Sst=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),yst=[Sst],vst=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Tst=[vst],xst=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Models zoo",-1)),Cst={class:"flex flex-row items-center"},Rst={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},Ast=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),wst={key:1,class:"text-base text-red-600 flex gap-3 items-center mr-2"},Ost=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),Nst={key:2,class:"mr-2"},Mst={key:3,class:"text-base font-semibold cursor-pointer select-none items-center"},Ist={class:"flex gap-1 items-center"},Dst=["src"],Lst={class:"font-bold font-large text-lg line-clamp-1"},kst={class:"mx-2 mb-4"},Pst={class:"relative"},Ust={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},Fst={key:0},Bst=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Gst=[Bst],zst={key:1},Vst=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),Hst=[Vst],qst=Ce(()=>p("label",{for:"only_installed"},"Show only installed models",-1)),Yst=Ce(()=>p("a",{href:"https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard",target:"_blank",class:"mb-4 font-bold underline text-blue-500 pb-4"},"Hugging face Leaderboard",-1)),$st={key:0,role:"status",class:"text-center w-full display: flex;align-items: center;"},Wst=Ce(()=>p("svg",{"aria-hidden":"true",class:"text-center w-full display: flex;align-items: center; h-20 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Kst=Ce(()=>p("p",{class:"heartbeat-text"},"Loading models Zoo",-1)),jst=[Wst,Kst],Qst={key:1,class:"mb-2"},Xst={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},Zst=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Jst=[Zst],eot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),tot=[eot],not={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},iot={class:"flex flex-row p-3"},rot=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),sot=[rot],oot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),aot=[oot],lot=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Add models for binding",-1)),cot={key:0,class:"text-base text-red-600 flex gap-3 items-center mr-2"},dot=Ce(()=>p("i",{"data-feather":"alert-triangle",class:"flex-shrink-0"},null,-1)),uot={key:1,class:"mr-2"},_ot={key:2,class:"text-base font-semibold cursor-pointer select-none items-center"},pot={class:"flex gap-1 items-center"},hot=["src"],fot={class:"font-bold font-large text-lg line-clamp-1"},mot={class:"mb-2"},got={class:"p-2"},Eot={class:"mb-3"},bot=Ce(()=>p("label",{class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},"Create a reference from local file path:",-1)),Sot={key:0},yot={class:"mb-3"},vot=Ce(()=>p("label",{class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},"Download from web:",-1)),Tot={key:1,class:"relative flex flex-col items-center justify-center flex-grow h-full"},xot=Ce(()=>p("div",{role:"status",class:"justify-center"},null,-1)),Cot={class:"relative flex flex-row flex-grow items-center w-full h-full bottom-0"},Rot={class:"w-full p-2"},Aot={class:"flex justify-between mb-1"},wot=Og(' Downloading Loading...',1),Oot={class:"text-sm font-medium text-blue-700 dark:text-white"},Not=["title"],Mot={class:"w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"},Iot={class:"flex justify-between mb-1"},Dot={class:"text-base font-medium text-blue-700 dark:text-white"},Lot={class:"text-sm font-medium text-blue-700 dark:text-white"},kot={class:"flex flex-grow"},Pot={class:"flex flex-row flex-grow gap-3"},Uot={class:"p-2 text-center grow"},Fot={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},Bot={class:"flex flex-row p-3 items-center"},Got=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),zot=[Got],Vot=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Hot=[Vot],qot=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Personalities zoo",-1)),Yot={key:0,class:"mr-2"},$ot={class:"mr-2 font-bold font-large text-lg line-clamp-1"},Wot={key:1,class:"mr-2"},Kot={key:2,class:"text-base font-semibold cursor-pointer select-none items-center flex flex-row"},jot={key:0,class:"flex -space-x-4 items-center"},Qot={class:"group items-center flex flex-row"},Xot=["onClick"],Zot=["src","title"],Jot=["onClick"],eat=Ce(()=>p("span",{class:"hidden group-hover:block top-0 left-7 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),tat=[eat],nat={class:"mx-2 mb-4"},iat=Ce(()=>p("label",{for:"personality-search",class:"mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"},"Search",-1)),rat={class:"relative"},sat={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},oat={key:0},aat=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),lat=[aat],cat={key:1},dat=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),uat=[dat],_at={key:0,class:"mx-2 mb-4"},pat={for:"persCat",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},hat=["selected"],fat={key:0,class:"mb-2"},mat={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},gat=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Eat=[gat],bat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Sat=[bat],yat={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},vat={class:"flex flex-row p-3 items-center"},Tat=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),xat=[Tat],Cat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Rat=[Cat],Aat=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Extensions zoo",-1)),wat={key:0,class:"mr-2"},Oat={key:1,class:"text-base font-semibold cursor-pointer select-none items-center flex flex-row"},Nat={key:0,class:"flex -space-x-4 items-center"},Mat={class:"group items-center flex flex-row"},Iat=["src","title"],Dat=["onClick"],Lat=Ce(()=>p("span",{class:"hidden group-hover:block top-0 left-7 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),kat=[Lat],Pat={class:"mx-2 mb-4"},Uat=Ce(()=>p("label",{for:"personality-search",class:"mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"},"Search",-1)),Fat={class:"relative"},Bat={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},Gat={key:0},zat=Ce(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"inline w-4 h-4 mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Vat=[zat],Hat={key:1},qat=Ce(()=>p("svg",{"aria-hidden":"true",class:"w-5 h-5 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),Yat=[qat],$at={key:0,class:"mx-2 mb-4"},Wat={for:"extCat",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},Kat=["selected"],jat={key:0,class:"mb-2"},Qat={for:"model",class:"block ml-2 mb-2 text-sm font-medium text-gray-900 dark:text-white"},Xat=Ce(()=>p("i",{"data-feather":"chevron-up"},null,-1)),Zat=[Xat],Jat=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),elt=[Jat],tlt={class:"flex flex-col mb-2 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},nlt={class:"flex flex-row p-3 items-center"},ilt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),rlt=[ilt],slt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),olt=[slt],alt=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none mr-2"}," Mounted Extensions Priority",-1)),llt={class:"flex flex-col mb-2 p-3 rounded-lg bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-bg-light-tone-panel hover:dark:bg-bg-dark-tone-panel duration-150 shadow-lg"},clt={class:"flex flex-row"},dlt=Ce(()=>p("i",{"data-feather":"chevron-right"},null,-1)),ult=[dlt],_lt=Ce(()=>p("i",{"data-feather":"chevron-down"},null,-1)),plt=[_lt],hlt=Ce(()=>p("h3",{class:"text-lg font-semibold cursor-pointer select-none"}," Model Configuration",-1)),flt={class:"m-2"},mlt={class:"flex flex-row gap-2 items-center"},glt=Ce(()=>p("label",{for:"override-model-parameters",class:"block text-sm font-medium"}," Override personality model parameters ",-1)),Elt={class:"m-2"},blt=Ce(()=>p("label",{for:"seed",class:"block mb-2 text-sm font-medium"}," Seed: ",-1)),Slt={class:"m-2"},ylt={class:"flex flex-col align-bottom"},vlt={class:"relative"},Tlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"temperature",class:"text-sm font-medium"}," Temperature: ")],-1)),xlt={class:"absolute right-0"},Clt={class:"m-2"},Rlt={class:"flex flex-col align-bottom"},Alt={class:"relative"},wlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"predict",class:"text-sm font-medium"}," N Predict: ")],-1)),Olt={class:"absolute right-0"},Nlt={class:"m-2"},Mlt={class:"flex flex-col align-bottom"},Ilt={class:"relative"},Dlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"top_k",class:"text-sm font-medium"}," Top-K: ")],-1)),Llt={class:"absolute right-0"},klt={class:"m-2"},Plt={class:"flex flex-col align-bottom"},Ult={class:"relative"},Flt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"top_p",class:"text-sm font-medium"}," Top-P: ")],-1)),Blt={class:"absolute right-0"},Glt={class:"m-2"},zlt={class:"flex flex-col align-bottom"},Vlt={class:"relative"},Hlt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"repeat_penalty",class:"text-sm font-medium"}," Repeat penalty: ")],-1)),qlt={class:"absolute right-0"},Ylt={class:"m-2"},$lt={class:"flex flex-col align-bottom"},Wlt={class:"relative"},Klt=Ce(()=>p("p",{class:"absolute left-0 mt-6"},[p("label",{for:"repeat_last_n",class:"text-sm font-medium"}," Repeat last N: ")],-1)),jlt={class:"absolute right-0"};function Qlt(n,e,t,i,r,s){const o=St("Card"),a=St("BindingEntry"),l=St("RadioOptions"),c=St("model-entry"),d=St("personality-entry"),u=St("ExtensionEntry"),_=St("AddModelDialog"),f=St("ChoiceDialog");return M(),L(Xe,null,[p("div",jtt,[p("div",Qtt,[r.showConfirmation?(M(),L("div",Xtt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel",type:"button",onClick:e[0]||(e[0]=Oe(h=>r.showConfirmation=!1,["stop"]))},Jtt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm save changes",type:"button",onClick:e[1]||(e[1]=Oe(h=>s.save_configuration(),["stop"]))},tnt)])):X("",!0),r.showConfirmation?X("",!0):(M(),L("div",nnt,[p("button",{title:"Save configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[2]||(e[2]=h=>r.showConfirmation=!0)},rnt),p("button",{title:"Reset configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[3]||(e[3]=h=>s.reset_configuration())},ont),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Collapse / Expand all panels",type:"button",onClick:e[4]||(e[4]=Oe(h=>r.all_collapsed=!r.all_collapsed,["stop"]))},lnt)])),p("div",cnt,[p("button",{title:"Clear uploads",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[5]||(e[5]=h=>s.api_get_req("clear_uploads").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast(["failed!"],4,!1)}))},unt),p("button",{title:"Restart program",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[6]||(e[6]=h=>s.api_get_req("restart_program").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast(["failed!"],4,!1)}))},pnt),p("button",{title:"Upgrade program ",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:e[7]||(e[7]=h=>s.api_get_req("update_software").then(E=>{E.status?this.$store.state.toast.showToast("Success!",4,!0):this.$store.state.toast.showToast("Success!",4,!0)}))},[hnt,r.has_updates?(M(),L("div",fnt,gnt)):X("",!0)]),p("div",Ent,[r.settingsChanged?(M(),L("div",bnt,[Snt,r.isLoading?X("",!0):(M(),L("button",{key:0,class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Apply changes",type:"button",onClick:e[8]||(e[8]=Oe(h=>s.applyConfiguration(),["stop"]))},vnt))])):X("",!0),r.isLoading?(M(),L("div",Tnt,[p("p",null,me(r.loading_text),1),xnt,Cnt])):X("",!0)])])]),p("div",{class:Ke(r.isLoading?"pointer-events-none opacity-30 w-full":"w-full")},[p("div",Rnt,[p("div",Ant,[p("button",{onClick:e[9]||(e[9]=Oe(h=>r.sc_collapsed=!r.sc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,Ont,512),[[At,r.sc_collapsed]]),Ae(p("div",null,Mnt,512),[[At,!r.sc_collapsed]]),Int,Dnt,p("div",Lnt,[p("div",knt,[p("div",null,[s.vramUsage&&s.vramUsage.gpus&&s.vramUsage.gpus.length==1?(M(),L("div",Pnt,[(M(!0),L(Xe,null,bt(s.vramUsage.gpus,h=>(M(),L("div",Unt,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,Fnt),p("h3",Bnt,[p("div",null,me(s.computedFileSize(h.used_vram))+" / "+me(s.computedFileSize(h.total_vram))+" ("+me(h.percentage)+"%) ",1)])]))),256))])):X("",!0),s.vramUsage&&s.vramUsage.gpus&&s.vramUsage.gpus.length>1?(M(),L("div",Gnt,[p("div",znt,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,Vnt),p("h3",Hnt,[p("div",null,me(s.vramUsage.gpus.length)+"x ",1)])])])):X("",!0)]),qnt,p("h3",Ynt,[p("div",null,me(s.ram_usage)+" / "+me(s.ram_total_space)+" ("+me(s.ram_percent_usage)+"%)",1)]),$nt,p("h3",Wnt,[p("div",null,me(s.disk_binding_models_usage)+" / "+me(s.disk_total_space)+" ("+me(s.disk_percent_usage)+"%)",1)])])])])]),p("div",{class:Ke([{hidden:r.sc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",Knt,[jnt,p("div",Qnt,[p("div",null,[Xnt,$e(me(s.ram_available_space),1)]),p("div",null,[Znt,$e(" "+me(s.ram_usage)+" / "+me(s.ram_total_space)+" ("+me(s.ram_percent_usage)+")% ",1)])]),p("div",Jnt,[p("div",eit,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+s.ram_percent_usage+"%;")},null,4)])])]),p("div",tit,[nit,p("div",iit,[p("div",null,[rit,$e(me(s.disk_available_space),1)]),p("div",null,[sit,$e(" "+me(s.disk_binding_models_usage)+" / "+me(s.disk_total_space)+" ("+me(s.disk_percent_usage)+"%)",1)])]),p("div",oit,[p("div",ait,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+s.disk_percent_usage+"%;")},null,4)])])]),(M(!0),L(Xe,null,bt(s.vramUsage.gpus,h=>(M(),L("div",lit,[p("label",cit,[p("img",{src:r.SVGGPU,width:"25",height:"25"},null,8,dit),$e(" GPU usage: ")]),p("div",uit,[p("div",null,[_it,$e(me(h.gpu_model),1)]),p("div",null,[pit,$e(me(this.computedFileSize(h.available_space)),1)]),p("div",null,[hit,$e(" "+me(this.computedFileSize(h.used_vram))+" / "+me(this.computedFileSize(h.total_vram))+" ("+me(h.percentage)+"%)",1)])]),p("div",fit,[p("div",mit,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un("width: "+h.percentage+"%;")},null,4)])])]))),256))],2)]),p("div",git,[p("div",Eit,[p("button",{onClick:e[10]||(e[10]=Oe(h=>r.minconf_collapsed=!r.minconf_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,Sit,512),[[At,r.minconf_collapsed]]),Ae(p("div",null,vit,512),[[At,!r.minconf_collapsed]]),Tit])]),p("div",{class:Ke([{hidden:r.minconf_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",xit,[Le(o,{title:"General",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Cit,[p("tr",null,[Rit,p("td",Ait,[Ae(p("input",{type:"text",id:"host",required:"","onUpdate:modelValue":e[11]||(e[11]=h=>s.configFile.host=h),onChange:e[12]||(e[12]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.host]])])]),p("tr",null,[wit,p("td",Oit,[Ae(p("input",{type:"number",step:"1",id:"port",required:"","onUpdate:modelValue":e[13]||(e[13]=h=>s.configFile.port=h),onChange:e[14]||(e[14]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.port]])])]),p("tr",null,[Nit,p("td",Mit,[Ae(p("input",{type:"text",id:"db_path",required:"","onUpdate:modelValue":e[15]||(e[15]=h=>s.configFile.db_path=h),onChange:e[16]||(e[16]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600 dark:bg-gray-600"},null,544),[[Je,s.configFile.db_path]])])]),p("tr",null,[Iit,p("td",null,[p("div",Dit,[Ae(p("input",{type:"checkbox",id:"auto_show_browser",required:"","onUpdate:modelValue":e[17]||(e[17]=h=>s.configFile.auto_show_browser=h),onChange:e[18]||(e[18]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_show_browser]])])])]),p("tr",null,[Lit,p("td",null,[p("div",kit,[Ae(p("input",{type:"checkbox",id:"activate_debug",required:"","onUpdate:modelValue":e[19]||(e[19]=h=>s.configFile.debug=h),onChange:e[20]||(e[20]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.debug]])])])]),p("tr",null,[Pit,p("td",Uit,[p("div",Fit,[Ae(p("input",{type:"checkbox",id:"enable_gpu",required:"","onUpdate:modelValue":e[21]||(e[21]=h=>s.configFile.enable_gpu=h),onChange:e[22]||(e[22]=h=>r.settingsChanged=!0),class:"m-2 h-50 w-50 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.enable_gpu]]),s.configFile.enable_gpu?X("",!0):(M(),L("button",{key:0,onClick:e[23]||(e[23]=Oe((...h)=>s.upgrade2GPU&&s.upgrade2GPU(...h),["prevent"])),class:"w-100 text-center rounded m-2 bg-blue-300 hover:bg-blue-200 text-l hover:text-primary p-2 m-2 text-left flex flex-row"}," Upgrade from CPU to GPU "))])])]),p("tr",null,[Bit,p("td",null,[p("div",Git,[Ae(p("input",{type:"checkbox",id:"auto_save",required:"","onUpdate:modelValue":e[24]||(e[24]=h=>s.configFile.auto_save=h),onChange:e[25]||(e[25]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_save]])])])]),p("tr",null,[zit,p("td",null,[p("div",Vit,[Ae(p("input",{type:"checkbox",id:"auto_update",required:"","onUpdate:modelValue":e[26]||(e[26]=h=>s.configFile.auto_update=h),onChange:e[27]||(e[27]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_update]])])])]),p("tr",null,[Hit,p("td",null,[p("div",qit,[Ae(p("input",{type:"checkbox",id:"auto_title",required:"","onUpdate:modelValue":e[28]||(e[28]=h=>s.configFile.auto_title=h),onChange:e[29]||(e[29]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_title]])])])])])]),_:1}),Le(o,{title:"User",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Yit,[p("tr",null,[$it,p("td",Wit,[Ae(p("input",{type:"text",id:"user_name",required:"","onUpdate:modelValue":e[30]||(e[30]=h=>s.configFile.user_name=h),onChange:e[31]||(e[31]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.user_name]])])]),p("tr",null,[Kit,p("td",jit,[Ae(p("textarea",{id:"user_description",required:"","onUpdate:modelValue":e[32]||(e[32]=h=>s.configFile.user_description=h),onChange:e[33]||(e[33]=h=>r.settingsChanged=!0),class:"w-full w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.user_description]])])]),p("tr",null,[Qit,p("td",Xit,[Ae(p("input",{type:"checkbox",id:"override_personality_model_parameters",required:"","onUpdate:modelValue":e[34]||(e[34]=h=>s.configFile.override_personality_model_parameters=h),onChange:e[35]||(e[35]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.override_personality_model_parameters]])])]),p("tr",null,[Zit,p("td",Jit,[p("label",ert,[p("img",{src:"/user_infos/"+s.configFile.user_avatar,class:"w-50 h-50 rounded-full",style:{"max-width":"50px","max-height":"50px",cursor:"pointer"}},null,8,trt)]),p("input",{type:"file",id:"avatar-upload",style:{display:"none"},onChange:e[36]||(e[36]=(...h)=>s.uploadAvatar&&s.uploadAvatar(...h))},null,32)])]),p("tr",null,[nrt,p("td",null,[p("div",irt,[Ae(p("input",{type:"checkbox",id:"use_user_name_in_discussions",required:"","onUpdate:modelValue":e[37]||(e[37]=h=>s.configFile.use_user_name_in_discussions=h),onChange:e[38]||(e[38]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_user_name_in_discussions]])])])]),p("tr",null,[rrt,p("td",srt,[Ae(p("input",{type:"number",id:"min_n_predict",required:"","onUpdate:modelValue":e[39]||(e[39]=h=>s.configFile.min_n_predict=h),onChange:e[40]||(e[40]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.min_n_predict]])])])])]),_:1}),Le(o,{title:"Data Vectorization",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",ort,[p("tr",null,[art,p("td",null,[p("div",lrt,[Ae(p("input",{type:"checkbox",id:"use_files",required:"","onUpdate:modelValue":e[41]||(e[41]=h=>s.configFile.use_files=h),onChange:e[42]||(e[42]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_files]])])])]),p("tr",null,[crt,p("td",null,[p("div",drt,[Ae(p("input",{type:"checkbox",id:"use_discussions_history",required:"","onUpdate:modelValue":e[43]||(e[43]=h=>s.configFile.use_discussions_history=h),onChange:e[44]||(e[44]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.use_discussions_history]])])])]),p("tr",null,[urt,p("td",null,[p("div",_rt,[Ae(p("input",{type:"checkbox",id:"summerize_discussion",required:"","onUpdate:modelValue":e[45]||(e[45]=h=>s.configFile.summerize_discussion=h),onChange:e[46]||(e[46]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.summerize_discussion]])])])]),p("tr",null,[prt,p("td",null,[p("div",hrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_visualize_on_vectorization",required:"","onUpdate:modelValue":e[47]||(e[47]=h=>s.configFile.data_vectorization_visualize_on_vectorization=h),onChange:e[48]||(e[48]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_visualize_on_vectorization]])])])]),p("tr",null,[frt,p("td",null,[p("div",mrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_activate",required:"","onUpdate:modelValue":e[49]||(e[49]=h=>s.configFile.data_vectorization_activate=h),onChange:e[50]||(e[50]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_activate]])])])]),p("tr",null,[grt,p("td",null,[p("div",Ert,[Ae(p("input",{type:"checkbox",id:"data_vectorization_build_keys_words",required:"","onUpdate:modelValue":e[51]||(e[51]=h=>s.configFile.data_vectorization_build_keys_words=h),onChange:e[52]||(e[52]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_build_keys_words]])])])]),p("tr",null,[brt,p("td",null,[Ae(p("select",{id:"data_vectorization_method",required:"","onUpdate:modelValue":e[53]||(e[53]=h=>s.configFile.data_vectorization_method=h),onChange:e[54]||(e[54]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},vrt,544),[[_i,s.configFile.data_vectorization_method]])])]),p("tr",null,[Trt,p("td",null,[Ae(p("select",{id:"data_visualization_method",required:"","onUpdate:modelValue":e[55]||(e[55]=h=>s.configFile.data_visualization_method=h),onChange:e[56]||(e[56]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},Rrt,544),[[_i,s.configFile.data_visualization_method]])])]),p("tr",null,[Art,p("td",null,[p("div",wrt,[Ae(p("input",{type:"checkbox",id:"data_vectorization_save_db",required:"","onUpdate:modelValue":e[57]||(e[57]=h=>s.configFile.data_vectorization_save_db=h),onChange:e[58]||(e[58]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.data_vectorization_save_db]])])])]),p("tr",null,[Ort,p("td",null,[Ae(p("input",{id:"data_vectorization_chunk_size","onUpdate:modelValue":e[59]||(e[59]=h=>s.configFile.data_vectorization_chunk_size=h),onChange:e[60]||(e[60]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"64000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_chunk_size]]),Ae(p("input",{"onUpdate:modelValue":e[61]||(e[61]=h=>s.configFile.data_vectorization_chunk_size=h),type:"number",onChange:e[62]||(e[62]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_chunk_size]])])]),p("tr",null,[Nrt,p("td",null,[Ae(p("input",{id:"data_vectorization_overlap_size","onUpdate:modelValue":e[63]||(e[63]=h=>s.configFile.data_vectorization_overlap_size=h),onChange:e[64]||(e[64]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"64000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_overlap_size]]),Ae(p("input",{"onUpdate:modelValue":e[65]||(e[65]=h=>s.configFile.data_vectorization_overlap_size=h),type:"number",onChange:e[66]||(e[66]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_overlap_size]])])]),p("tr",null,[Mrt,p("td",null,[Ae(p("input",{id:"data_vectorization_nb_chunks","onUpdate:modelValue":e[67]||(e[67]=h=>s.configFile.data_vectorization_nb_chunks=h),onChange:e[68]||(e[68]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"1000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.data_vectorization_nb_chunks]]),Ae(p("input",{"onUpdate:modelValue":e[69]||(e[69]=h=>s.configFile.data_vectorization_nb_chunks=h),type:"number",onChange:e[70]||(e[70]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.data_vectorization_nb_chunks]])])])])]),_:1}),Le(o,{title:"Audio",is_subcard:!0,class:"pb-2 m-2"},{default:dt(()=>[p("table",Irt,[p("tr",null,[Drt,p("td",null,[p("div",Lrt,[Ae(p("input",{type:"checkbox",id:"audio_auto_send_input",required:"","onUpdate:modelValue":e[71]||(e[71]=h=>s.configFile.audio_auto_send_input=h),onChange:e[72]||(e[72]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.audio_auto_send_input]])])])]),p("tr",null,[krt,p("td",null,[p("div",Prt,[Ae(p("input",{type:"checkbox",id:"auto_speak",required:"","onUpdate:modelValue":e[73]||(e[73]=h=>s.configFile.auto_speak=h),onChange:e[74]||(e[74]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.auto_speak]])])])]),p("tr",null,[Urt,p("td",null,[p("div",Frt,[Ae(p("input",{type:"checkbox",id:"enable_voice_service",required:"","onUpdate:modelValue":e[75]||(e[75]=h=>s.configFile.enable_voice_service=h),onChange:e[76]||(e[76]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Mt,s.configFile.enable_voice_service]])])])]),p("tr",null,[Brt,p("td",null,[p("div",Grt,[Ae(p("select",{"onUpdate:modelValue":e[77]||(e[77]=h=>s.current_voice=h),onChange:e[78]||(e[78]=h=>r.settingsChanged=!0),disabled:!s.enable_voice_service},[(M(!0),L(Xe,null,bt(r.voices,h=>(M(),L("option",{key:h.id,value:h.id},me(h),9,Vrt))),128))],40,zrt),[[_i,s.current_voice]])])])]),p("tr",null,[Hrt,p("td",null,[p("div",qrt,[Ae(p("input",{type:"checkbox",id:"auto_read",required:"","onUpdate:modelValue":e[79]||(e[79]=h=>s.configFile.auto_read=h),onChange:e[80]||(e[80]=h=>r.settingsChanged=!0),class:"mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600",disabled:!s.enable_voice_service},null,40,Yrt),[[Mt,s.configFile.auto_read]])])])]),p("tr",null,[$rt,p("td",null,[Ae(p("input",{id:"audio_pitch","onUpdate:modelValue":e[81]||(e[81]=h=>s.configFile.audio_pitch=h),onChange:e[82]||(e[82]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"10",step:"0.1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.audio_pitch]]),Ae(p("input",{"onUpdate:modelValue":e[83]||(e[83]=h=>s.configFile.audio_pitch=h),onChange:e[84]||(e[84]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.audio_pitch]])])]),p("tr",null,[Wrt,p("td",null,[Ae(p("input",{id:"audio_silenceTimer","onUpdate:modelValue":e[85]||(e[85]=h=>s.configFile.audio_silenceTimer=h),onChange:e[86]||(e[86]=h=>r.settingsChanged=!0),type:"range",min:"0",max:"10000",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.audio_silenceTimer]]),Ae(p("input",{"onUpdate:modelValue":e[87]||(e[87]=h=>s.configFile.audio_silenceTimer=h),onChange:e[88]||(e[88]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},null,544),[[Je,s.configFile.audio_silenceTimer]])])]),p("tr",null,[Krt,p("td",null,[Ae(p("select",{id:"audio_in_language","onUpdate:modelValue":e[89]||(e[89]=h=>s.configFile.audio_in_language=h),onChange:e[90]||(e[90]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},[(M(!0),L(Xe,null,bt(s.audioLanguages,h=>(M(),L("option",{key:h.code,value:h.code},me(h.name),9,jrt))),128))],544),[[_i,s.configFile.audio_in_language]])])]),p("tr",null,[Qrt,p("td",null,[Ae(p("select",{id:"audio_out_voice","onUpdate:modelValue":e[91]||(e[91]=h=>s.configFile.audio_out_voice=h),onChange:e[92]||(e[92]=h=>r.settingsChanged=!0),class:"w-full mt-1 px-2 py-1 border border-gray-300 rounded dark:bg-gray-600"},[(M(!0),L(Xe,null,bt(r.audioVoices,h=>(M(),L("option",{key:h.name,value:h.name},me(h.name),9,Xrt))),128))],544),[[_i,s.configFile.audio_out_voice]])])])])]),_:1})])],2)]),p("div",Zrt,[p("div",Jrt,[p("button",{onClick:e[93]||(e[93]=Oe(h=>r.bzc_collapsed=!r.bzc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex flex-row items-center"},[Ae(p("div",null,tst,512),[[At,r.bzc_collapsed]]),Ae(p("div",null,ist,512),[[At,!r.bzc_collapsed]]),rst,s.configFile.binding_name?X("",!0):(M(),L("div",sst,[ost,$e(" No binding selected! ")])),s.configFile.binding_name?(M(),L("div",ast,"|")):X("",!0),s.configFile.binding_name?(M(),L("div",lst,[p("div",cst,[p("img",{src:s.imgBinding,class:"w-8 h-8 rounded-full object-fill text-blue-700"},null,8,dst),p("h3",ust,me(s.binding_name),1)])])):X("",!0)])]),p("div",{class:Ke([{hidden:r.bzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[s.bindingsZoo&&s.bindingsZoo.length>0?(M(),L("div",_st,[p("label",pst," Bindings: ("+me(s.bindingsZoo.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.bzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(s.bindingsZoo,(h,E)=>(M(),Qt(a,{ref_for:!0,ref:"bindingZoo",key:"index-"+E+"-"+h.folder,binding:h,"on-selected":s.onBindingSelected,"on-reinstall":s.onReinstallBinding,"on-unInstall":s.onUnInstallBinding,"on-install":s.onInstallBinding,"on-settings":s.onSettingsBinding,"on-reload-binding":s.onReloadBinding,selected:h.folder===s.configFile.binding_name},null,8,["binding","on-selected","on-reinstall","on-unInstall","on-install","on-settings","on-reload-binding","selected"]))),128))]),_:1})],2)])):X("",!0),r.bzl_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[94]||(e[94]=h=>r.bzl_collapsed=!r.bzl_collapsed)},fst)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[95]||(e[95]=h=>r.bzl_collapsed=!r.bzl_collapsed)},gst))],2)]),p("div",Est,[p("div",bst,[p("button",{onClick:e[96]||(e[96]=Oe(h=>s.modelsZooToggleCollapse(),["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,yst,512),[[At,r.mzc_collapsed]]),Ae(p("div",null,Tst,512),[[At,!r.mzc_collapsed]]),xst,p("div",Cst,[s.configFile.binding_name?X("",!0):(M(),L("div",Rst,[Ast,$e(" Select binding first! ")])),!r.isModelSelected&&s.configFile.binding_name?(M(),L("div",wst,[Ost,$e(" No model selected! ")])):X("",!0),s.configFile.model_name?(M(),L("div",Nst,"|")):X("",!0),s.configFile.model_name?(M(),L("div",Mst,[p("div",Ist,[p("img",{src:s.imgModel,class:"w-8 h-8 rounded-lg object-fill"},null,8,Dst),p("h3",Lst,me(s.configFile.model_name),1)])])):X("",!0)])])]),p("div",{class:Ke([{hidden:r.mzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",kst,[p("div",Pst,[p("div",Ust,[r.searchModelInProgress?(M(),L("div",Fst,Gst)):X("",!0),r.searchModelInProgress?X("",!0):(M(),L("div",zst,Hst))]),Ae(p("input",{type:"search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search models...",required:"","onUpdate:modelValue":e[97]||(e[97]=h=>r.searchModel=h),onKeyup:e[98]||(e[98]=Fo((...h)=>s.searchModel_func&&s.searchModel_func(...h),["enter"]))},null,544),[[Je,r.searchModel]]),r.searchModel?(M(),L("button",{key:0,onClick:e[99]||(e[99]=Oe(h=>r.searchModel="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),p("div",null,[Ae(p("input",{"onUpdate:modelValue":e[100]||(e[100]=h=>r.show_only_installed_models=h),class:"m-2 p-2",type:"checkbox",ref:"only_installed"},null,512),[[Mt,r.show_only_installed_models]]),qst]),p("div",null,[Le(l,{radioOptions:r.sortOptions,onRadioSelected:s.handleRadioSelected},null,8,["radioOptions","onRadioSelected"])]),Yst,r.is_loading_zoo?(M(),L("div",$st,jst)):X("",!0),r.models_zoo&&r.models_zoo.length>0?(M(),L("div",Qst,[p("label",Xst," Models: ("+me(r.models_zoo.length)+") ",1),p("div",{class:Ke(["overflow-y-auto p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4 overflow-y-scroll w-full dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",r.mzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(s.rendered_models_zoo,(h,E)=>(M(),Qt(c,{ref_for:!0,ref:"modelZoo",key:"index-"+E+"-"+h.name,model:h,"is-installed":h.isInstalled,"on-install":s.onInstall,"on-uninstall":s.onUninstall,"on-selected":s.onModelSelected,selected:h.name===s.configFile.model_name,model_type:h.model_type,"on-copy":s.onCopy,"on-copy-link":s.onCopyLink,"on-cancel-install":s.onCancelInstall},null,8,["model","is-installed","on-install","on-uninstall","on-selected","selected","model_type","on-copy","on-copy-link","on-cancel-install"]))),128)),p("button",{ref:"load_more_models",class:"relative items-start p-4 hover:bg-primary-light rounded-lg mb-2 shadow-lg border-2 select-none",onClick:e[101]||(e[101]=(...h)=>s.load_more_models&&s.load_more_models(...h))},"Load more models",512)]),_:1})],2)])):X("",!0),r.mzl_collapsed?(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[102]||(e[102]=(...h)=>s.open_mzl&&s.open_mzl(...h))},Jst)):(M(),L("button",{key:3,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[103]||(e[103]=(...h)=>s.open_mzl&&s.open_mzl(...h))},tot))],2)]),p("div",not,[p("div",iot,[p("button",{onClick:e[104]||(e[104]=Oe(h=>r.mzdc_collapsed=!r.mzdc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,sot,512),[[At,r.mzdc_collapsed]]),Ae(p("div",null,aot,512),[[At,!r.mzdc_collapsed]]),lot,s.binding_name?X("",!0):(M(),L("div",cot,[dot,$e(" No binding selected! ")])),s.configFile.binding_name?(M(),L("div",uot,"|")):X("",!0),s.configFile.binding_name?(M(),L("div",_ot,[p("div",pot,[p("img",{src:s.imgBinding,class:"w-8 h-8 rounded-full object-fill text-blue-700"},null,8,hot),p("h3",fot,me(s.binding_name),1)])])):X("",!0)])]),p("div",{class:Ke([{hidden:r.mzdc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",mot,[p("div",got,[p("div",null,[p("div",Eot,[bot,Ae(p("input",{type:"text","onUpdate:modelValue":e[105]||(e[105]=h=>r.reference_path=h),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Enter Path ...",required:""},null,512),[[Je,r.reference_path]])]),p("button",{type:"button",onClick:e[106]||(e[106]=Oe(h=>s.onCreateReference(),["stop"])),class:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"},"Add reference")]),r.modelDownlaodInProgress?X("",!0):(M(),L("div",Sot,[p("div",yot,[vot,Ae(p("input",{type:"text","onUpdate:modelValue":e[107]||(e[107]=h=>r.addModel.url=h),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Enter URL ...",required:""},null,512),[[Je,r.addModel.url]])]),p("button",{type:"button",onClick:e[108]||(e[108]=Oe(h=>s.onInstallAddModel(),["stop"])),class:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"},"Download")])),r.modelDownlaodInProgress?(M(),L("div",Tot,[xot,p("div",Cot,[p("div",Rot,[p("div",Aot,[wot,p("span",Oot,me(Math.floor(r.addModel.progress))+"%",1)]),p("div",{class:"mx-1 opacity-80 line-clamp-1",title:r.addModel.url},me(r.addModel.url),9,Not),p("div",Mot,[p("div",{class:"bg-blue-600 h-2.5 rounded-full",style:un({width:r.addModel.progress+"%"})},null,4)]),p("div",Iot,[p("span",Dot,"Download speed: "+me(s.speed_computed)+"/s",1),p("span",Lot,me(s.downloaded_size_computed)+"/"+me(s.total_size_computed),1)])])]),p("div",kot,[p("div",Pot,[p("div",Uot,[p("button",{onClick:e[109]||(e[109]=Oe((...h)=>s.onCancelInstall&&s.onCancelInstall(...h),["stop"])),type:"button",title:"Cancel download",class:"text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-gray-200 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600"}," Cancel ")])])])])):X("",!0)])])],2)]),p("div",Fot,[p("div",Bot,[p("button",{onClick:e[111]||(e[111]=Oe(h=>r.pzc_collapsed=!r.pzc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,zot,512),[[At,r.pzc_collapsed]]),Ae(p("div",null,Hot,512),[[At,!r.pzc_collapsed]]),qot,s.configFile.personalities?(M(),L("div",Yot,"|")):X("",!0),p("div",$ot,me(s.active_pesonality),1),s.configFile.personalities?(M(),L("div",Wot,"|")):X("",!0),s.configFile.personalities?(M(),L("div",Kot,[s.mountedPersArr.length>0?(M(),L("div",jot,[(M(!0),L(Xe,null,bt(s.mountedPersArr,(h,E)=>(M(),L("div",{class:"relative hover:-translate-y-2 duration-300 hover:z-10 shrink-0",key:E+"-"+h.name,ref_for:!0,ref:"mountedPersonalities"},[p("div",Qot,[p("button",{onClick:Oe(g=>s.onPersonalitySelected(h),["stop"])},[p("img",{src:r.bUrl+h.avatar,onError:e[110]||(e[110]=(...g)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...g)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 group-hover:border-secondary",s.configFile.active_personality_id==s.configFile.personalities.indexOf(h.full_path)?"border-secondary":"border-transparent z-0"]),title:h.name},null,42,Zot)],8,Xot),p("button",{onClick:Oe(g=>s.unmountPersonality(h),["stop"])},tat,8,Jot)])]))),128))])):X("",!0)])):X("",!0)])]),p("div",{class:Ke([{hidden:r.pzc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",nat,[iat,p("div",rat,[p("div",sat,[r.searchPersonalityInProgress?(M(),L("div",oat,lat)):X("",!0),r.searchPersonalityInProgress?X("",!0):(M(),L("div",cat,uat))]),Ae(p("input",{type:"search",id:"personality-search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search personality...",required:"","onUpdate:modelValue":e[112]||(e[112]=h=>r.searchPersonality=h),onKeyup:e[113]||(e[113]=Oe((...h)=>s.searchPersonality_func&&s.searchPersonality_func(...h),["stop"]))},null,544),[[Je,r.searchPersonality]]),r.searchPersonality?(M(),L("button",{key:0,onClick:e[114]||(e[114]=Oe(h=>r.searchPersonality="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),r.searchPersonality?X("",!0):(M(),L("div",_at,[p("label",pat," Personalities Category: ("+me(r.persCatgArr.length)+") ",1),p("select",{id:"persCat",onChange:e[115]||(e[115]=h=>s.update_personality_category(h.target.value,s.refresh)),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},[(M(!0),L(Xe,null,bt(r.persCatgArr,(h,E)=>(M(),L("option",{key:E,selected:h==this.configFile.personality_category},me(h),9,hat))),128))],32)])),p("div",null,[r.personalitiesFiltered.length>0?(M(),L("div",fat,[p("label",mat,me(r.searchPersonality?"Search results":"Personalities")+": ("+me(r.personalitiesFiltered.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.pzl_collapsed?"":"max-h-96"])},[Le(Vr,{name:"bounce"},{default:dt(()=>[(M(!0),L(Xe,null,bt(r.personalitiesFiltered,(h,E)=>(M(),Qt(d,{ref_for:!0,ref:"personalitiesZoo",key:"index-"+E+"-"+h.name,personality:h,select_language:!0,full_path:h.full_path,selected:s.configFile.active_personality_id==s.configFile.personalities.findIndex(g=>g===h.full_path||g===h.full_path+":"+h.language),"on-selected":s.onPersonalitySelected,"on-mount":s.mountPersonality,"on-un-mount":s.unmountPersonality,"on-remount":s.remountPersonality,"on-reinstall":s.onPersonalityReinstall,"on-settings":s.onSettingsPersonality,"on-copy-personality-name":s.onCopyPersonalityName},null,8,["personality","full_path","selected","on-selected","on-mount","on-un-mount","on-remount","on-reinstall","on-settings","on-copy-personality-name"]))),128))]),_:1})],2)])):X("",!0)]),r.pzl_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[116]||(e[116]=h=>r.pzl_collapsed=!r.pzl_collapsed)},Eat)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[117]||(e[117]=h=>r.pzl_collapsed=!r.pzl_collapsed)},Sat))],2)]),p("div",yat,[p("div",vat,[p("button",{onClick:e[119]||(e[119]=Oe(h=>r.ezc_collapsed=!r.ezc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,xat,512),[[At,r.ezc_collapsed]]),Ae(p("div",null,Rat,512),[[At,!r.ezc_collapsed]]),Aat,s.configFile.extensions?(M(),L("div",wat,"|")):X("",!0),s.configFile.extensions?(M(),L("div",Oat,[s.mountedExtensions.length>0?(M(),L("div",Nat,[(M(!0),L(Xe,null,bt(s.mountedExtensions,(h,E)=>(M(),L("div",{class:"relative hover:-translate-y-2 duration-300 hover:z-10 shrink-0",key:E+"-"+h.name,ref_for:!0,ref:"mountedExtensions"},[p("div",Mat,[p("button",null,[p("img",{src:r.bUrl+h.avatar,onError:e[118]||(e[118]=(...g)=>s.extensionImgPlacehodler&&s.extensionImgPlacehodler(...g)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 group-hover:border-secondary","border-transparent z-0"]),title:h.name},null,40,Iat)]),p("button",{onClick:Oe(g=>s.unmountExtension(h),["stop"])},kat,8,Dat)])]))),128))])):X("",!0)])):X("",!0)])]),p("div",{class:Ke([{hidden:r.ezc_collapsed},"flex flex-col mb-2 px-3 pb-0"])},[p("div",Pat,[Uat,p("div",Fat,[p("div",Bat,[r.searchExtensionInProgress?(M(),L("div",Gat,Vat)):X("",!0),r.searchExtensionInProgress?X("",!0):(M(),L("div",Hat,Yat))]),Ae(p("input",{type:"search",id:"personality-search",class:"block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Search extension...",required:"","onUpdate:modelValue":e[120]||(e[120]=h=>r.searchExtension=h),onKeyup:e[121]||(e[121]=Oe((...h)=>n.searchExtension_func&&n.searchExtension_func(...h),["stop"]))},null,544),[[Je,r.searchExtension]]),r.searchExtension?(M(),L("button",{key:0,onClick:e[122]||(e[122]=Oe(h=>r.searchExtension="",["stop"])),type:"button",class:"text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"}," Clear search")):X("",!0)])]),r.searchExtension?X("",!0):(M(),L("div",$at,[p("label",Wat," Extensions Category: ("+me(r.extCatgArr.length)+") ",1),p("select",{id:"extCat",onChange:e[123]||(e[123]=h=>s.update_extension_category(h.target.value,s.refresh)),class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},[(M(!0),L(Xe,null,bt(r.extCatgArr,(h,E)=>(M(),L("option",{key:E,selected:h==this.extension_category},me(h),9,Kat))),128))],32)])),p("div",null,[r.extensionsFiltererd.length>0?(M(),L("div",jat,[p("label",Qat,me(r.searchExtension?"Search results":"Personalities")+": ("+me(r.extensionsFiltererd.length)+") ",1),p("div",{class:Ke(["overflow-y-auto no-scrollbar p-2 pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4",r.ezl_collapsed?"":"max-h-96"])},[(M(!0),L(Xe,null,bt(r.extensionsFiltererd,(h,E)=>(M(),Qt(u,{ref_for:!0,ref:"extensionsZoo",key:"index-"+E+"-"+h.name,extension:h,select_language:!0,full_path:h.full_path,"on-mount":s.mountExtension,"on-un-mount":s.unmountExtension,"on-remount":s.remountExtension,"on-reinstall":s.onExtensionReinstall,"on-settings":s.onSettingsExtension},null,8,["extension","full_path","on-mount","on-un-mount","on-remount","on-reinstall","on-settings"]))),128))],2)])):X("",!0)]),r.ezc_collapsed?(M(),L("button",{key:1,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Collapse",type:"button",onClick:e[124]||(e[124]=h=>r.ezl_collapsed=!r.ezl_collapsed)},Zat)):(M(),L("button",{key:2,class:"text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Expand",type:"button",onClick:e[125]||(e[125]=h=>r.ezl_collapsed=!r.ezl_collapsed)},elt))],2)]),p("div",tlt,[p("div",nlt,[p("button",{onClick:e[126]||(e[126]=Oe(h=>r.mep_collapsed=!r.mep_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 text-left w-full flex items-center"},[Ae(p("div",null,rlt,512),[[At,r.mep_collapsed]]),Ae(p("div",null,olt,512),[[At,!r.mep_collapsed]]),alt])]),p("div",{class:Ke([{hidden:r.mep_collapsed},"flex flex-col mb-2 px-3 pb-0"])},null,2)]),p("div",llt,[p("div",clt,[p("button",{onClick:e[127]||(e[127]=Oe(h=>r.mc_collapsed=!r.mc_collapsed,["stop"])),class:"text-2xl hover:text-primary p-2 -m-2 w-full text-left flex items-center"},[Ae(p("div",null,ult,512),[[At,r.mc_collapsed]]),Ae(p("div",null,plt,512),[[At,!r.mc_collapsed]]),hlt])]),p("div",{class:Ke([{hidden:r.mc_collapsed},"flex flex-col mb-2 p-2"])},[p("div",flt,[p("div",mlt,[Ae(p("input",{id:"override-model-parameters",type:"checkbox",class:"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-700 dark:focus:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500",onClick:e[128]||(e[128]=Oe(()=>{},["stop"])),"onUpdate:modelValue":e[129]||(e[129]=h=>s.configFile.override_personality_model_parameters=h),onChange:e[130]||(e[130]=h=>s.update_setting("override_personality_model_parameters",s.configFile.override_personality_model_parameters))},null,544),[[Mt,s.configFile.override_personality_model_parameters]]),glt])]),p("div",{class:Ke(s.configFile.override_personality_model_parameters?"":"pointer-events-none opacity-30")},[p("div",Elt,[blt,Ae(p("input",{type:"text",id:"seed","onUpdate:modelValue":e[131]||(e[131]=h=>s.configFile.seed=h),class:"bg-gray-50 border border-gray-300 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,512),[[Je,s.configFile.seed]])]),p("div",Slt,[p("div",ylt,[p("div",vlt,[Tlt,p("p",xlt,[Ae(p("input",{type:"text",id:"temp-val","onUpdate:modelValue":e[132]||(e[132]=h=>s.configFile.temperature=h),onChange:e[133]||(e[133]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.temperature]])])]),Ae(p("input",{id:"temperature",onChange:e[134]||(e[134]=h=>r.settingsChanged=!0),type:"range","onUpdate:modelValue":e[135]||(e[135]=h=>s.configFile.temperature=h),min:"0",max:"5",step:"0.1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.temperature]])])]),p("div",Clt,[p("div",Rlt,[p("div",Alt,[wlt,p("p",Olt,[Ae(p("input",{type:"text",id:"predict-val","onUpdate:modelValue":e[136]||(e[136]=h=>s.configFile.n_predict=h),onChange:e[137]||(e[137]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.n_predict]])])]),Ae(p("input",{id:"predict",type:"range",onChange:e[138]||(e[138]=h=>r.settingsChanged=!0),"onUpdate:modelValue":e[139]||(e[139]=h=>s.configFile.n_predict=h),min:"0",max:"2048",step:"32",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.n_predict]])])]),p("div",Nlt,[p("div",Mlt,[p("div",Ilt,[Dlt,p("p",Llt,[Ae(p("input",{type:"text",id:"top_k-val","onUpdate:modelValue":e[140]||(e[140]=h=>s.configFile.top_k=h),onChange:e[141]||(e[141]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_k]])])]),Ae(p("input",{id:"top_k",type:"range",onChange:e[142]||(e[142]=h=>r.settingsChanged=!0),"onUpdate:modelValue":e[143]||(e[143]=h=>s.configFile.top_k=h),min:"0",max:"100",step:"1",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_k]])])]),p("div",klt,[p("div",Plt,[p("div",Ult,[Flt,p("p",Blt,[Ae(p("input",{type:"text",id:"top_p-val","onUpdate:modelValue":e[144]||(e[144]=h=>s.configFile.top_p=h),onChange:e[145]||(e[145]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_p]])])]),Ae(p("input",{id:"top_p",type:"range","onUpdate:modelValue":e[146]||(e[146]=h=>s.configFile.top_p=h),min:"0",max:"1",step:"0.01",onChange:e[147]||(e[147]=h=>r.settingsChanged=!0),class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.top_p]])])]),p("div",Glt,[p("div",zlt,[p("div",Vlt,[Hlt,p("p",qlt,[Ae(p("input",{type:"text",id:"repeat_penalty-val","onUpdate:modelValue":e[148]||(e[148]=h=>s.configFile.repeat_penalty=h),onChange:e[149]||(e[149]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_penalty]])])]),Ae(p("input",{id:"repeat_penalty",onChange:e[150]||(e[150]=h=>r.settingsChanged=!0),type:"range","onUpdate:modelValue":e[151]||(e[151]=h=>s.configFile.repeat_penalty=h),min:"0",max:"2",step:"0.01",class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_penalty]])])]),p("div",Ylt,[p("div",$lt,[p("div",Wlt,[Klt,p("p",jlt,[Ae(p("input",{type:"text",id:"repeat_last_n-val","onUpdate:modelValue":e[152]||(e[152]=h=>s.configFile.repeat_last_n=h),onChange:e[153]||(e[153]=h=>r.settingsChanged=!0),class:"mt-2 w-16 text-right p-2 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_last_n]])])]),Ae(p("input",{id:"repeat_last_n",type:"range","onUpdate:modelValue":e[154]||(e[154]=h=>s.configFile.repeat_last_n=h),min:"0",max:"100",step:"1",onChange:e[155]||(e[155]=h=>r.settingsChanged=!0),class:"flex-none h-2 mt-14 mb-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 focus:ring-blue-500 focus:border-blue-500 dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-blue-500 dark:focus:border-blue-500"},null,544),[[Je,s.configFile.repeat_last_n]])])])],2)],2)])],2)]),Le(_,{ref:"addmodeldialog"},null,512),Le(f,{class:"z-20",show:r.variantSelectionDialogVisible,choices:r.variant_choices,onChoiceSelected:s.onVariantChoiceSelected,onCloseDialog:s.oncloseVariantChoiceDialog,onChoiceValidated:s.onvalidateVariantChoice},null,8,["show","choices","onChoiceSelected","onCloseDialog","onChoiceValidated"])],64)}const Xlt=ft(Ktt,[["render",Qlt],["__scopeId","data-v-8ad66bce"]]),Zlt={components:{ClipBoardTextInput:_E,Card:Ll},data(){return{dataset_path:"",max_length:1024,batch_size:4,lr:5e-5,num_epochs:2,selectedFolder:"",selectedDataset:""}},methods:{submitForm(){const n={model_name:this.selectedModel,dataset_file:this.selectedDataset,max_length:this.max_length,batch_size:this.batch_size,lr:this.lr,num_epochs:this.num_epochs,output_dir:this.selectedFolder};Pe.post("/start_training",n).then(e=>{})},openFolderSelector(){this.$refs.folder_selector.click()},selectOutputDirectory(n){var t;console.log("here");const e=(t=n.target.files[0])==null?void 0:t.path;console.log(e),e&&(this.selectedFolder=e)},selectDataset(n){const e=n.target.files;e.length>0&&(this.selectedDataset=e[0])}},computed:{selectedModel:{get(){return this.$store.state.selectedModel}},models:{get(){return this.$store.state.modelsArr}}},watch:{model_name(n){console.log("watching model_name",n),this.$refs.clipboardInput.inputValue=n}}},Jlt={key:0,class:"container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-2 bg-bg-light-tone dark:bg-bg-dark-tone"},ect={class:"mb-4"},tct=p("label",{for:"model_name",class:"text-sm"},"Model Name:",-1),nct=["value"],ict={class:"mb-4"},rct=p("label",{for:"dataset_path",class:"text-sm"},"Dataset:",-1),sct={class:"mb-4"},oct=p("label",{for:"lr",class:"text-sm"},"Learning Rate:",-1),act={class:"mb-4"},lct=p("label",{for:"num_epochs",class:"text-sm"},"Number of Epochs:",-1),cct={class:"mb-4"},dct=p("label",{for:"max_length",class:"text-sm"},"Max Length:",-1),uct={class:"mb-4"},_ct=p("label",{for:"batch_size",class:"text-sm"},"Batch Size:",-1),pct={class:"mb-4"},hct=p("label",{for:"output_dir",class:"text-sm"},"Output Directory:",-1),fct=p("button",{class:"bg-blue-500 text-white px-4 py-2 rounded"},"Start training",-1),mct={key:1};function gct(n,e,t,i,r,s){const o=St("Card"),a=St("ClipBoardTextInput");return s.selectedModel!==null&&s.selectedModel.toLowerCase().includes("gptq")?(M(),L("div",Jlt,[p("form",{onSubmit:e[2]||(e[2]=Oe((...l)=>s.submitForm&&s.submitForm(...l),["prevent"])),class:""},[Le(o,{title:"Training configuration",isHorizontal:!0,disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Le(o,{title:"Model",class:"",isHorizontal:!1},{default:dt(()=>[p("div",ect,[tct,Ae(p("select",{"onUpdate:modelValue":e[0]||(e[0]=l=>s.selectedModel=l),onChange:e[1]||(e[1]=(...l)=>n.setModel&&n.setModel(...l)),class:"bg-white dark:bg-black m-0 border-2 rounded-md shadow-sm w-full"},[(M(!0),L(Xe,null,bt(s.models,l=>(M(),L("option",{key:l,value:l},me(l),9,nct))),128))],544),[[_i,s.selectedModel]])])]),_:1}),Le(o,{title:"Data",isHorizontal:!1},{default:dt(()=>[p("div",ict,[rct,Le(a,{id:"model_path",inputType:"file",value:r.dataset_path,onchange:"selectDataset()"},null,8,["value"])])]),_:1}),Le(o,{title:"Training",isHorizontal:!1},{default:dt(()=>[p("div",sct,[oct,Le(a,{id:"model_path",inputType:"integer",value:r.lr},null,8,["value"])]),p("div",act,[lct,Le(a,{id:"model_path",inputType:"integer",value:r.num_epochs},null,8,["value"])]),p("div",cct,[dct,Le(a,{id:"model_path",inputType:"integer",value:r.max_length},null,8,["value"])]),p("div",uct,[_ct,Le(a,{id:"model_path",inputType:"integer",value:r.batch_size},null,8,["value"])])]),_:1}),Le(o,{title:"Output",isHorizontal:!1},{default:dt(()=>[p("div",pct,[hct,Le(a,{id:"model_path",inputType:"text",value:n.output_dir},null,8,["value"])])]),_:1})]),_:1}),Le(o,{disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[fct]),_:1})],32)])):(M(),L("div",mct,[Le(o,{title:"Info",class:"",isHorizontal:!1},{default:dt(()=>[$e(" Only GPTQ models are supported for QLora fine tuning. Please select a GPTQ compatible binding. ")]),_:1})]))}const Ect=ft(Zlt,[["render",gct]]),bct={components:{ClipBoardTextInput:_E,Card:Ll},data(){return{model_name:"jondurbin/airoboros-7b-gpt4",tokenizer_name:"jondurbin/airoboros-7b-gpt4",dataset_path:"",max_length:1024,batch_size:4,lr:5e-5,num_epochs:2,selectedFolder:"",selectedDatasetPath:""}},methods:{submitForm(){this.model_name,this.tokenizer_name,this.selectedDatasetPath,this.max_length,this.batch_size,this.lr,this.num_epochs,this.selectedFolder},openFolderSelector(){this.$refs.folder_selector.click()},selectOutputDirectory(n){var t;console.log("here");const e=(t=n.target.files[0])==null?void 0:t.path;console.log(e),e&&(this.selectedFolder=e)},selectDatasetPath(n){const e=n.target.files;e.length>0&&(this.selectedDatasetPath=e[0].webkitRelativePath)}}},Sct={class:"container overflow-y-scroll flex flex-col no-scrollbar shadow-lg p-10 pt-2 bg-bg-light-tone dark:bg-bg-dark-tone"},yct={class:"mb-4"},vct=p("label",{for:"model_name",class:"text-sm"},"Model Name:",-1),Tct={class:"mb-4"},xct=p("label",{for:"tokenizer_name",class:"text-sm"},"Tokenizer Name:",-1),Cct=p("button",{type:"submit",class:"bg-blue-500 text-white px-4 py-2 rounded"},"Quantize LLM",-1);function Rct(n,e,t,i,r,s){const o=St("ClipBoardTextInput"),a=St("Card");return M(),L("div",Sct,[p("form",{onSubmit:e[0]||(e[0]=Oe((...l)=>s.submitForm&&s.submitForm(...l),["prevent"])),class:"max-w-md mx-auto"},[Le(a,{title:"Quantizing configuration",isHorizontal:!0,disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Le(a,{title:"Model",class:"",isHorizontal:!1},{default:dt(()=>[p("div",yct,[vct,Le(o,{id:"model_path",inputType:"text",value:r.model_name},null,8,["value"])]),p("div",Tct,[xct,Le(o,{id:"model_path",inputType:"text",value:r.tokenizer_name},null,8,["value"])])]),_:1})]),_:1}),Le(a,{disableHoverAnimation:!0,disableFocus:!0},{default:dt(()=>[Cct]),_:1})],32)])}const Act=ft(bct,[["render",Rct]]),wct={data(){return{show:!1,prompt:"",inputText:""}},methods:{showPanel(){this.show=!0},ok(){this.show=!1,this.$emit("ok",this.inputText)},cancel(){this.show=!1,this.inputText=""}},props:{promptText:{type:String,required:!0}},watch:{promptText(n){this.prompt=n}}},Oct={key:0,class:"fixed top-0 left-0 w-full h-full flex justify-center items-center bg-black bg-opacity-50"},Nct={class:"bg-white p-8 rounded"},Mct={class:"text-xl font-bold mb-4"};function Ict(n,e,t,i,r,s){return M(),L("div",null,[r.show?(M(),L("div",Oct,[p("div",Nct,[p("h2",Mct,me(t.promptText),1),Ae(p("input",{type:"text","onUpdate:modelValue":e[0]||(e[0]=o=>r.inputText=o),class:"border border-gray-300 px-4 py-2 rounded mb-4"},null,512),[[Je,r.inputText]]),p("button",{onClick:e[1]||(e[1]=(...o)=>s.ok&&s.ok(...o)),class:"bg-blue-500 text-white px-4 py-2 rounded mr-2"},"OK"),p("button",{onClick:e[2]||(e[2]=(...o)=>s.cancel&&s.cancel(...o)),class:"bg-gray-500 text-white px-4 py-2 rounded"},"Cancel")])])):X("",!0)])}const Ew=ft(wct,[["render",Ict]]),Dct={props:{htmlContent:{type:String,required:!0}}},Lct=["innerHTML"];function kct(n,e,t,i,r,s){return M(),L("div",null,[p("div",{innerHTML:t.htmlContent},null,8,Lct)])}const Pct=ft(Dct,[["render",kct]]);const Uct={props:{jsonData:{type:[Object,Array,String],default:null},jsonFormText:{type:String,default:"JSON Form"}},data(){return{collapsed:!0}},computed:{formattedJson(){return typeof this.jsonData=="string"?JSON.stringify(JSON.parse(this.jsonData),null," ").replace(/\n/g,"
"):JSON.stringify(this.jsonData,null," ").replace(/\n/g,"
")},isObject(){return typeof this.jsonData=="object"&&this.jsonData!==null},isContentPresent(){return this.jsonData!==null&&(typeof this.jsonData!="string"||this.jsonData.trim()!=="")}},methods:{toggleCollapsed(){this.collapsed=!this.collapsed},toggleCollapsible(){this.collapsed=!this.collapsed}}},Fct={key:0},Bct={class:"toggle-icon mr-1"},Gct={key:0,class:"fas fa-plus-circle text-gray-600"},zct={key:1,class:"fas fa-minus-circle text-gray-600"},Vct={class:"json-viewer max-h-64 overflow-auto p-4 bg-gray-100 border border-gray-300 rounded dark:bg-gray-600"},Hct={key:0,class:"fas fa-plus-circle text-gray-600"},qct={key:1,class:"fas fa-minus-circle text-gray-600"},Yct=["innerHTML"];function $ct(n,e,t,i,r,s){return s.isContentPresent?(M(),L("div",Fct,[p("div",{class:"collapsible-section cursor-pointer mb-4 font-bold hover:text-gray-900",onClick:e[0]||(e[0]=(...o)=>s.toggleCollapsible&&s.toggleCollapsible(...o))},[p("span",Bct,[r.collapsed?(M(),L("i",Gct)):(M(),L("i",zct))]),$e(" "+me(t.jsonFormText),1)]),Ae(p("div",null,[p("div",Vct,[s.isObject?(M(),L("span",{key:0,onClick:e[1]||(e[1]=(...o)=>s.toggleCollapsed&&s.toggleCollapsed(...o)),class:"toggle-icon cursor-pointer mr-1"},[r.collapsed?(M(),L("i",Hct)):(M(),L("i",qct))])):X("",!0),p("pre",{innerHTML:s.formattedJson},null,8,Yct)])],512),[[At,!r.collapsed]])])):X("",!0)}const Wct=ft(Uct,[["render",$ct]]),Kct={props:{done:{type:Boolean,required:!0},message:{type:String,required:!0},status:{type:Boolean,required:!0}}},jct={class:"step flex items-center mb-4"},Qct={class:"flex items-center justify-center w-6 h-6 mr-2"},Xct={key:0},Zct=p("i",{"data-feather":"square",class:"text-gray-400 w-4 h-4"},null,-1),Jct=[Zct],edt={key:1},tdt=p("i",{"data-feather":"check-square",class:"text-green-500 w-4 h-4"},null,-1),ndt=[tdt],idt={key:2},rdt=p("i",{"data-feather":"x-square",class:"text-red-500 w-4 h-4"},null,-1),sdt=[rdt],odt={key:0,role:"status"},adt=p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1),ldt=[adt];function cdt(n,e,t,i,r,s){return M(),L("div",jct,[p("div",Qct,[t.done?X("",!0):(M(),L("div",Xct,Jct)),t.done&&t.status?(M(),L("div",edt,ndt)):X("",!0),t.done&&!t.status?(M(),L("div",idt,sdt)):X("",!0)]),t.done?X("",!0):(M(),L("div",odt,ldt)),p("div",{class:Ke(["content flex-1 px-2",{"text-green-500":t.done,"text-yellow-500":!t.done}])},me(t.message),3)])}const ddt=ft(Kct,[["render",cdt]]),udt="/assets/python_block-4008a934.png",_dt="/assets/bash_block-7ca80e4e.png";const ax="/",pdt={name:"Message",emits:["copy","delete","rankUp","rankDown","updateMessage","resendMessage","continueMessage"],components:{MarkdownRenderer:hw,Step:ddt,RenderHTMLJS:Pct,JsonViewer:Wct,DynamicUIRenderer:gw},props:{host:{type:String,required:!1,default:"http://localhost:9600"},message:Object,avatar:""},data(){return{python_block:udt,bash_block:_dt,audio_url:null,audio:null,msg:null,isSpeaking:!1,speechSynthesis:null,voices:[],expanded:!1,showConfirmation:!1,editMsgMode_:!1,deleteMsgMode:!1,mdRenderHeight:Number}},mounted(){"speechSynthesis"in window?(this.speechSynthesis=window.speechSynthesis,this.voices=this.speechSynthesis.getVoices(),this.voices.length===0&&this.speechSynthesis.addEventListener("voiceschanged",this.onVoicesChanged)):console.error("Speech synthesis is not supported in this browser."),Ue(()=>{Ge.replace(),this.mdRenderHeight=this.$refs.mdRender.$el.offsetHeight})},methods:{insertTab(n){const e=n.target,t=e.selectionStart,i=e.selectionEnd,r=e.value.substring(0,t),s=e.value.substring(i),o=r+" "+s;this.message.content=o,this.$nextTick(()=>{e.selectionStart=e.selectionEnd=t+4}),n.preventDefault()},onVoicesChanged(){this.voices=this.speechSynthesis.getVoices()},read(){this.isSpeaking?(this.$refs.audio_player.pause(),this.isSpeaking=!1):(this.isSpeaking=!0,Pe.post("./read",{text:this.message.content}).then(n=>{let e=n.data.url;console.log(e),this.audio_url=e}).catch(n=>{this.$store.state.toast.showToast(`Error: ${n}`,4,!1),this.generating=!1}))},speak(){if(this.msg){this.speechSynthesis.cancel(),this.msg=null,this.isSpeaking=!1;return}let n=0;console.log("voice on"),this.isSpeaking=!0;const e=200;this.message.content,this.msg=new SpeechSynthesisUtterance,this.msg.pitch=this.$store.state.config.audio_pitch,this.voices.length>0&&(this.msg.voice=this.voices.filter(r=>r.name===this.$store.state.config.audio_out_voice)[0]);const t=r=>{let s=this.message.content.substring(r,r+e);const o=[".","!","?",` +`];let a=-1;return o.forEach(l=>{const c=s.lastIndexOf(l);c>a&&(a=c)}),a==-1&&(a=s.length),console.log(a),a+r+1},i=()=>{if(this.message.content.includes(".")){const r=t(n),s=this.message.content.substring(n,r);this.msg.text=s,n=r+1,this.msg.onend=o=>{n{i()},1):(this.isSpeaking=!1,console.log("voice off :",this.message.content.length," ",r))},this.speechSynthesis.speak(this.msg)}else setTimeout(()=>{i()},1)};i()},toggleModel(){this.expanded=!this.expanded},addBashBlock(){let n=this.$refs.mdTextarea.selectionStart;n==0||this.message.content[n-1]==` +`?this.message.content=this.message.content.slice(0,n)+"```bash\n\n```\n"+this.message.content.slice(n):this.message.content=this.message.content.slice(0,n)+"\n```bash\n\n```\n"+this.message.content.slice(n),n=n+9,this.$refs.mdTextarea.focus(),this.$refs.mdTextarea.selectionStart=this.$refs.mdTextarea.selectionEnd=n},addPythonBlock(){let n=this.$refs.mdTextarea.selectionStart;n==0||this.message.content[n-1]==` +`?this.message.content=this.message.content.slice(0,n)+"```python\n\n```\n"+this.message.content.slice(n):this.message.content=this.message.content.slice(0,n)+"\n```python\n\n```\n"+this.message.content.slice(n),n=n+11,this.$refs.mdTextarea.focus(),this.$refs.mdTextarea.selectionStart=this.$refs.mdTextarea.selectionEnd=n},copyContentToClipboard(){this.$emit("copy",this)},deleteMsg(){this.$emit("delete",this.message.id),this.deleteMsgMode=!1},rankUp(){this.$emit("rankUp",this.message.id)},rankDown(){this.$emit("rankDown",this.message.id)},updateMessage(){this.$emit("updateMessage",this.message.id,this.message.content),this.editMsgMode=!1},resendMessage(n){this.$emit("resendMessage",this.message.id,this.message.content,n)},continueMessage(){this.$emit("continueMessage",this.message.id,this.message.content)},getImgUrl(){return this.avatar?(console.log("Avatar:",ax+this.avatar),ax+this.avatar):(console.log("No avatar found"),Vo)},defaultImg(n){n.target.src=Vo},parseDate(n){let e=new Date(Date.parse(n)),i=Math.floor((new Date-e)/1e3);return i<=1?"just now":i<20?i+" seconds ago":i<40?"half a minute ago":i<60?"less than a minute ago":i<=90?"one minute ago":i<=3540?Math.round(i/60)+" minutes ago":i<=5400?"1 hour ago":i<=86400?Math.round(i/3600)+" hours ago":i<=129600?"1 day ago":i<604800?Math.round(i/86400)+" days ago":i<=777600?"1 week ago":n},prettyDate(n){let e=new Date((n||"").replace(/-/g,"/").replace(/[TZ]/g," ")),t=(new Date().getTime()-e.getTime())/1e3,i=Math.floor(t/86400);if(!(isNaN(i)||i<0||i>=31))return i==0&&(t<60&&"just now"||t<120&&"1 minute ago"||t<3600&&Math.floor(t/60)+" minutes ago"||t<7200&&"1 hour ago"||t<86400&&Math.floor(t/3600)+" hours ago")||i==1&&"Yesterday"||i<7&&i+" days ago"||i<31&&Math.ceil(i/7)+" weeks ago"},checkForFullSentence(){if(this.message.content.trim().split(" ").length>3){this.speak();return}}},watch:{"message.content":function(n){this.$store.state.config.auto_speak&&(this.isSpeaking||this.checkForFullSentence())},"message.ui":function(n){console.log("ui changed"),console.log(this.message.ui)},showConfirmation(){Ue(()=>{Ge.replace()})},deleteMsgMode(){Ue(()=>{Ge.replace()})}},computed:{editMsgMode:{get(){return this.message.hasOwnProperty("open")?this.editMsgMode_||this.message.open:this.editMsgMode_},set(n){this.message.open=n,this.editMsgMode_=n,Ue(()=>{Ge.replace()})}},isTalking:{get(){return this.isSpeaking}},created_at(){return this.prettyDate(this.message.created_at)},created_at_parsed(){return new Date(Date.parse(this.message.created_at)).toLocaleString()},finished_generating_at_parsed(){return new Date(Date.parse(this.message.finished_generating_at)).toLocaleString()},time_spent(){const n=new Date(Date.parse(this.message.created_at)),e=new Date(Date.parse(this.message.finished_generating_at));if(e.getTime()===n.getTime()||!e.getTime())return;let i=e.getTime()-n.getTime();const r=Math.floor(i/(1e3*60*60));i-=r*(1e3*60*60);const s=Math.floor(i/(1e3*60));i-=s*(1e3*60);const o=Math.floor(i/1e3);i-=o*1e3;function a(c){return c<10&&(c="0"+c),c}return a(r)+"h:"+a(s)+"m:"+a(o)+"s"}}},hdt={class:"relative w-full group rounded-lg m-2 shadow-lg hover:border-primary dark:hover:border-primary hover:border-solid hover:border-2 border-2 border-transparent even:bg-bg-light-discussion-odd dark:even:bg-bg-dark-discussion-odd flex flex-col flex-grow flex-wrap overflow-visible p-4 pb-2"},fdt={class:"flex flex-row gap-2"},mdt={class:"flex-shrink-0"},gdt={class:"group/avatar"},Edt=["src","data-popover-target"],bdt={class:"flex flex-col w-full flex-grow-0"},Sdt={class:"flex flex-row flex-grow items-start"},ydt={class:"flex flex-col mb-2"},vdt={class:"drop-shadow-sm text-lg text-opacity-95 font-bold grow"},Tdt=["title"],xdt=p("div",{class:"flex-grow"},null,-1),Cdt={class:"flex-row justify-end mx-2"},Rdt={class:"invisible group-hover:visible flex flex-row"},Adt={key:0,class:"flex items-center duration-75"},wdt=p("i",{"data-feather":"x"},null,-1),Odt=[wdt],Ndt=p("i",{"data-feather":"check"},null,-1),Mdt=[Ndt],Idt=p("i",{"data-feather":"edit"},null,-1),Ddt=[Idt],Ldt=["src"],kdt=["src"],Pdt=p("i",{"data-feather":"copy"},null,-1),Udt=[Pdt],Fdt=p("i",{"data-feather":"send"},null,-1),Bdt=[Fdt],Gdt=p("i",{"data-feather":"send"},null,-1),zdt=[Gdt],Vdt=p("i",{"data-feather":"fast-forward"},null,-1),Hdt=[Vdt],qdt={key:7,class:"flex items-center duration-75"},Ydt=p("i",{"data-feather":"x"},null,-1),$dt=[Ydt],Wdt=p("i",{"data-feather":"check"},null,-1),Kdt=[Wdt],jdt=p("i",{"data-feather":"trash"},null,-1),Qdt=[jdt],Xdt=p("i",{"data-feather":"thumbs-up"},null,-1),Zdt=[Xdt],Jdt={class:"flex flex-row items-center"},eut=p("i",{"data-feather":"thumbs-down"},null,-1),tut=[eut],nut={class:"flex flex-row items-center"},iut=p("i",{"data-feather":"volume-2"},null,-1),rut=[iut],sut={key:9,class:"flex flex-row items-center"},out=p("i",{"data-feather":"voicemail"},null,-1),aut=[out],lut={class:"overflow-x-auto w-full"},cut={class:"flex flex-col items-start w-full"},dut={class:"flex flex-col items-start w-full"},uut={key:1},_ut={key:3,controls:"",autoplay:"",ref:"audio_player"},put=["src"],hut={class:"text-sm text-gray-400 mt-2"},fut={class:"flex flex-row items-center gap-2"},mut={key:0},gut={class:"font-thin"},Eut={key:1},but={class:"font-thin"},Sut={key:2},yut={class:"font-thin"},vut={key:3},Tut=["title"];function xut(n,e,t,i,r,s){const o=St("Step"),a=St("RenderHTMLJS"),l=St("MarkdownRenderer"),c=St("JsonViewer"),d=St("DynamicUIRenderer");return M(),L("div",hdt,[p("div",fdt,[p("div",mdt,[p("div",gdt,[p("img",{src:s.getImgUrl(),onError:e[0]||(e[0]=u=>s.defaultImg(u)),"data-popover-target":"avatar"+t.message.id,"data-popover-placement":"bottom",class:"w-10 h-10 rounded-full object-fill text-red-700"},null,40,Edt)])]),p("div",bdt,[p("div",Sdt,[p("div",ydt,[p("div",vdt,me(t.message.sender)+" ",1),t.message.created_at?(M(),L("div",{key:0,class:"text-sm text-gray-400 font-thin",title:"Created at: "+s.created_at_parsed},me(s.created_at),9,Tdt)):X("",!0)]),xdt,p("div",Cdt,[p("div",Rdt,[s.editMsgMode?(M(),L("div",Adt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90 p-2",title:"Cancel edit",type:"button",onClick:e[1]||(e[1]=Oe(u=>s.editMsgMode=!1,["stop"]))},Odt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 p-2",title:"Update message",type:"button",onClick:e[2]||(e[2]=Oe((...u)=>s.updateMessage&&s.updateMessage(...u),["stop"]))},Mdt)])):X("",!0),s.editMsgMode?X("",!0):(M(),L("div",{key:1,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Edit message",onClick:e[3]||(e[3]=Oe(u=>s.editMsgMode=!0,["stop"]))},Ddt)),s.editMsgMode?(M(),L("div",{key:2,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Add python block",onClick:e[4]||(e[4]=Oe(u=>s.addPythonBlock(),["stop"]))},[p("img",{src:r.python_block,width:"25",height:"25"},null,8,Ldt)])):X("",!0),s.editMsgMode?(M(),L("div",{key:3,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Add bash block",onClick:e[5]||(e[5]=Oe(u=>s.addBashBlock(),["stop"]))},[p("img",{src:r.bash_block,width:"25",height:"25"},null,8,kdt)])):X("",!0),p("div",{class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Copy message to clipboard",onClick:e[6]||(e[6]=Oe(u=>s.copyContentToClipboard(),["stop"]))},Udt),!s.editMsgMode&&t.message.sender!=this.$store.state.mountedPers.name?(M(),L("div",{key:4,class:Ke(["text-lg text-red-500 hover:text-secondary duration-75 active:scale-90 p-2",{"text-5xl":s.editMsgMode}]),title:"Resend message with full context",onClick:e[7]||(e[7]=Oe(u=>s.resendMessage("full_context"),["stop"]))},Bdt,2)):X("",!0),!s.editMsgMode&&t.message.sender!=this.$store.state.mountedPers.name?(M(),L("div",{key:5,class:Ke(["text-lg hover:text-secondary duration-75 active:scale-90 p-2",{"text-5xl":s.editMsgMode}]),title:"Resend message without the full context",onClick:e[8]||(e[8]=Oe(u=>s.resendMessage("simple_question"),["stop"]))},zdt,2)):X("",!0),!s.editMsgMode&&t.message.sender==this.$store.state.mountedPers.name?(M(),L("div",{key:6,class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Resend message",onClick:e[9]||(e[9]=Oe(u=>s.continueMessage(),["stop"]))},Hdt)):X("",!0),r.deleteMsgMode?(M(),L("div",qdt,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90 p-2",title:"Cancel removal",type:"button",onClick:e[10]||(e[10]=Oe(u=>r.deleteMsgMode=!1,["stop"]))},$dt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 p-2",title:"Confirm removal",type:"button",onClick:e[11]||(e[11]=Oe(u=>s.deleteMsg(),["stop"]))},Kdt)])):X("",!0),!s.editMsgMode&&!r.deleteMsgMode?(M(),L("div",{key:8,class:"text-lg hover:text-red-600 duration-75 active:scale-90 p-2",title:"Remove message",onClick:e[12]||(e[12]=u=>r.deleteMsgMode=!0)},Qdt)):X("",!0),p("div",{class:"text-lg hover:text-secondary duration-75 active:scale-90 p-2",title:"Upvote",onClick:e[13]||(e[13]=Oe(u=>s.rankUp(),["stop"]))},Zdt),p("div",Jdt,[p("div",{class:"text-lg hover:text-red-600 duration-75 active:scale-90 p-2",title:"Downvote",onClick:e[14]||(e[14]=Oe(u=>s.rankDown(),["stop"]))},tut),t.message.rank!=0?(M(),L("div",{key:0,class:Ke(["rounded-full px-2 text-sm flex items-center justify-center font-bold",t.message.rank>0?"bg-secondary":"bg-red-600"]),title:"Rank"},me(t.message.rank),3)):X("",!0)]),p("div",nut,[p("div",{class:Ke(["text-lg hover:text-red-600 duration-75 active:scale-90 p-2",{"text-red-500":s.isTalking}]),title:"speak",onClick:e[15]||(e[15]=Oe(u=>s.speak(),["stop"]))},rut,2)]),this.$store.state.config.enable_voice_service?(M(),L("div",sut,[p("div",{class:Ke(["text-lg hover:text-red-600 duration-75 active:scale-90 p-2",{"text-red-500":s.isTalking}]),title:"read",onClick:e[16]||(e[16]=Oe(u=>s.read(),["stop"]))},aut,2)])):X("",!0)])])]),p("div",lut,[p("div",cut,[(M(!0),L(Xe,null,bt(t.message.steps,(u,_)=>(M(),L("div",{key:"step-"+t.message.id+"-"+_,class:"step font-bold",style:un({backgroundColor:u.done?"transparent":"inherit"})},[Le(o,{done:u.done,message:u.message,status:u.status},null,8,["done","message","status"])],4))),128))]),p("div",dut,[(M(!0),L(Xe,null,bt(t.message.html_js_s,(u,_)=>(M(),L("div",{key:"htmljs-"+t.message.id+"-"+_,class:"htmljs font-bold",style:un({backgroundColor:n.step.done?"transparent":"inherit"})},[Le(a,{htmlContent:u},null,8,["htmlContent"])],4))),128))]),s.editMsgMode?X("",!0):(M(),Qt(l,{key:0,ref:"mdRender",host:t.host,"markdown-text":t.message.content,message_id:t.message.id,discussion_id:t.message.discussion_id},null,8,["host","markdown-text","message_id","discussion_id"])),p("div",null,[t.message.open?Ae((M(),L("textarea",{key:0,ref:"mdTextarea",onKeydown:e[17]||(e[17]=Fo(Oe((...u)=>s.insertTab&&s.insertTab(...u),["prevent"]),["tab"])),class:"block min-h-[900px] p-2.5 w-full text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500 overflow-y-scroll flex flex-col shadow-lg p-10 pt-0 overflow-y-scroll dark:bg-bg-dark scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",rows:4,style:un({minHeight:r.mdRenderHeight+"px"}),placeholder:"Enter message here...","onUpdate:modelValue":e[18]||(e[18]=u=>t.message.content=u)},`\r + `,36)),[[Je,t.message.content]]):X("",!0)]),t.message.metadata!==null?(M(),L("div",uut,[(M(!0),L(Xe,null,bt(t.message.metadata,(u,_)=>(M(),L("div",{key:"json-"+t.message.id+"-"+_,class:"json font-bold"},[Le(c,{jsonFormText:u.title,jsonData:u.content},null,8,["jsonFormText","jsonData"])]))),128))])):X("",!0),t.message.ui!==null&&t.message.ui!==void 0&&t.message.ui!==""?(M(),Qt(d,{key:2,class:"w-full h-full",code:t.message.ui},null,8,["code"])):X("",!0),r.audio_url!=null?(M(),L("audio",_ut,[p("source",{src:r.audio_url,type:"audio/wav"},null,8,put),$e(" Your browser does not support the audio element. ")],512)):X("",!0)]),p("div",hut,[p("div",fut,[t.message.binding?(M(),L("p",mut,[$e("Binding: "),p("span",gut,me(t.message.binding),1)])):X("",!0),t.message.model?(M(),L("p",Eut,[$e("Model: "),p("span",but,me(t.message.model),1)])):X("",!0),t.message.seed?(M(),L("p",Sut,[$e("Seed: "),p("span",yut,me(t.message.seed),1)])):X("",!0),s.time_spent?(M(),L("p",vut,[$e("Time spent: "),p("span",{class:"font-thin",title:"Finished generating: "+s.finished_generating_at_parsed},me(s.time_spent),9,Tut)])):X("",!0)])])])])])}const bw=ft(pdt,[["render",xut]]),Cut="/";Pe.defaults.baseURL="/";const Rut={name:"MountedPersonalities",props:{onShowPersList:Function,onReady:Function},components:{Toast:Ol,UniversalForm:Nl},data(){return{bUrl:Cut,isMounted:!1,show:!1}},async mounted(){await this.constructor(),this.isMounted=!0},async activated(){this.isMounted&&await this.constructor()},computed:{configFile:{get(){return this.$store.state.config},set(n){this.$store.commit("setConfig",n)}},mountedPers:{get(){return this.$store.state.mountedPers},set(n){this.$store.commit("setMountedPers",n)}},personalities:{get(){return this.$store.state.personalities},set(n){this.$store.commit("setPersonalities",n)}},mountedPersArr:{get(){return this.$store.state.mountedPersArr},set(n){this.$store.commit("setMountedPers",n)}}},methods:{onSettingsPersonality(n){try{Pe.get("/get_active_personality_settings").then(e=>{e&&(console.log("pers sett",e),e.data&&Object.keys(e.data).length>0?this.$refs.universalForm.showForm(e.data,"Personality settings - "+n.name,"Save changes","Cancel").then(t=>{try{Pe.post("/set_active_personality_settings",t).then(i=>{i&&i.data?(console.log("personality set with new settings",i.data),this.$refs.toast.showToast("Personality settings updated successfully!",4,!0)):this.$refs.toast.showToast(`Did not get Personality settings responses. `+i,4,!1)})}catch(i){this.$refs.toast.showToast(`Did not get Personality settings responses. - Endpoint error: `+i.message,4,!1)}}):this.$refs.toast.showToast("Personality has no settings",4,!1))})}catch(e){this.$refs.toast.showToast("Could not open personality settings. Endpoint error: "+e.message,4,!1)}},toggleShowPersList(){this.onShowPersList()},async constructor(){for(Ue(()=>{Ge.replace()});this.$store.state.ready===!1;)await new Promise(n=>setTimeout(n,100));this.onReady()},async api_get_req(n){try{const e=await Pe.get("/"+n);if(e)return e.data}catch(e){console.log(e.message,"api_get_req - mountedPersonalities");return}},personalityImgPlacehodler(n){n.target.src=Pl}}},Tut={class:"w-fit select-none"},xut={key:0,class:"flex -space-x-4"},Cut=["src","title"],Rut={key:1,class:"flex -space-x-4"},Aut=["src","title"],wut={key:2,title:"Loading personalities"},Out=p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1),Nut=[Out];function Mut(n,e,t,i,r,s){const o=St("UniversalForm");return M(),L(Xe,null,[p("div",Tut,[s.mountedPersArr.length>1?(M(),L("div",xut,[p("img",{src:r.bUrl+s.mountedPers.avatar,onError:e[0]||(e[0]=(...a)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...a)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:z-20 hover:-translate-y-2 duration-150 border-secondary cursor-pointer",title:"Active personality: "+s.mountedPers.name,onClick:e[1]||(e[1]=a=>s.onSettingsPersonality(s.mountedPers))},null,40,Cut),p("div",{class:"flex items-center justify-center w-8 h-8 cursor-pointer text-xs font-medium bg-bg-light dark:bg-bg-dark border-2 hover:border-secondary rounded-full hover:bg-bg-light-tone dark:hover:bg-bg-dark-tone dark:border-gray-800 hover:z-20 hover:-translate-y-2 duration-150 active:scale-90",onClick:e[2]||(e[2]=Oe((...a)=>s.toggleShowPersList&&s.toggleShowPersList(...a),["stop"])),title:"Click to show more"},"+"+me(s.mountedPersArr.length-1),1)])):X("",!0),s.mountedPersArr.length==1?(M(),L("div",Rut,[p("img",{src:r.bUrl+this.$store.state.mountedPers.avatar,onError:e[3]||(e[3]=(...a)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...a)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:z-20 cursor-pointer border-secondary",title:"Active personality: "+this.$store.state.mountedPers.name,onClick:e[4]||(e[4]=Oe((...a)=>s.toggleShowPersList&&s.toggleShowPersList(...a),["stop"]))},null,40,Aut)])):X("",!0),s.mountedPersArr.length==0?(M(),L("div",wut,Nut)):X("",!0)]),Le(o,{ref:"universalForm",class:"z-20"},null,512)],64)}const Iut=ft(vut,[["render",Mut]]);const Dut="/";Pe.defaults.baseURL="/";const Lut={props:{onTalk:Function,onMounted:Function,onUnmounted:Function,onRemounted:Function,discussionPersonalities:Array,onShowPersList:Function},components:{PersonalityEntry:mw,Toast:Ol,UniversalForm:Nl},name:"MountedPersonalitiesList",data(){return{bUrl:Dut,isMounted:!1,isLoading:!1}},async mounted(){await this.constructor(),this.isMounted=!0},async activated(){this.isMounted&&await this.constructor()},computed:{configFile:{get(){return this.$store.state.config},set(n){this.$store.commit("setConfig",n)}},personalities:{get(){return this.$store.state.personalities},set(n){this.$store.commit("setPersonalities",n)}},mountedPersArr:{get(){return this.$store.state.mountedPersArr},set(n){this.$store.commit("setMountedPers",n)}}},methods:{toggleShowPersList(){this.onShowPersList()},async constructor(){},async api_get_req(n){try{const e=await Pe.get("/"+n);if(e)return e.data}catch(e){console.log(e.message,"api_get_req - mountedPersonalities");return}},personalityImgPlacehodler(n){n.target.src=Pl},onPersonalityReinstall(n){console.log("on reinstall ",n),this.isLoading=!0,Pe.post("/reinstall_personality",{name:n.personality.full_path}).then(e=>{if(e)return this.isLoading=!1,console.log("reinstall_personality",e),e.data.status?this.$refs.toast.showToast("Personality reinstalled successfully!",4,!0):this.$refs.toast.showToast("Could not reinstall personality",4,!1),e.data;this.isLoading=!1}).catch(e=>(this.isLoading=!1,this.$refs.toast.showToast(`Could not reinstall personality + Endpoint error: `+i.message,4,!1)}}):this.$refs.toast.showToast("Personality has no settings",4,!1))})}catch(e){this.$refs.toast.showToast("Could not open personality settings. Endpoint error: "+e.message,4,!1)}},toggleShowPersList(){this.onShowPersList()},async constructor(){for(Ue(()=>{Ge.replace()});this.$store.state.ready===!1;)await new Promise(n=>setTimeout(n,100));this.onReady()},async api_get_req(n){try{const e=await Pe.get("/"+n);if(e)return e.data}catch(e){console.log(e.message,"api_get_req - mountedPersonalities");return}},personalityImgPlacehodler(n){n.target.src=Pl}}},Aut={class:"w-fit select-none"},wut={key:0,class:"flex -space-x-4"},Out=["src","title"],Nut={key:1,class:"flex -space-x-4"},Mut=["src","title"],Iut={key:2,title:"Loading personalities"},Dut=p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1),Lut=[Dut];function kut(n,e,t,i,r,s){const o=St("UniversalForm");return M(),L(Xe,null,[p("div",Aut,[s.mountedPersArr.length>1?(M(),L("div",wut,[p("img",{src:r.bUrl+s.mountedPers.avatar,onError:e[0]||(e[0]=(...a)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...a)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:z-20 hover:-translate-y-2 duration-150 border-secondary cursor-pointer",title:"Active personality: "+s.mountedPers.name,onClick:e[1]||(e[1]=a=>s.onSettingsPersonality(s.mountedPers))},null,40,Out),p("div",{class:"flex items-center justify-center w-8 h-8 cursor-pointer text-xs font-medium bg-bg-light dark:bg-bg-dark border-2 hover:border-secondary rounded-full hover:bg-bg-light-tone dark:hover:bg-bg-dark-tone dark:border-gray-800 hover:z-20 hover:-translate-y-2 duration-150 active:scale-90",onClick:e[2]||(e[2]=Oe((...a)=>s.toggleShowPersList&&s.toggleShowPersList(...a),["stop"])),title:"Click to show more"},"+"+me(s.mountedPersArr.length-1),1)])):X("",!0),s.mountedPersArr.length==1?(M(),L("div",Nut,[p("img",{src:r.bUrl+this.$store.state.mountedPers.avatar,onError:e[3]||(e[3]=(...a)=>s.personalityImgPlacehodler&&s.personalityImgPlacehodler(...a)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:z-20 cursor-pointer border-secondary",title:"Active personality: "+this.$store.state.mountedPers.name,onClick:e[4]||(e[4]=Oe((...a)=>s.toggleShowPersList&&s.toggleShowPersList(...a),["stop"]))},null,40,Mut)])):X("",!0),s.mountedPersArr.length==0?(M(),L("div",Iut,Lut)):X("",!0)]),Le(o,{ref:"universalForm",class:"z-20"},null,512)],64)}const Put=ft(Rut,[["render",kut]]);const Uut="/";Pe.defaults.baseURL="/";const Fut={props:{onTalk:Function,onMounted:Function,onUnmounted:Function,onRemounted:Function,discussionPersonalities:Array,onShowPersList:Function},components:{PersonalityEntry:mw,Toast:Ol,UniversalForm:Nl},name:"MountedPersonalitiesList",data(){return{bUrl:Uut,isMounted:!1,isLoading:!1}},async mounted(){await this.constructor(),this.isMounted=!0},async activated(){this.isMounted&&await this.constructor()},computed:{configFile:{get(){return this.$store.state.config},set(n){this.$store.commit("setConfig",n)}},personalities:{get(){return this.$store.state.personalities},set(n){this.$store.commit("setPersonalities",n)}},mountedPersArr:{get(){return this.$store.state.mountedPersArr},set(n){this.$store.commit("setMountedPers",n)}}},methods:{toggleShowPersList(){this.onShowPersList()},async constructor(){},async api_get_req(n){try{const e=await Pe.get("/"+n);if(e)return e.data}catch(e){console.log(e.message,"api_get_req - mountedPersonalities");return}},personalityImgPlacehodler(n){n.target.src=Pl},onPersonalityReinstall(n){console.log("on reinstall ",n),this.isLoading=!0,Pe.post("/reinstall_personality",{name:n.personality.full_path}).then(e=>{if(e)return this.isLoading=!1,console.log("reinstall_personality",e),e.data.status?this.$refs.toast.showToast("Personality reinstalled successfully!",4,!0):this.$refs.toast.showToast("Could not reinstall personality",4,!1),e.data;this.isLoading=!1}).catch(e=>(this.isLoading=!1,this.$refs.toast.showToast(`Could not reinstall personality `+e.message,4,!1),{status:!1}))},onPersonalityMounted(n){this.mountPersonality(n)},onPersonalityUnMounted(n){this.unmountPersonality(n)},onPersonalityRemount(n){this.reMountPersonality(n)},async handleOnTalk(n){if(Ge.replace(),console.log("ppa",n),n){if(n.isMounted){const e=await this.select_personality(n);e&&e.status&&(await this.constructor(),this.$refs.toast.showToast(`Selected personality: `+n.name,4,!0))}else this.onPersonalityMounted(n);this.onTalk(n)}},async onPersonalitySelected(n){if(Ge.replace(),console.log("Selected personality : ",JSON.stringify(n.personality)),n){if(n.selected){this.$refs.toast.showToast("Personality already selected",4,!0);return}if(n.isMounted){const e=await this.select_personality(n);e&&e.status&&(await this.constructor(),this.$refs.toast.showToast(`Selected personality: `+n.name,4,!0))}else this.onPersonalityMounted(n)}},onSettingsPersonality(n){try{Pe.get("/get_active_personality_settings").then(e=>{e&&(console.log("pers sett",e),e.data&&Object.keys(e.data).length>0?this.$refs.universalForm.showForm(e.data,"Personality settings - "+n.personality.name,"Save changes","Cancel").then(t=>{try{Pe.post("/set_active_personality_settings",t).then(i=>{i&&i.data?(console.log("personality set with new settings",i.data),this.$refs.toast.showToast("Personality settings updated successfully!",4,!0)):this.$refs.toast.showToast(`Did not get Personality settings responses. @@ -170,17 +172,17 @@ You need to apply changes before you leave, or else.`,"Apply configuration","Can Error: `+e.error,4,!1))},async reMountPersonality(n){if(console.log("remount pers",n),!n)return;if(!this.configFile.personalities.includes(n.personality.full_path)){this.$refs.toast.showToast("Personality not mounted",4,!1);return}const e=await this.remount_personality(n.personality);console.log("remount_personality res",e),e.status?(this.configFile.personalities=e.personalities,this.$refs.toast.showToast("Personality remounted",4,!0),n.isMounted=!0,this.onMounted(this),(await this.select_personality(n.personality)).status&&this.$refs.toast.showToast(`Selected personality: `+n.personality.name,4,!0),this.getMountedPersonalities()):(n.isMounted=!1,this.$refs.toast.showToast(`Could not mount personality Error: `+e.error,4,!1))},async unmountPersonality(n){if(!n)return;console.log(`Unmounting ${JSON.stringify(n.personality)}`);const e=await this.unmount_personality(n.personality);if(e.status){console.log("unmount response",e),this.configFile.active_personality_id=e.active_personality_id,this.configFile.personalities=e.personalities;const t=this.configFile.personalities[this.configFile.active_personality_id],i=this.personalities.findIndex(a=>a.full_path==t),r=this.$refs.personalitiesZoo.findIndex(a=>a.full_path==n.full_path),s=this.personalities[i];s.isMounted=!1,s.selected=!0,this.$refs.personalitiesZoo[r].isMounted=!1,this.getMountedPersonalities(),(await this.select_personality(s)).status&&Ge.replace(),this.$refs.toast.showToast("Personality unmounted",4,!0),this.onUnMounted(this)}else this.$refs.toast.showToast(`Could not unmount personality -Error: `+e.error,4,!1)},getMountedPersonalities(){this.isLoading=!0;let n=[];console.log(this.configFile.personalities.length);for(let e=0;es.full_path==t),r=this.personalities[i];if(r)console.log("adding from config"),n.push(r);else{console.log("adding default");const s=this.personalities.findIndex(a=>a.full_path=="english/generic/lollms"),o=this.personalities[s];n.push(o)}}if(this.mountedPersArr=[],this.mountedPersArr=n,console.log("discussionPersonalities",this.discussionPersonalities),this.discussionPersonalities!=null&&this.discussionPersonalities.length>0)for(let e=0;er.full_path==t);if(console.log("discussionPersonalities -includes",i),console.log("discussionPersonalities -mounted list",this.mountedPersArr),i==-1){const r=this.personalities.findIndex(o=>o.full_path==t),s=this.personalities[r];console.log("adding discucc121",s,t),s&&(this.mountedPersArr.push(s),console.log("adding discucc",s))}}this.isLoading=!1,console.log("getMountedPersonalities",this.mountedPersArr),console.log("fig",this.configFile)}}},hE=n=>(Gs("data-v-d16a58b9"),n=n(),zs(),n),kut={class:"text-left overflow-visible text-base font-semibold cursor-pointer select-none items-center flex flex-col flex-grow w-full overflow-x-auto scrollbar-thin scrollbar-track-bg-light scrollbar-thumb-bg-light-tone hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark dark:scrollbar-thumb-bg-dark-tone dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},Put={key:0,role:"status",class:"flex justify-center overflow-y-hidden"},Uut=hE(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Fut=hE(()=>p("span",{class:"sr-only"},"Loading...",-1)),But=[Uut,Fut],Gut=hE(()=>p("i",{"data-feather":"chevron-down"},null,-1)),zut=[Gut],Vut={class:"block my-2 text-sm font-medium text-gray-900 dark:text-white"},Hut={class:"overflow-y-auto no-scrollbar pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4 max-h-96"};function qut(n,e,t,i,r,s){const o=St("personality-entry"),a=St("Toast"),l=St("UniversalForm");return M(),L("div",kut,[r.isLoading?(M(),L("div",Put,But)):X("",!0),p("div",null,[s.mountedPersArr.length>0?(M(),L("div",{key:0,class:Ke(r.isLoading?"pointer-events-none opacity-30 cursor-default":"")},[p("button",{class:"mt-0 w-full text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Close personality list",type:"button",onClick:e[0]||(e[0]=Oe((...c)=>s.toggleShowPersList&&s.toggleShowPersList(...c),["stop"]))},zut),p("label",Vut," Mounted Personalities: ("+me(s.mountedPersArr.length)+") ",1),p("div",Hut,[Le(Vr,{name:"bounce"},{default:dt(()=>[(M(!0),L(Xe,null,bt(this.$store.state.mountedPersArr,(c,d)=>(M(),Qt(o,{ref_for:!0,ref:"personalitiesZoo",key:"index-"+d+"-"+c.name,personality:c,full_path:c.full_path,select_language:!1,selected:s.configFile.personalities[s.configFile.active_personality_id]===c.full_path||s.configFile.personalities[s.configFile.active_personality_id]===c.full_path+":"+c.language,"on-selected":s.onPersonalitySelected,"on-mount":s.onPersonalityMounted,"on-un-mount":s.onPersonalityUnMounted,"on-remount":s.onPersonalityRemount,"on-settings":s.onSettingsPersonality,"on-reinstall":s.onPersonalityReinstall,"on-talk":s.handleOnTalk},null,8,["personality","full_path","selected","on-selected","on-mount","on-un-mount","on-remount","on-settings","on-reinstall","on-talk"]))),128))]),_:1})])],2)):X("",!0)]),Le(a,{ref:"toast"},null,512),Le(l,{ref:"universalForm",class:"z-20"},null,512)])}const Yut=ft(Lut,[["render",qut],["__scopeId","data-v-d16a58b9"]]);const $ut={components:{InteractiveMenu:kl},props:{commandsList:{type:Array,required:!0},sendCommand:Function,onShowToastMessage:Function},data(){return{loading:!1,selectedFile:null,showMenu:!1,showHelpText:!1,helpText:"",commands:[]}},async mounted(){nextTick(()=>{Ge.replace()})},methods:{isHTML(n){const t=new DOMParser().parseFromString(n,"text/html");return Array.from(t.body.childNodes).some(i=>i.nodeType===Node.ELEMENT_NODE)},selectFile(n,e){const t=document.createElement("input");t.type="file",t.accept=n,t.onchange=i=>{this.selectedFile=i.target.files[0],console.log("File selected"),e()},t.click()},uploadFile(){new FormData().append("file",this.selectedFile),console.log("Uploading file"),this.loading=!0;const e=new FileReader;e.onload=()=>{const t={filename:this.selectedFile.name,fileData:e.result};He.on("file_received",i=>{i.status?this.onShowToastMessage("File uploaded successfully",4,!0):this.onShowToastMessage(`Couldn't upload file -`+i.error,4,!1),this.loading=!1,He.off("file_received")}),He.emit("send_file",t)},e.readAsDataURL(this.selectedFile)},async constructor(){nextTick(()=>{Ge.replace()})},toggleMenu(){this.showMenu=!this.showMenu},execute_cmd(n){this.showMenu=!this.showMenu,n.hasOwnProperty("is_file")?(console.log("Need to send a file."),this.selectFile(n.hasOwnProperty("file_types")?n.file_types:"*",()=>{this.selectedFile!=null&&this.uploadFile()})):this.sendCommand(n.value)},handleClickOutside(n){const e=this.$el.querySelector(".commands-menu-items-wrapper");e&&!e.contains(n.target)&&(this.showMenu=!1)}},mounted(){this.commands=this.commandsList,document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)}},Wut=n=>(Gs("data-v-52cfa09c"),n=n(),zs(),n),Kut={key:0,title:"Loading..",class:"flex flex-row flex-grow justify-end"},jut=Wut(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Qut=[jut];function Xut(n,e,t,i,r,s){const o=St("InteractiveMenu");return r.loading?(M(),L("div",Kut,Qut)):(M(),Qt(o,{key:1,commands:t.commandsList,execute_cmd:s.execute_cmd},null,8,["commands","execute_cmd"]))}const Zut=ft($ut,[["render",Xut],["__scopeId","data-v-52cfa09c"]]);console.log("modelImgPlaceholder:",Ti);const Jut="/",e_t={name:"ChatBox",emits:["messageSentEvent","sendCMDEvent","stopGenerating","loaded","createEmptyUserMessage","createEmptyAIMessage","personalitySelected","addWebLink"],props:{onTalk:Function,discussionList:Array,loading:!1,onShowToastMessage:Function},components:{UniversalForm:Nl,MountedPersonalities:Iut,MountedPersonalitiesList:Yut,PersonalitiesCommands:Zut,InteractiveMenu:kl},setup(){},data(){return{modelImgPlaceholder:Ti,bUrl:Jut,message:"",selecting_model:!1,selectedModel:"",isLesteningToVoice:!1,filesList:[],isFileSentList:[],totalSize:0,showfilesList:!0,showPersonalities:!1,personalities_ready:!1,models_menu_icon:""}},computed:{currentModel(){if(this.$store.state.currentModel!=null)return console.log("Model found"),this.$store.state.currentModel;{console.log("No model found");let n={};return n.name="unknown",n}},installedModels(){return this.$store.state.installedModels},model_name(){return this.$store.state.config.model_name},config(){return this.$store.state.config},mountedPers(){return this.$store.state.mountedPers},allDiscussionPersonalities(){if(this.discussionList.length>0){let n=[];for(let e=0;e{this.isLoading=!1,n&&(console.log("binding sett",n),n.data&&Object.keys(n.data).length>0?this.$refs.universalForm.showForm(n.data,"Binding settings ","Save changes","Cancel").then(e=>{try{Pe.post("/set_active_binding_settings",e).then(t=>{t&&t.data?(console.log("binding set with new settings",t.data),this.$store.state.toast.showToast("Binding settings updated successfully!",4,!0)):(this.$store.state.toast.showToast(`Did not get binding settings responses. +Error: `+e.error,4,!1)},getMountedPersonalities(){this.isLoading=!0;let n=[];console.log(this.configFile.personalities.length);for(let e=0;es.full_path==t),r=this.personalities[i];if(r)console.log("adding from config"),n.push(r);else{console.log("adding default");const s=this.personalities.findIndex(a=>a.full_path=="english/generic/lollms"),o=this.personalities[s];n.push(o)}}if(this.mountedPersArr=[],this.mountedPersArr=n,console.log("discussionPersonalities",this.discussionPersonalities),this.discussionPersonalities!=null&&this.discussionPersonalities.length>0)for(let e=0;er.full_path==t);if(console.log("discussionPersonalities -includes",i),console.log("discussionPersonalities -mounted list",this.mountedPersArr),i==-1){const r=this.personalities.findIndex(o=>o.full_path==t),s=this.personalities[r];console.log("adding discucc121",s,t),s&&(this.mountedPersArr.push(s),console.log("adding discucc",s))}}this.isLoading=!1,console.log("getMountedPersonalities",this.mountedPersArr),console.log("fig",this.configFile)}}},hE=n=>(Gs("data-v-d16a58b9"),n=n(),zs(),n),But={class:"text-left overflow-visible text-base font-semibold cursor-pointer select-none items-center flex flex-col flex-grow w-full overflow-x-auto scrollbar-thin scrollbar-track-bg-light scrollbar-thumb-bg-light-tone hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark dark:scrollbar-thumb-bg-dark-tone dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},Gut={key:0,role:"status",class:"flex justify-center overflow-y-hidden"},zut=hE(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),Vut=hE(()=>p("span",{class:"sr-only"},"Loading...",-1)),Hut=[zut,Vut],qut=hE(()=>p("i",{"data-feather":"chevron-down"},null,-1)),Yut=[qut],$ut={class:"block my-2 text-sm font-medium text-gray-900 dark:text-white"},Wut={class:"overflow-y-auto no-scrollbar pb-0 grid lg:grid-cols-3 md:grid-cols-2 gap-4 max-h-96"};function Kut(n,e,t,i,r,s){const o=St("personality-entry"),a=St("Toast"),l=St("UniversalForm");return M(),L("div",But,[r.isLoading?(M(),L("div",Gut,Hut)):X("",!0),p("div",null,[s.mountedPersArr.length>0?(M(),L("div",{key:0,class:Ke(r.isLoading?"pointer-events-none opacity-30 cursor-default":"")},[p("button",{class:"mt-0 w-full text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:"Close personality list",type:"button",onClick:e[0]||(e[0]=Oe((...c)=>s.toggleShowPersList&&s.toggleShowPersList(...c),["stop"]))},Yut),p("label",$ut," Mounted Personalities: ("+me(s.mountedPersArr.length)+") ",1),p("div",Wut,[Le(Vr,{name:"bounce"},{default:dt(()=>[(M(!0),L(Xe,null,bt(this.$store.state.mountedPersArr,(c,d)=>(M(),Qt(o,{ref_for:!0,ref:"personalitiesZoo",key:"index-"+d+"-"+c.name,personality:c,full_path:c.full_path,select_language:!1,selected:s.configFile.personalities[s.configFile.active_personality_id]===c.full_path||s.configFile.personalities[s.configFile.active_personality_id]===c.full_path+":"+c.language,"on-selected":s.onPersonalitySelected,"on-mount":s.onPersonalityMounted,"on-un-mount":s.onPersonalityUnMounted,"on-remount":s.onPersonalityRemount,"on-settings":s.onSettingsPersonality,"on-reinstall":s.onPersonalityReinstall,"on-talk":s.handleOnTalk},null,8,["personality","full_path","selected","on-selected","on-mount","on-un-mount","on-remount","on-settings","on-reinstall","on-talk"]))),128))]),_:1})])],2)):X("",!0)]),Le(a,{ref:"toast"},null,512),Le(l,{ref:"universalForm",class:"z-20"},null,512)])}const jut=ft(Fut,[["render",Kut],["__scopeId","data-v-d16a58b9"]]);const Qut={components:{InteractiveMenu:kl},props:{commandsList:{type:Array,required:!0},sendCommand:Function,onShowToastMessage:Function},data(){return{loading:!1,selectedFile:null,showMenu:!1,showHelpText:!1,helpText:"",commands:[]}},async mounted(){nextTick(()=>{Ge.replace()})},methods:{isHTML(n){const t=new DOMParser().parseFromString(n,"text/html");return Array.from(t.body.childNodes).some(i=>i.nodeType===Node.ELEMENT_NODE)},selectFile(n,e){const t=document.createElement("input");t.type="file",t.accept=n,t.onchange=i=>{this.selectedFile=i.target.files[0],console.log("File selected"),e()},t.click()},uploadFile(){new FormData().append("file",this.selectedFile),console.log("Uploading file"),this.loading=!0;const e=new FileReader;e.onload=()=>{const t={filename:this.selectedFile.name,fileData:e.result};He.on("file_received",i=>{i.status?this.onShowToastMessage("File uploaded successfully",4,!0):this.onShowToastMessage(`Couldn't upload file +`+i.error,4,!1),this.loading=!1,He.off("file_received")}),He.emit("send_file",t)},e.readAsDataURL(this.selectedFile)},async constructor(){nextTick(()=>{Ge.replace()})},toggleMenu(){this.showMenu=!this.showMenu},execute_cmd(n){this.showMenu=!this.showMenu,n.hasOwnProperty("is_file")?(console.log("Need to send a file."),this.selectFile(n.hasOwnProperty("file_types")?n.file_types:"*",()=>{this.selectedFile!=null&&this.uploadFile()})):this.sendCommand(n.value)},handleClickOutside(n){const e=this.$el.querySelector(".commands-menu-items-wrapper");e&&!e.contains(n.target)&&(this.showMenu=!1)}},mounted(){this.commands=this.commandsList,document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)}},Xut=n=>(Gs("data-v-52cfa09c"),n=n(),zs(),n),Zut={key:0,title:"Loading..",class:"flex flex-row flex-grow justify-end"},Jut=Xut(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),e_t=[Jut];function t_t(n,e,t,i,r,s){const o=St("InteractiveMenu");return r.loading?(M(),L("div",Zut,e_t)):(M(),Qt(o,{key:1,commands:t.commandsList,execute_cmd:s.execute_cmd},null,8,["commands","execute_cmd"]))}const n_t=ft(Qut,[["render",t_t],["__scopeId","data-v-52cfa09c"]]);console.log("modelImgPlaceholder:",Ti);const i_t="/",r_t={name:"ChatBox",emits:["messageSentEvent","sendCMDEvent","stopGenerating","loaded","createEmptyUserMessage","createEmptyAIMessage","personalitySelected","addWebLink"],props:{onTalk:Function,discussionList:Array,loading:!1,onShowToastMessage:Function},components:{UniversalForm:Nl,MountedPersonalities:Put,MountedPersonalitiesList:jut,PersonalitiesCommands:n_t,InteractiveMenu:kl},setup(){},data(){return{modelImgPlaceholder:Ti,bUrl:i_t,message:"",selecting_model:!1,selectedModel:"",isLesteningToVoice:!1,filesList:[],isFileSentList:[],totalSize:0,showfilesList:!0,showPersonalities:!1,personalities_ready:!1,models_menu_icon:""}},computed:{currentModel(){if(this.$store.state.currentModel!=null)return console.log("Model found"),this.$store.state.currentModel;{console.log("No model found");let n={};return n.name="unknown",n}},installedModels(){return this.$store.state.installedModels},model_name(){return this.$store.state.config.model_name},config(){return this.$store.state.config},mountedPers(){return this.$store.state.mountedPers},allDiscussionPersonalities(){if(this.discussionList.length>0){let n=[];for(let e=0;e{this.isLoading=!1,n&&(console.log("binding sett",n),n.data&&Object.keys(n.data).length>0?this.$refs.universalForm.showForm(n.data,"Binding settings ","Save changes","Cancel").then(e=>{try{Pe.post("/set_active_binding_settings",e).then(t=>{t&&t.data?(console.log("binding set with new settings",t.data),this.$store.state.toast.showToast("Binding settings updated successfully!",4,!0)):(this.$store.state.toast.showToast(`Did not get binding settings responses. `+t,4,!1),this.isLoading=!1)})}catch(t){this.$store.state.toast.showToast(`Did not get binding settings responses. Endpoint error: `+t.message,4,!1),this.isLoading=!1}}):(this.$store.state.toast.showToast("Binding has no settings",4,!1),this.isLoading=!1))})}catch(n){this.isLoading=!1,this.$store.state.toast.showToast("Could not open binding settings. Endpoint error: "+n.message,4,!1)}},async unmountPersonality(n){if(this.loading=!0,!n)return;const e=await this.unmount_personality(n.personality||n);if(e.status){this.$store.state.config.personalities=e.personalities,this.$store.state.toast.showToast("Personality unmounted",4,!0),this.$store.dispatch("refreshMountedPersonalities");const t=this.$store.state.mountedPersArr[this.$store.state.mountedPersArr.length-1];console.log(t,this.$store.state.mountedPersArr.length),(await this.select_personality(n.personality)).status&&this.$store.state.toast.showToast(`Selected personality: `+t.name,4,!0)}else this.$store.state.toast.showToast(`Could not unmount personality Error: `+e.error,4,!1);this.loading=!1},async unmount_personality(n){if(!n)return{status:!1,error:"no personality - unmount_personality"};const e={language:n.language,category:n.category,folder:n.folder};try{const t=await Pe.post("/unmount_personality",e);if(t)return t.data}catch(t){console.log(t.message,"unmount_personality - settings");return}},async onPersonalitySelected(n){if(console.log("on pers",n),console.log("selecting ",n),n){if(n.selected){this.$store.state.toast.showToast("Personality already selected",4,!0);return}const e=n.language===null?n.full_path:n.full_path+":"+n.language;if(console.log("pers_path",e),console.log("this.$store.state.config.personalities",this.$store.state.config.personalities),this.$store.state.config.personalities.includes(e)){const t=await this.select_personality(n);console.log("pers is mounted",t),t&&t.status&&t.active_personality_id>-1?this.$store.state.toast.showToast(`Selected personality: `+n.name,4,!0):this.$store.state.toast.showToast(`Error on select personality: -`+n.name,4,!1)}else console.log("mounting pers");this.$emit("personalitySelected"),Ue(()=>{Ge.replace()})}},async select_personality(n){if(!n)return{status:!1,error:"no personality - select_personality"};const e=n.language===null?n.full_path:n.full_path+":"+n.language;console.log("Selecting personality ",e);const i={id:this.$store.state.config.personalities.findIndex(r=>r===e)};try{const r=await Pe.post("/select_personality",i);if(r)return this.$store.dispatch("refreshConfig").then(()=>{this.$store.dispatch("refreshPersonalitiesZoo").then(()=>{this.$store.dispatch("refreshMountedPersonalities")})}),r.data}catch(r){console.log(r.message,"select_personality - settings");return}},emitloaded(){this.$emit("loaded")},showModels(n){n.preventDefault();const e=this.$refs.modelsSelectionList;console.log(e);const t=new MouseEvent("click");e.dispatchEvent(t)},setModel(n){console.log("Setting model to "+n.name),this.selecting_model=!0,this.selectedModel=n,Pe.post("/update_setting",{setting_name:"model_name",setting_value:n.name}).then(async e=>{console.log("UPDATED"),console.log(e),await this.$store.dispatch("refreshConfig"),await this.$store.dispatch("refreshModels"),this.$store.state.toast.showToast(`Model changed to ${this.currentModel.name}`,4,!0),this.selecting_model=!1}).catch(e=>{this.$store.state.toast.showToast(`Error ${e}`,4,!0),this.selecting_model=!1})},clear_files(){Pe.get("/clear_personality_files_list").then(n=>{console.log(n),n.data.state?(this.$store.state.toast.showToast("File uploaded successfully",4,!0),this.filesList.length=0,this.isFileSentList.length=0):this.$store.state.toast.showToast("Files couldn't be removed",4,!1)})},send_file(n,e){const t=new FileReader,i=24*1024;let r=0,s=0;t.onloadend=()=>{if(t.error){console.error("Error reading file:",t.error);return}const a=t.result,l=r+a.byteLength>=n.size;He.emit("send_file_chunk",{filename:n.name,chunk:a,offset:r,isLastChunk:l,chunkIndex:s}),r+=a.byteLength,s++,l?(console.log("File sent successfully"),this.isFileSentList[this.filesList.length-1]=!0,console.log(this.isFileSentList),this.$store.state.toast.showToast("File uploaded successfully",4,!0),this.loading=!1,e()):o()};function o(){const a=n.slice(r,r+i);t.readAsArrayBuffer(a)}console.log("Uploading file"),o()},makeAnEmptyUserMessage(){this.$emit("createEmptyUserMessage")},makeAnEmptyAIMessage(){this.$emit("createEmptyAIMessage")},startSpeechRecognition(){"SpeechRecognition"in window||"webkitSpeechRecognition"in window?(this.recognition=new(window.SpeechRecognition||window.webkitSpeechRecognition),this.recognition.lang=this.$store.state.config.audio_in_language,this.recognition.interimResults=!0,this.recognition.onstart=()=>{this.isLesteningToVoice=!0,this.silenceTimer=setTimeout(()=>{this.recognition.stop()},this.silenceTimeout)},this.recognition.onresult=n=>{let e="";for(let t=n.resultIndex;t{this.recognition.stop()},this.silenceTimeout)},this.recognition.onerror=n=>{console.error("Speech recognition error:",n.error),this.isLesteningToVoice=!1,clearTimeout(this.silenceTimer)},this.recognition.onend=()=>{console.log("Speech recognition ended."),this.isLesteningToVoice=!1,clearTimeout(this.silenceTimer),this.submit()},this.recognition.start()):console.error("Speech recognition is not supported in this browser.")},onPersonalitiesReadyFun(){this.personalities_ready=!0},onShowPersListFun(n){this.showPersonalities=!this.showPersonalities},handleOnTalk(n){this.showPersonalities=!1,this.onTalk(n)},onMountFun(n){console.log("Mounting personality"),this.$refs.mountedPers.constructor()},onUnmountFun(n){console.log("Unmounting personality"),this.$refs.mountedPers.constructor()},onRemount(n){console.log("Remounting chat"),this.$refs.mountedPers.constructor()},computedFileSize(n){return Ue(()=>{Ge.replace()}),Oi(n)},removeItem(n){this.filesList=this.filesList.filter(e=>e!=n)},sendMessageEvent(n){this.filesList.length=0,this.$emit("messageSentEvent",n)},sendCMDEvent(n){this.$emit("sendCMDEvent",n)},addWebLink(){console.log("Emitting addWebLink"),this.$emit("addWebLink")},takePicture(){He.emit("take_picture"),He.on("picture_taken",()=>{Pe.get("/get_current_personality_files_list").then(n=>{this.filesList=n.data.files,this.isFileSentList=n.data.files.map(e=>!0),console.log(`Files recovered: ${this.filesList}`)})})},submitOnEnter(n){this.loading||n.which===13&&(n.preventDefault(),n.repeat||(this.sendMessageEvent(this.message),this.message=""))},submit(){this.message&&(this.sendMessageEvent(this.message),this.message="")},stopGenerating(){this.$emit("stopGenerating")},addFiles(n){console.log("Adding files");const e=[...n.target.files];let t=0;const i=()=>{if(t>=e.length){console.log(`Files_list: ${this.filesList}`);return}const r=e[t];this.filesList.push(r),this.isFileSentList.push(!1),this.send_file(r,()=>{t++,i()})};i()}},watch:{installedModels:{immediate:!0,handler(n){this.$nextTick(()=>{this.installedModels=n})}},model_name:{immediate:!0,handler(n){this.$nextTick(()=>{this.model_name=n})}},showfilesList(){Ue(()=>{Ge.replace()})},loading(n,e){Ue(()=>{Ge.replace()})},filesList:{handler(n,e){let t=0;if(n.length>0)for(let i=0;i{Ge.replace()})},activated(){Ue(()=>{Ge.replace()})}},$t=n=>(Gs("data-v-b2f77eff"),n=n(),zs(),n),t_t={class:"absolute bottom-0 min-w-96 w-full justify-center text-center p-4"},n_t={key:0,class:"flex items-center justify-center w-full"},i_t={class:"flex flex-row p-2 rounded-t-lg"},r_t=$t(()=>p("label",{for:"chat",class:"sr-only"},"Send message",-1)),s_t={class:"px-3 py-3 rounded-lg bg-bg-light-tone-panel dark:bg-bg-dark-tone-panel shadow-lg"},o_t={class:"flex flex-col gap-2"},a_t={class:"flex"},l_t=["title"],c_t=$t(()=>p("i",{"data-feather":"list"},null,-1)),d_t=[c_t],u_t={key:0},__t={class:"flex flex-col max-h-64"},p_t=["title"],h_t={class:"flex flex-row items-center gap-1 text-left p-2 text-sm font-medium bg-bg-dark-tone-panel dark:bg-bg-dark-tone rounded-lg hover:bg-primary dark:hover:bg-primary"},f_t={key:0,filesList:"",role:"status"},m_t=$t(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),g_t=$t(()=>p("span",{class:"sr-only"},"Loading...",-1)),E_t=[m_t,g_t],b_t=$t(()=>p("div",null,[p("i",{"data-feather":"file",class:"w-5 h-5"})],-1)),S_t=$t(()=>p("div",{class:"grow"},null,-1)),y_t={class:"flex flex-row items-center"},v_t={class:"whitespace-nowrap"},T_t=["onClick"],x_t=$t(()=>p("i",{"data-feather":"x",class:"w-5 h-5"},null,-1)),C_t=[x_t],R_t={key:1,class:"flex items-center mx-1"},A_t={class:"whitespace-nowrap flex flex-row gap-2"},w_t=$t(()=>p("p",{class:"font-bold"}," Total size: ",-1)),O_t=$t(()=>p("div",{class:"grow"},null,-1)),N_t=$t(()=>p("i",{"data-feather":"trash",class:"w-5 h-5"},null,-1)),M_t=[N_t],I_t={key:2,class:"mx-1"},D_t={class:"flex flex-row flex-grow items-center gap-2 overflow-visible"},L_t={key:0,title:"Selecting model",class:"flex flex-row flex-grow justify-end"},k_t=$t(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Selecting model...")],-1)),P_t=[k_t],U_t={key:1,class:"w-fit group relative"},F_t={class:"group w-full inline-flex absolute opacity-0 group-hover:opacity-100 transform group-hover:-translate-y-10 group-hover:translate-x-15 transition-all duration-300"},B_t={key:0,class:"group items-center flex flex-row"},G_t=["onClick"],z_t=["src","title"],V_t={class:"group items-center flex flex-row"},H_t=["src","title"],q_t={class:"w-fit group relative"},Y_t={class:"group w-full inline-flex absolute opacity-0 group-hover:opacity-100 transform group-hover:-translate-y-10 group-hover:translate-x-15 transition-all duration-300"},$_t={key:0,class:"group items-center flex flex-row"},W_t=["onClick"],K_t=["src","title"],j_t=["onClick"],Q_t=$t(()=>p("span",{class:"hidden hover:block top-3 left-9 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),X_t=[Q_t],Z_t={class:"w-fit"},J_t={class:"relative grow"},ept={class:"inline-flex justify-center rounded-full"},tpt=$t(()=>p("i",{"data-feather":"mic"},null,-1)),npt=[tpt],ipt=$t(()=>p("i",{"data-feather":"file-plus"},null,-1)),rpt=[ipt],spt=$t(()=>p("i",{"data-feather":"camera"},null,-1)),opt=[spt],apt=$t(()=>p("i",{"data-feather":"globe"},null,-1)),lpt=[apt],cpt=$t(()=>p("i",{"data-feather":"message-square"},null,-1)),dpt=$t(()=>p("span",{class:"sr-only"},"New empty User message",-1)),upt=[cpt,dpt],_pt=$t(()=>p("i",{"data-feather":"message-square"},null,-1)),ppt=$t(()=>p("span",{class:"sr-only"},"New empty message",-1)),hpt=[_pt,ppt],fpt=$t(()=>p("i",{"data-feather":"send"},null,-1)),mpt=$t(()=>p("span",{class:"sr-only"},"Send message",-1)),gpt=[fpt,mpt],Ept={key:4,title:"Waiting for reply"},bpt=$t(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Spt=[bpt];function ypt(n,e,t,i,r,s){const o=St("MountedPersonalitiesList"),a=St("MountedPersonalities"),l=St("PersonalitiesCommands"),c=St("UniversalForm");return M(),L(Xe,null,[p("div",t_t,[t.loading?(M(),L("div",n_t,[p("div",i_t,[p("button",{type:"button",class:"bg-red-500 dark:bg-red-800 hover:bg-red-600 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 dark:hover:bg-bg-dark-tone focus:outline-none dark:focus:ring-blue-800",onClick:e[0]||(e[0]=Oe((...d)=>s.stopGenerating&&s.stopGenerating(...d),["stop"]))}," Stop generating ")])])):X("",!0),p("form",null,[r_t,p("div",s_t,[p("div",o_t,[p("div",a_t,[r.filesList.length>0?(M(),L("button",{key:0,class:"mx-1 w-full text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:r.showfilesList?"Hide file list":"Show file list",type:"button",onClick:e[1]||(e[1]=Oe(d=>r.showfilesList=!r.showfilesList,["stop"]))},d_t,8,l_t)):X("",!0)]),r.filesList.length>0&&r.showfilesList==!0?(M(),L("div",u_t,[p("div",__t,[Le(Vr,{name:"list",tag:"div",class:"flex flex-col flex-grow overflow-y-auto scrollbar-thin scrollbar-track-bg-light scrollbar-thumb-bg-light-tone hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark dark:scrollbar-thumb-bg-dark-tone dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},{default:dt(()=>[(M(!0),L(Xe,null,bt(r.filesList,(d,u)=>(M(),L("div",{key:u+"-"+d.name},[p("div",{class:"m-1",title:d.name},[p("div",h_t,[r.isFileSentList[u]?X("",!0):(M(),L("div",f_t,E_t)),b_t,p("div",{class:Ke(["line-clamp-1 w-3/5",r.isFileSentList[u]?"text-green-200":"text-red-200"])},me(d.name),3),S_t,p("div",y_t,[p("p",v_t,me(s.computedFileSize(d.size)),1),p("button",{type:"button",title:"Remove item",class:"flex items-center p-0.5 text-sm rounded-sm hover:text-red-600 active:scale-75",onClick:_=>s.removeItem(d)},C_t,8,T_t)])])],8,p_t)]))),128))]),_:1})])])):X("",!0),r.filesList.length>0?(M(),L("div",R_t,[p("div",A_t,[w_t,$e(" "+me(r.totalSize)+" ("+me(r.filesList.length)+") ",1)]),O_t,p("button",{type:"button",title:"Clear all",class:"flex items-center p-0.5 text-sm rounded-sm hover:text-red-600 active:scale-75",onClick:e[2]||(e[2]=(...d)=>s.clear_files&&s.clear_files(...d))},M_t)])):X("",!0),r.showPersonalities?(M(),L("div",I_t,[Le(o,{ref:"mountedPersList",onShowPersList:s.onShowPersListFun,"on-mounted":s.onMountFun,"on-un-mounted":s.onUnmountFun,"on-remounted":n.onRemountFun,"on-talk":s.handleOnTalk,discussionPersonalities:s.allDiscussionPersonalities},null,8,["onShowPersList","on-mounted","on-un-mounted","on-remounted","on-talk","discussionPersonalities"])])):X("",!0),p("div",D_t,[r.selecting_model?(M(),L("div",L_t,P_t)):X("",!0),t.loading?X("",!0):(M(),L("div",U_t,[p("div",F_t,[(M(!0),L(Xe,null,bt(s.installedModels,(d,u)=>(M(),L("div",{class:"w-full",key:u+"-"+d.name,ref_for:!0,ref:"installedModels"},[d.name!=s.model_name?(M(),L("div",B_t,[p("button",{onClick:Oe(_=>s.setModel(d),["prevent"]),class:"w-8 h-8"},[p("img",{src:d.icon?d.icon:r.modelImgPlaceholder,onError:e[3]||(e[3]=(..._)=>r.modelImgPlaceholder&&r.modelImgPlaceholder(..._)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",title:d.name},null,40,z_t)],8,G_t)])):X("",!0)]))),128))]),p("div",V_t,[p("button",{onClick:e[5]||(e[5]=Oe(d=>s.showModelConfig(),["prevent"])),class:"w-8 h-8"},[p("img",{src:s.currentModel.icon?s.currentModel.icon:r.modelImgPlaceholder,onError:e[4]||(e[4]=(...d)=>r.modelImgPlaceholder&&r.modelImgPlaceholder(...d)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",title:s.currentModel?s.currentModel.name:"unknown"},null,40,H_t)])])])),p("div",q_t,[p("div",Y_t,[(M(!0),L(Xe,null,bt(this.$store.state.mountedPersArr,(d,u)=>(M(),L("div",{class:"w-full",key:u+"-"+d.name,ref_for:!0,ref:"mountedPersonalities"},[u!=this.$store.state.config.active_personality_id?(M(),L("div",$_t,[p("button",{onClick:Oe(_=>s.onPersonalitySelected(d),["prevent"]),class:"w-8 h-8"},[p("img",{src:r.bUrl+d.avatar,onError:e[6]||(e[6]=(..._)=>n.personalityImgPlacehodler&&n.personalityImgPlacehodler(..._)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",this.$store.state.active_personality_id==this.$store.state.personalities.indexOf(d.full_path)?"border-secondary":"border-transparent z-0"]),title:d.name},null,42,K_t)],8,W_t),p("button",{onClick:Oe(_=>s.unmountPersonality(d),["prevent"])},X_t,8,j_t)])):X("",!0)]))),128))]),Le(a,{ref:"mountedPers",onShowPersList:s.onShowPersListFun,onReady:s.onPersonalitiesReadyFun},null,8,["onShowPersList","onReady"])]),p("div",Z_t,[r.personalities_ready&&this.$store.state.mountedPersArr[this.$store.state.config.active_personality_id].commands!=""?(M(),Qt(l,{key:0,commandsList:this.$store.state.mountedPersArr[this.$store.state.config.active_personality_id].commands,sendCommand:s.sendCMDEvent,"on-show-toast-message":t.onShowToastMessage,ref:"personalityCMD"},null,8,["commandsList","sendCommand","on-show-toast-message"])):X("",!0)]),p("div",J_t,[Ae(p("textarea",{id:"chat",rows:"1","onUpdate:modelValue":e[7]||(e[7]=d=>r.message=d),title:"Hold SHIFT + ENTER to add new line",class:"inline-block no-scrollbar p-2.5 w-full text-sm text-gray-900 bg-bg-light rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-bg-dark dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Send message...",onKeydown:e[8]||(e[8]=Fo(Oe(d=>s.submitOnEnter(d),["exact"]),["enter"]))},`\r +`+n.name,4,!1)}else console.log("mounting pers");this.$emit("personalitySelected"),Ue(()=>{Ge.replace()})}},async select_personality(n){if(!n)return{status:!1,error:"no personality - select_personality"};const e=n.language===null?n.full_path:n.full_path+":"+n.language;console.log("Selecting personality ",e);const i={id:this.$store.state.config.personalities.findIndex(r=>r===e)};try{const r=await Pe.post("/select_personality",i);if(r)return this.$store.dispatch("refreshConfig").then(()=>{this.$store.dispatch("refreshPersonalitiesZoo").then(()=>{this.$store.dispatch("refreshMountedPersonalities")})}),r.data}catch(r){console.log(r.message,"select_personality - settings");return}},emitloaded(){this.$emit("loaded")},showModels(n){n.preventDefault();const e=this.$refs.modelsSelectionList;console.log(e);const t=new MouseEvent("click");e.dispatchEvent(t)},setModel(n){console.log("Setting model to "+n.name),this.selecting_model=!0,this.selectedModel=n,Pe.post("/update_setting",{setting_name:"model_name",setting_value:n.name}).then(async e=>{console.log("UPDATED"),console.log(e),await this.$store.dispatch("refreshConfig"),await this.$store.dispatch("refreshModels"),this.$store.state.toast.showToast(`Model changed to ${this.currentModel.name}`,4,!0),this.selecting_model=!1}).catch(e=>{this.$store.state.toast.showToast(`Error ${e}`,4,!0),this.selecting_model=!1})},clear_files(){Pe.get("/clear_personality_files_list").then(n=>{console.log(n),n.data.state?(this.$store.state.toast.showToast("File uploaded successfully",4,!0),this.filesList.length=0,this.isFileSentList.length=0):this.$store.state.toast.showToast("Files couldn't be removed",4,!1)})},send_file(n,e){const t=new FileReader,i=24*1024;let r=0,s=0;t.onloadend=()=>{if(t.error){console.error("Error reading file:",t.error);return}const a=t.result,l=r+a.byteLength>=n.size;He.emit("send_file_chunk",{filename:n.name,chunk:a,offset:r,isLastChunk:l,chunkIndex:s}),r+=a.byteLength,s++,l?(console.log("File sent successfully"),this.isFileSentList[this.filesList.length-1]=!0,console.log(this.isFileSentList),this.$store.state.toast.showToast("File uploaded successfully",4,!0),this.loading=!1,e()):o()};function o(){const a=n.slice(r,r+i);t.readAsArrayBuffer(a)}console.log("Uploading file"),o()},makeAnEmptyUserMessage(){this.$emit("createEmptyUserMessage")},makeAnEmptyAIMessage(){this.$emit("createEmptyAIMessage")},startSpeechRecognition(){"SpeechRecognition"in window||"webkitSpeechRecognition"in window?(this.recognition=new(window.SpeechRecognition||window.webkitSpeechRecognition),this.recognition.lang=this.$store.state.config.audio_in_language,this.recognition.interimResults=!0,this.recognition.onstart=()=>{this.isLesteningToVoice=!0,this.silenceTimer=setTimeout(()=>{this.recognition.stop()},this.silenceTimeout)},this.recognition.onresult=n=>{let e="";for(let t=n.resultIndex;t{this.recognition.stop()},this.silenceTimeout)},this.recognition.onerror=n=>{console.error("Speech recognition error:",n.error),this.isLesteningToVoice=!1,clearTimeout(this.silenceTimer)},this.recognition.onend=()=>{console.log("Speech recognition ended."),this.isLesteningToVoice=!1,clearTimeout(this.silenceTimer),this.submit()},this.recognition.start()):console.error("Speech recognition is not supported in this browser.")},onPersonalitiesReadyFun(){this.personalities_ready=!0},onShowPersListFun(n){this.showPersonalities=!this.showPersonalities},handleOnTalk(n){this.showPersonalities=!1,this.onTalk(n)},onMountFun(n){console.log("Mounting personality"),this.$refs.mountedPers.constructor()},onUnmountFun(n){console.log("Unmounting personality"),this.$refs.mountedPers.constructor()},onRemount(n){console.log("Remounting chat"),this.$refs.mountedPers.constructor()},computedFileSize(n){return Ue(()=>{Ge.replace()}),Oi(n)},removeItem(n){this.filesList=this.filesList.filter(e=>e!=n)},sendMessageEvent(n){this.filesList.length=0,this.$emit("messageSentEvent",n)},sendCMDEvent(n){this.$emit("sendCMDEvent",n)},addWebLink(){console.log("Emitting addWebLink"),this.$emit("addWebLink")},takePicture(){He.emit("take_picture"),He.on("picture_taken",()=>{Pe.get("/get_current_personality_files_list").then(n=>{this.filesList=n.data.files,this.isFileSentList=n.data.files.map(e=>!0),console.log(`Files recovered: ${this.filesList}`)})})},submitOnEnter(n){this.loading||n.which===13&&(n.preventDefault(),n.repeat||(this.sendMessageEvent(this.message),this.message=""))},submit(){this.message&&(this.sendMessageEvent(this.message),this.message="")},stopGenerating(){this.$emit("stopGenerating")},addFiles(n){console.log("Adding files");const e=[...n.target.files];let t=0;const i=()=>{if(t>=e.length){console.log(`Files_list: ${this.filesList}`);return}const r=e[t];this.filesList.push(r),this.isFileSentList.push(!1),this.send_file(r,()=>{t++,i()})};i()}},watch:{installedModels:{immediate:!0,handler(n){this.$nextTick(()=>{this.installedModels=n})}},model_name:{immediate:!0,handler(n){this.$nextTick(()=>{this.model_name=n})}},showfilesList(){Ue(()=>{Ge.replace()})},loading(n,e){Ue(()=>{Ge.replace()})},filesList:{handler(n,e){let t=0;if(n.length>0)for(let i=0;i{Ge.replace()})},activated(){Ue(()=>{Ge.replace()})}},$t=n=>(Gs("data-v-b2f77eff"),n=n(),zs(),n),s_t={class:"absolute bottom-0 min-w-96 w-full justify-center text-center p-4"},o_t={key:0,class:"flex items-center justify-center w-full"},a_t={class:"flex flex-row p-2 rounded-t-lg"},l_t=$t(()=>p("label",{for:"chat",class:"sr-only"},"Send message",-1)),c_t={class:"px-3 py-3 rounded-lg bg-bg-light-tone-panel dark:bg-bg-dark-tone-panel shadow-lg"},d_t={class:"flex flex-col gap-2"},u_t={class:"flex"},__t=["title"],p_t=$t(()=>p("i",{"data-feather":"list"},null,-1)),h_t=[p_t],f_t={key:0},m_t={class:"flex flex-col max-h-64"},g_t=["title"],E_t={class:"flex flex-row items-center gap-1 text-left p-2 text-sm font-medium bg-bg-dark-tone-panel dark:bg-bg-dark-tone rounded-lg hover:bg-primary dark:hover:bg-primary"},b_t={key:0,filesList:"",role:"status"},S_t=$t(()=>p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})],-1)),y_t=$t(()=>p("span",{class:"sr-only"},"Loading...",-1)),v_t=[S_t,y_t],T_t=$t(()=>p("div",null,[p("i",{"data-feather":"file",class:"w-5 h-5"})],-1)),x_t=$t(()=>p("div",{class:"grow"},null,-1)),C_t={class:"flex flex-row items-center"},R_t={class:"whitespace-nowrap"},A_t=["onClick"],w_t=$t(()=>p("i",{"data-feather":"x",class:"w-5 h-5"},null,-1)),O_t=[w_t],N_t={key:1,class:"flex items-center mx-1"},M_t={class:"whitespace-nowrap flex flex-row gap-2"},I_t=$t(()=>p("p",{class:"font-bold"}," Total size: ",-1)),D_t=$t(()=>p("div",{class:"grow"},null,-1)),L_t=$t(()=>p("i",{"data-feather":"trash",class:"w-5 h-5"},null,-1)),k_t=[L_t],P_t={key:2,class:"mx-1"},U_t={class:"flex flex-row flex-grow items-center gap-2 overflow-visible"},F_t={key:0,title:"Selecting model",class:"flex flex-row flex-grow justify-end"},B_t=$t(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Selecting model...")],-1)),G_t=[B_t],z_t={key:1,class:"w-fit group relative"},V_t={class:"group w-full inline-flex absolute opacity-0 group-hover:opacity-100 transform group-hover:-translate-y-10 group-hover:translate-x-15 transition-all duration-300"},H_t={key:0,class:"group items-center flex flex-row"},q_t=["onClick"],Y_t=["src","title"],$_t={class:"group items-center flex flex-row"},W_t=["src","title"],K_t={class:"w-fit group relative"},j_t={class:"group w-full inline-flex absolute opacity-0 group-hover:opacity-100 transform group-hover:-translate-y-10 group-hover:translate-x-15 transition-all duration-300"},Q_t={key:0,class:"group items-center flex flex-row"},X_t=["onClick"],Z_t=["src","title"],J_t=["onClick"],ept=$t(()=>p("span",{class:"hidden hover:block top-3 left-9 absolute active:scale-90 bg-bg-light dark:bg-bg-dark rounded-full border-2 border-transparent",title:"Unmount personality"},[p("svg",{"aria-hidden":"true",class:"w-4 h-4 text-red-600 hover:text-red-500",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[p("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})])],-1)),tpt=[ept],npt={class:"w-fit"},ipt={class:"relative grow"},rpt={class:"inline-flex justify-center rounded-full"},spt=$t(()=>p("i",{"data-feather":"mic"},null,-1)),opt=[spt],apt=$t(()=>p("i",{"data-feather":"file-plus"},null,-1)),lpt=[apt],cpt=$t(()=>p("i",{"data-feather":"camera"},null,-1)),dpt=[cpt],upt=$t(()=>p("i",{"data-feather":"globe"},null,-1)),_pt=[upt],ppt=$t(()=>p("i",{"data-feather":"message-square"},null,-1)),hpt=$t(()=>p("span",{class:"sr-only"},"New empty User message",-1)),fpt=[ppt,hpt],mpt=$t(()=>p("i",{"data-feather":"message-square"},null,-1)),gpt=$t(()=>p("span",{class:"sr-only"},"New empty message",-1)),Ept=[mpt,gpt],bpt=$t(()=>p("i",{"data-feather":"send"},null,-1)),Spt=$t(()=>p("span",{class:"sr-only"},"Send message",-1)),ypt=[bpt,Spt],vpt={key:4,title:"Waiting for reply"},Tpt=$t(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),xpt=[Tpt];function Cpt(n,e,t,i,r,s){const o=St("MountedPersonalitiesList"),a=St("MountedPersonalities"),l=St("PersonalitiesCommands"),c=St("UniversalForm");return M(),L(Xe,null,[p("div",s_t,[t.loading?(M(),L("div",o_t,[p("div",a_t,[p("button",{type:"button",class:"bg-red-500 dark:bg-red-800 hover:bg-red-600 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 dark:hover:bg-bg-dark-tone focus:outline-none dark:focus:ring-blue-800",onClick:e[0]||(e[0]=Oe((...d)=>s.stopGenerating&&s.stopGenerating(...d),["stop"]))}," Stop generating ")])])):X("",!0),p("form",null,[l_t,p("div",c_t,[p("div",d_t,[p("div",u_t,[r.filesList.length>0?(M(),L("button",{key:0,class:"mx-1 w-full text-2xl hover:text-secondary duration-75 flex justify-center hover:bg-bg-light-tone hover:dark:bg-bg-dark-tone rounded-lg",title:r.showfilesList?"Hide file list":"Show file list",type:"button",onClick:e[1]||(e[1]=Oe(d=>r.showfilesList=!r.showfilesList,["stop"]))},h_t,8,__t)):X("",!0)]),r.filesList.length>0&&r.showfilesList==!0?(M(),L("div",f_t,[p("div",m_t,[Le(Vr,{name:"list",tag:"div",class:"flex flex-col flex-grow overflow-y-auto scrollbar-thin scrollbar-track-bg-light scrollbar-thumb-bg-light-tone hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark dark:scrollbar-thumb-bg-dark-tone dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},{default:dt(()=>[(M(!0),L(Xe,null,bt(r.filesList,(d,u)=>(M(),L("div",{key:u+"-"+d.name},[p("div",{class:"m-1",title:d.name},[p("div",E_t,[r.isFileSentList[u]?X("",!0):(M(),L("div",b_t,v_t)),T_t,p("div",{class:Ke(["line-clamp-1 w-3/5",r.isFileSentList[u]?"text-green-200":"text-red-200"])},me(d.name),3),x_t,p("div",C_t,[p("p",R_t,me(s.computedFileSize(d.size)),1),p("button",{type:"button",title:"Remove item",class:"flex items-center p-0.5 text-sm rounded-sm hover:text-red-600 active:scale-75",onClick:_=>s.removeItem(d)},O_t,8,A_t)])])],8,g_t)]))),128))]),_:1})])])):X("",!0),r.filesList.length>0?(M(),L("div",N_t,[p("div",M_t,[I_t,$e(" "+me(r.totalSize)+" ("+me(r.filesList.length)+") ",1)]),D_t,p("button",{type:"button",title:"Clear all",class:"flex items-center p-0.5 text-sm rounded-sm hover:text-red-600 active:scale-75",onClick:e[2]||(e[2]=(...d)=>s.clear_files&&s.clear_files(...d))},k_t)])):X("",!0),r.showPersonalities?(M(),L("div",P_t,[Le(o,{ref:"mountedPersList",onShowPersList:s.onShowPersListFun,"on-mounted":s.onMountFun,"on-un-mounted":s.onUnmountFun,"on-remounted":n.onRemountFun,"on-talk":s.handleOnTalk,discussionPersonalities:s.allDiscussionPersonalities},null,8,["onShowPersList","on-mounted","on-un-mounted","on-remounted","on-talk","discussionPersonalities"])])):X("",!0),p("div",U_t,[r.selecting_model?(M(),L("div",F_t,G_t)):X("",!0),t.loading?X("",!0):(M(),L("div",z_t,[p("div",V_t,[(M(!0),L(Xe,null,bt(s.installedModels,(d,u)=>(M(),L("div",{class:"w-full",key:u+"-"+d.name,ref_for:!0,ref:"installedModels"},[d.name!=s.model_name?(M(),L("div",H_t,[p("button",{onClick:Oe(_=>s.setModel(d),["prevent"]),class:"w-8 h-8"},[p("img",{src:d.icon?d.icon:r.modelImgPlaceholder,onError:e[3]||(e[3]=(..._)=>r.modelImgPlaceholder&&r.modelImgPlaceholder(..._)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",title:d.name},null,40,Y_t)],8,q_t)])):X("",!0)]))),128))]),p("div",$_t,[p("button",{onClick:e[5]||(e[5]=Oe(d=>s.showModelConfig(),["prevent"])),class:"w-8 h-8"},[p("img",{src:s.currentModel.icon?s.currentModel.icon:r.modelImgPlaceholder,onError:e[4]||(e[4]=(...d)=>r.modelImgPlaceholder&&r.modelImgPlaceholder(...d)),class:"w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",title:s.currentModel?s.currentModel.name:"unknown"},null,40,W_t)])])])),p("div",K_t,[p("div",j_t,[(M(!0),L(Xe,null,bt(this.$store.state.mountedPersArr,(d,u)=>(M(),L("div",{class:"w-full",key:u+"-"+d.name,ref_for:!0,ref:"mountedPersonalities"},[u!=this.$store.state.config.active_personality_id?(M(),L("div",Q_t,[p("button",{onClick:Oe(_=>s.onPersonalitySelected(d),["prevent"]),class:"w-8 h-8"},[p("img",{src:r.bUrl+d.avatar,onError:e[6]||(e[6]=(..._)=>n.personalityImgPlacehodler&&n.personalityImgPlacehodler(..._)),class:Ke(["w-8 h-8 rounded-full object-fill text-red-700 border-2 active:scale-90 hover:border-secondary",this.$store.state.active_personality_id==this.$store.state.personalities.indexOf(d.full_path)?"border-secondary":"border-transparent z-0"]),title:d.name},null,42,Z_t)],8,X_t),p("button",{onClick:Oe(_=>s.unmountPersonality(d),["prevent"])},tpt,8,J_t)])):X("",!0)]))),128))]),Le(a,{ref:"mountedPers",onShowPersList:s.onShowPersListFun,onReady:s.onPersonalitiesReadyFun},null,8,["onShowPersList","onReady"])]),p("div",npt,[r.personalities_ready&&this.$store.state.mountedPersArr[this.$store.state.config.active_personality_id].commands!=""?(M(),Qt(l,{key:0,commandsList:this.$store.state.mountedPersArr[this.$store.state.config.active_personality_id].commands,sendCommand:s.sendCMDEvent,"on-show-toast-message":t.onShowToastMessage,ref:"personalityCMD"},null,8,["commandsList","sendCommand","on-show-toast-message"])):X("",!0)]),p("div",ipt,[Ae(p("textarea",{id:"chat",rows:"1","onUpdate:modelValue":e[7]||(e[7]=d=>r.message=d),title:"Hold SHIFT + ENTER to add new line",class:"inline-block no-scrollbar p-2.5 w-full text-sm text-gray-900 bg-bg-light rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-bg-dark dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500",placeholder:"Send message...",onKeydown:e[8]||(e[8]=Fo(Oe(d=>s.submitOnEnter(d),["exact"]),["enter"]))},`\r \r \r - `,544),[[Je,r.message]])]),p("div",ept,[t.loading?X("",!0):(M(),L("button",{key:0,type:"button",onClick:e[9]||(e[9]=(...d)=>s.startSpeechRecognition&&s.startSpeechRecognition(...d)),title:"Press and talk",class:Ke([{"text-red-500":r.isLesteningToVoice},"w-6 hover:text-secondary duration-75 active:scale-90 cursor-pointer"])},npt,2)),p("input",{type:"file",ref:"fileDialog",style:{display:"none"},onChange:e[10]||(e[10]=(...d)=>s.addFiles&&s.addFiles(...d)),multiple:""},null,544),p("button",{type:"button",onClick:e[11]||(e[11]=Oe(d=>n.$refs.fileDialog.click(),["stop"])),title:"Add files",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},rpt),p("button",{type:"button",onClick:e[12]||(e[12]=Oe((...d)=>s.takePicture&&s.takePicture(...d),["stop"])),title:"take a shot from camera",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},opt),p("button",{type:"button",onClick:e[13]||(e[13]=Oe((...d)=>s.addWebLink&&s.addWebLink(...d),["stop"])),title:"add web link",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},lpt),t.loading?X("",!0):(M(),L("button",{key:1,type:"button",onClick:e[14]||(e[14]=(...d)=>s.makeAnEmptyUserMessage&&s.makeAnEmptyUserMessage(...d)),title:"New empty user message",class:"w-6 text-blue-400 hover:text-secondary duration-75 active:scale-90"},upt)),t.loading?X("",!0):(M(),L("button",{key:2,type:"button",onClick:e[15]||(e[15]=(...d)=>s.makeAnEmptyAIMessage&&s.makeAnEmptyAIMessage(...d)),title:"New empty ai message",class:"w-6 text-red-400 hover:text-secondary duration-75 active:scale-90"},hpt)),t.loading?X("",!0):(M(),L("button",{key:3,type:"button",onClick:e[16]||(e[16]=(...d)=>s.submit&&s.submit(...d)),title:"Send",class:"w-6 hover:text-secondary duration-75 active:scale-90"},gpt)),t.loading?(M(),L("div",Ept,Spt)):X("",!0)])])])])])]),Le(c,{ref:"universalForm",class:"z-20"},null,512)],64)}const Sw=ft(e_t,[["render",ypt],["__scopeId","data-v-b2f77eff"]]),vpt={name:"WelcomeComponent",setup(){return{}}},Tpt={class:"flex flex-col text-center"},xpt=Og('
Logo

Lord of Large Language and Multimodal Systems

One tool to rule them all


Welcome

Please create a new discussion or select existing one to start

',1),Cpt=[xpt];function Rpt(n,e,t,i,r,s){return M(),L("div",Tpt,Cpt)}const yw=ft(vpt,[["render",Rpt]]);var Apt=function(){function n(e,t){t===void 0&&(t=[]),this._eventType=e,this._eventFunctions=t}return n.prototype.init=function(){var e=this;this._eventFunctions.forEach(function(t){typeof window<"u"&&window.addEventListener(e._eventType,t)})},n}(),ud=globalThis&&globalThis.__assign||function(){return ud=Object.assign||function(n){for(var e,t=1,i=arguments.length;t"u")return!1;var e=Gn(n).ShadowRoot;return n instanceof e||n instanceof ShadowRoot}function Gpt(n){var e=n.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},r=e.attributes[t]||{},s=e.elements[t];!ei(s)||!Di(s)||(Object.assign(s.style,i),Object.keys(r).forEach(function(o){var a=r[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function zpt(n){var e=n.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(i){var r=e.elements[i],s=e.attributes[i]||{},o=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:t[i]),a=o.reduce(function(l,c){return l[c]="",l},{});!ei(r)||!Di(r)||(Object.assign(r.style,a),Object.keys(s).forEach(function(l){r.removeAttribute(l)}))})}}const Vpt={name:"applyStyles",enabled:!0,phase:"write",fn:Gpt,effect:zpt,requires:["computeStyles"]};function Ni(n){return n.split("-")[0]}var As=Math.max,fd=Math.min,$o=Math.round;function Ym(){var n=navigator.userAgentData;return n!=null&&n.brands&&Array.isArray(n.brands)?n.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function ww(){return!/^((?!chrome|android).)*safari/i.test(Ym())}function Wo(n,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var i=n.getBoundingClientRect(),r=1,s=1;e&&ei(n)&&(r=n.offsetWidth>0&&$o(i.width)/n.offsetWidth||1,s=n.offsetHeight>0&&$o(i.height)/n.offsetHeight||1);var o=Ls(n)?Gn(n):window,a=o.visualViewport,l=!ww()&&t,c=(i.left+(l&&a?a.offsetLeft:0))/r,d=(i.top+(l&&a?a.offsetTop:0))/s,u=i.width/r,_=i.height/s;return{width:u,height:_,top:d,right:c+u,bottom:d+_,left:c,x:c,y:d}}function yE(n){var e=Wo(n),t=n.offsetWidth,i=n.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:n.offsetLeft,y:n.offsetTop,width:t,height:i}}function Ow(n,e){var t=e.getRootNode&&e.getRootNode();if(n.contains(e))return!0;if(t&&SE(t)){var i=e;do{if(i&&n.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function lr(n){return Gn(n).getComputedStyle(n)}function Hpt(n){return["table","td","th"].indexOf(Di(n))>=0}function Qr(n){return((Ls(n)?n.ownerDocument:n.document)||window.document).documentElement}function su(n){return Di(n)==="html"?n:n.assignedSlot||n.parentNode||(SE(n)?n.host:null)||Qr(n)}function ux(n){return!ei(n)||lr(n).position==="fixed"?null:n.offsetParent}function qpt(n){var e=/firefox/i.test(Ym()),t=/Trident/i.test(Ym());if(t&&ei(n)){var i=lr(n);if(i.position==="fixed")return null}var r=su(n);for(SE(r)&&(r=r.host);ei(r)&&["html","body"].indexOf(Di(r))<0;){var s=lr(r);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return r;r=r.parentNode}return null}function Fl(n){for(var e=Gn(n),t=ux(n);t&&Hpt(t)&&lr(t).position==="static";)t=ux(t);return t&&(Di(t)==="html"||Di(t)==="body"&&lr(t).position==="static")?e:t||qpt(n)||e}function vE(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function Za(n,e,t){return As(n,fd(e,t))}function Ypt(n,e,t){var i=Za(n,e,t);return i>t?t:i}function Nw(){return{top:0,right:0,bottom:0,left:0}}function Mw(n){return Object.assign({},Nw(),n)}function Iw(n,e){return e.reduce(function(t,i){return t[i]=n,t},{})}var $pt=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Mw(typeof e!="number"?e:Iw(e,Ul))};function Wpt(n){var e,t=n.state,i=n.name,r=n.options,s=t.elements.arrow,o=t.modifiersData.popperOffsets,a=Ni(t.placement),l=vE(a),c=[Dn,ii].indexOf(a)>=0,d=c?"height":"width";if(!(!s||!o)){var u=$pt(r.padding,t),_=yE(s),f=l==="y"?In:Dn,h=l==="y"?ni:ii,E=t.rects.reference[d]+t.rects.reference[l]-o[l]-t.rects.popper[d],g=o[l]-t.rects.reference[l],m=Fl(s),b=m?l==="y"?m.clientHeight||0:m.clientWidth||0:0,S=E/2-g/2,v=u[f],T=b-_[d]-u[h],C=b/2-_[d]/2+S,N=Za(v,C,T),x=l;t.modifiersData[i]=(e={},e[x]=N,e.centerOffset=N-C,e)}}function Kpt(n){var e=n.state,t=n.options,i=t.element,r=i===void 0?"[data-popper-arrow]":i;r!=null&&(typeof r=="string"&&(r=e.elements.popper.querySelector(r),!r)||Ow(e.elements.popper,r)&&(e.elements.arrow=r))}const jpt={name:"arrow",enabled:!0,phase:"main",fn:Wpt,effect:Kpt,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ko(n){return n.split("-")[1]}var Qpt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xpt(n,e){var t=n.x,i=n.y,r=e.devicePixelRatio||1;return{x:$o(t*r)/r||0,y:$o(i*r)/r||0}}function _x(n){var e,t=n.popper,i=n.popperRect,r=n.placement,s=n.variation,o=n.offsets,a=n.position,l=n.gpuAcceleration,c=n.adaptive,d=n.roundOffsets,u=n.isFixed,_=o.x,f=_===void 0?0:_,h=o.y,E=h===void 0?0:h,g=typeof d=="function"?d({x:f,y:E}):{x:f,y:E};f=g.x,E=g.y;var m=o.hasOwnProperty("x"),b=o.hasOwnProperty("y"),S=Dn,v=In,T=window;if(c){var C=Fl(t),N="clientHeight",x="clientWidth";if(C===Gn(t)&&(C=Qr(t),lr(C).position!=="static"&&a==="absolute"&&(N="scrollHeight",x="scrollWidth")),C=C,r===In||(r===Dn||r===ii)&&s===Sl){v=ni;var y=u&&C===T&&T.visualViewport?T.visualViewport.height:C[N];E-=y-i.height,E*=l?1:-1}if(r===Dn||(r===In||r===ni)&&s===Sl){S=ii;var R=u&&C===T&&T.visualViewport?T.visualViewport.width:C[x];f-=R-i.width,f*=l?1:-1}}var P=Object.assign({position:a},c&&Qpt),k=d===!0?Xpt({x:f,y:E},Gn(t)):{x:f,y:E};if(f=k.x,E=k.y,l){var W;return Object.assign({},P,(W={},W[v]=b?"0":"",W[S]=m?"0":"",W.transform=(T.devicePixelRatio||1)<=1?"translate("+f+"px, "+E+"px)":"translate3d("+f+"px, "+E+"px, 0)",W))}return Object.assign({},P,(e={},e[v]=b?E+"px":"",e[S]=m?f+"px":"",e.transform="",e))}function Zpt(n){var e=n.state,t=n.options,i=t.gpuAcceleration,r=i===void 0?!0:i,s=t.adaptive,o=s===void 0?!0:s,a=t.roundOffsets,l=a===void 0?!0:a,c={placement:Ni(e.placement),variation:Ko(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:r,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,_x(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,_x(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Jpt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Zpt,data:{}};var ic={passive:!0};function eht(n){var e=n.state,t=n.instance,i=n.options,r=i.scroll,s=r===void 0?!0:r,o=i.resize,a=o===void 0?!0:o,l=Gn(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(d){d.addEventListener("scroll",t.update,ic)}),a&&l.addEventListener("resize",t.update,ic),function(){s&&c.forEach(function(d){d.removeEventListener("scroll",t.update,ic)}),a&&l.removeEventListener("resize",t.update,ic)}}const tht={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:eht,data:{}};var nht={left:"right",right:"left",bottom:"top",top:"bottom"};function jc(n){return n.replace(/left|right|bottom|top/g,function(e){return nht[e]})}var iht={start:"end",end:"start"};function px(n){return n.replace(/start|end/g,function(e){return iht[e]})}function TE(n){var e=Gn(n),t=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:t,scrollTop:i}}function xE(n){return Wo(Qr(n)).left+TE(n).scrollLeft}function rht(n,e){var t=Gn(n),i=Qr(n),r=t.visualViewport,s=i.clientWidth,o=i.clientHeight,a=0,l=0;if(r){s=r.width,o=r.height;var c=ww();(c||!c&&e==="fixed")&&(a=r.offsetLeft,l=r.offsetTop)}return{width:s,height:o,x:a+xE(n),y:l}}function sht(n){var e,t=Qr(n),i=TE(n),r=(e=n.ownerDocument)==null?void 0:e.body,s=As(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),o=As(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-i.scrollLeft+xE(n),l=-i.scrollTop;return lr(r||t).direction==="rtl"&&(a+=As(t.clientWidth,r?r.clientWidth:0)-s),{width:s,height:o,x:a,y:l}}function CE(n){var e=lr(n),t=e.overflow,i=e.overflowX,r=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+i)}function Dw(n){return["html","body","#document"].indexOf(Di(n))>=0?n.ownerDocument.body:ei(n)&&CE(n)?n:Dw(su(n))}function Ja(n,e){var t;e===void 0&&(e=[]);var i=Dw(n),r=i===((t=n.ownerDocument)==null?void 0:t.body),s=Gn(i),o=r?[s].concat(s.visualViewport||[],CE(i)?i:[]):i,a=e.concat(o);return r?a:a.concat(Ja(su(o)))}function $m(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function oht(n,e){var t=Wo(n,!1,e==="fixed");return t.top=t.top+n.clientTop,t.left=t.left+n.clientLeft,t.bottom=t.top+n.clientHeight,t.right=t.left+n.clientWidth,t.width=n.clientWidth,t.height=n.clientHeight,t.x=t.left,t.y=t.top,t}function hx(n,e,t){return e===Rw?$m(rht(n,t)):Ls(e)?oht(e,t):$m(sht(Qr(n)))}function aht(n){var e=Ja(su(n)),t=["absolute","fixed"].indexOf(lr(n).position)>=0,i=t&&ei(n)?Fl(n):n;return Ls(i)?e.filter(function(r){return Ls(r)&&Ow(r,i)&&Di(r)!=="body"}):[]}function lht(n,e,t,i){var r=e==="clippingParents"?aht(n):[].concat(e),s=[].concat(r,[t]),o=s[0],a=s.reduce(function(l,c){var d=hx(n,c,i);return l.top=As(d.top,l.top),l.right=fd(d.right,l.right),l.bottom=fd(d.bottom,l.bottom),l.left=As(d.left,l.left),l},hx(n,o,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Lw(n){var e=n.reference,t=n.element,i=n.placement,r=i?Ni(i):null,s=i?Ko(i):null,o=e.x+e.width/2-t.width/2,a=e.y+e.height/2-t.height/2,l;switch(r){case In:l={x:o,y:e.y-t.height};break;case ni:l={x:o,y:e.y+e.height};break;case ii:l={x:e.x+e.width,y:a};break;case Dn:l={x:e.x-t.width,y:a};break;default:l={x:e.x,y:e.y}}var c=r?vE(r):null;if(c!=null){var d=c==="y"?"height":"width";switch(s){case Yo:l[c]=l[c]-(e[d]/2-t[d]/2);break;case Sl:l[c]=l[c]+(e[d]/2-t[d]/2);break}}return l}function yl(n,e){e===void 0&&(e={});var t=e,i=t.placement,r=i===void 0?n.placement:i,s=t.strategy,o=s===void 0?n.strategy:s,a=t.boundary,l=a===void 0?wpt:a,c=t.rootBoundary,d=c===void 0?Rw:c,u=t.elementContext,_=u===void 0?Da:u,f=t.altBoundary,h=f===void 0?!1:f,E=t.padding,g=E===void 0?0:E,m=Mw(typeof g!="number"?g:Iw(g,Ul)),b=_===Da?Opt:Da,S=n.rects.popper,v=n.elements[h?b:_],T=lht(Ls(v)?v:v.contextElement||Qr(n.elements.popper),l,d,o),C=Wo(n.elements.reference),N=Lw({reference:C,element:S,strategy:"absolute",placement:r}),x=$m(Object.assign({},S,N)),y=_===Da?x:C,R={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},P=n.modifiersData.offset;if(_===Da&&P){var k=P[r];Object.keys(R).forEach(function(W){var I=[ii,ni].indexOf(W)>=0?1:-1,V=[In,ni].indexOf(W)>=0?"y":"x";R[W]+=k[V]*I})}return R}function cht(n,e){e===void 0&&(e={});var t=e,i=t.placement,r=t.boundary,s=t.rootBoundary,o=t.padding,a=t.flipVariations,l=t.allowedAutoPlacements,c=l===void 0?Aw:l,d=Ko(i),u=d?a?dx:dx.filter(function(h){return Ko(h)===d}):Ul,_=u.filter(function(h){return c.indexOf(h)>=0});_.length===0&&(_=u);var f=_.reduce(function(h,E){return h[E]=yl(n,{placement:E,boundary:r,rootBoundary:s,padding:o})[Ni(E)],h},{});return Object.keys(f).sort(function(h,E){return f[h]-f[E]})}function dht(n){if(Ni(n)===bE)return[];var e=jc(n);return[px(n),e,px(e)]}function uht(n){var e=n.state,t=n.options,i=n.name;if(!e.modifiersData[i]._skip){for(var r=t.mainAxis,s=r===void 0?!0:r,o=t.altAxis,a=o===void 0?!0:o,l=t.fallbackPlacements,c=t.padding,d=t.boundary,u=t.rootBoundary,_=t.altBoundary,f=t.flipVariations,h=f===void 0?!0:f,E=t.allowedAutoPlacements,g=e.options.placement,m=Ni(g),b=m===g,S=l||(b||!h?[jc(g)]:dht(g)),v=[g].concat(S).reduce(function(_e,he){return _e.concat(Ni(he)===bE?cht(e,{placement:he,boundary:d,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:E}):he)},[]),T=e.rects.reference,C=e.rects.popper,N=new Map,x=!0,y=v[0],R=0;R=0,V=I?"width":"height",z=yl(e,{placement:P,boundary:d,rootBoundary:u,altBoundary:_,padding:c}),D=I?W?ii:Dn:W?ni:In;T[V]>C[V]&&(D=jc(D));var Y=jc(D),K=[];if(s&&K.push(z[k]<=0),a&&K.push(z[D]<=0,z[Y]<=0),K.every(function(_e){return _e})){y=P,x=!1;break}N.set(P,K)}if(x)for(var q=h?3:1,le=function(he){var ye=v.find(function(j){var de=N.get(j);if(de)return de.slice(0,he).every(function(Q){return Q})});if(ye)return y=ye,"break"},Z=q;Z>0;Z--){var J=le(Z);if(J==="break")break}e.placement!==y&&(e.modifiersData[i]._skip=!0,e.placement=y,e.reset=!0)}}const _ht={name:"flip",enabled:!0,phase:"main",fn:uht,requiresIfExists:["offset"],data:{_skip:!1}};function fx(n,e,t){return t===void 0&&(t={x:0,y:0}),{top:n.top-e.height-t.y,right:n.right-e.width+t.x,bottom:n.bottom-e.height+t.y,left:n.left-e.width-t.x}}function mx(n){return[In,ii,ni,Dn].some(function(e){return n[e]>=0})}function pht(n){var e=n.state,t=n.name,i=e.rects.reference,r=e.rects.popper,s=e.modifiersData.preventOverflow,o=yl(e,{elementContext:"reference"}),a=yl(e,{altBoundary:!0}),l=fx(o,i),c=fx(a,r,s),d=mx(l),u=mx(c);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":u})}const hht={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:pht};function fht(n,e,t){var i=Ni(n),r=[Dn,In].indexOf(i)>=0?-1:1,s=typeof t=="function"?t(Object.assign({},e,{placement:n})):t,o=s[0],a=s[1];return o=o||0,a=(a||0)*r,[Dn,ii].indexOf(i)>=0?{x:a,y:o}:{x:o,y:a}}function mht(n){var e=n.state,t=n.options,i=n.name,r=t.offset,s=r===void 0?[0,0]:r,o=Aw.reduce(function(d,u){return d[u]=fht(u,e.rects,s),d},{}),a=o[e.placement],l=a.x,c=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=o}const ght={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:mht};function Eht(n){var e=n.state,t=n.name;e.modifiersData[t]=Lw({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const bht={name:"popperOffsets",enabled:!0,phase:"read",fn:Eht,data:{}};function Sht(n){return n==="x"?"y":"x"}function yht(n){var e=n.state,t=n.options,i=n.name,r=t.mainAxis,s=r===void 0?!0:r,o=t.altAxis,a=o===void 0?!1:o,l=t.boundary,c=t.rootBoundary,d=t.altBoundary,u=t.padding,_=t.tether,f=_===void 0?!0:_,h=t.tetherOffset,E=h===void 0?0:h,g=yl(e,{boundary:l,rootBoundary:c,padding:u,altBoundary:d}),m=Ni(e.placement),b=Ko(e.placement),S=!b,v=vE(m),T=Sht(v),C=e.modifiersData.popperOffsets,N=e.rects.reference,x=e.rects.popper,y=typeof E=="function"?E(Object.assign({},e.rects,{placement:e.placement})):E,R=typeof y=="number"?{mainAxis:y,altAxis:y}:Object.assign({mainAxis:0,altAxis:0},y),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(C){if(s){var W,I=v==="y"?In:Dn,V=v==="y"?ni:ii,z=v==="y"?"height":"width",D=C[v],Y=D+g[I],K=D-g[V],q=f?-x[z]/2:0,le=b===Yo?N[z]:x[z],Z=b===Yo?-x[z]:-N[z],J=e.elements.arrow,_e=f&&J?yE(J):{width:0,height:0},he=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Nw(),ye=he[I],j=he[V],de=Za(0,N[z],_e[z]),Q=S?N[z]/2-q-de-ye-R.mainAxis:le-de-ye-R.mainAxis,fe=S?-N[z]/2+q+de+j+R.mainAxis:Z+de+j+R.mainAxis,we=e.elements.arrow&&Fl(e.elements.arrow),O=we?v==="y"?we.clientTop||0:we.clientLeft||0:0,F=(W=P==null?void 0:P[v])!=null?W:0,H=D+Q-F-O,se=D+fe-F,te=Za(f?fd(Y,H):Y,D,f?As(K,se):K);C[v]=te,k[v]=te-D}if(a){var be,xe=v==="x"?In:Dn,B=v==="x"?ni:ii,ae=C[T],ne=T==="y"?"height":"width",re=ae+g[xe],w=ae-g[B],A=[In,Dn].indexOf(m)!==-1,G=(be=P==null?void 0:P[T])!=null?be:0,ce=A?re:ae-N[ne]-x[ne]-G+R.altAxis,$=A?ae+N[ne]+x[ne]-G-R.altAxis:w,ee=f&&A?Ypt(ce,ae,$):Za(f?ce:re,ae,f?$:w);C[T]=ee,k[T]=ee-ae}e.modifiersData[i]=k}}const vht={name:"preventOverflow",enabled:!0,phase:"main",fn:yht,requiresIfExists:["offset"]};function Tht(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function xht(n){return n===Gn(n)||!ei(n)?TE(n):Tht(n)}function Cht(n){var e=n.getBoundingClientRect(),t=$o(e.width)/n.offsetWidth||1,i=$o(e.height)/n.offsetHeight||1;return t!==1||i!==1}function Rht(n,e,t){t===void 0&&(t=!1);var i=ei(e),r=ei(e)&&Cht(e),s=Qr(e),o=Wo(n,r,t),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!t)&&((Di(e)!=="body"||CE(s))&&(a=xht(e)),ei(e)?(l=Wo(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):s&&(l.x=xE(s))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function Aht(n){var e=new Map,t=new Set,i=[];n.forEach(function(s){e.set(s.name,s)});function r(s){t.add(s.name);var o=[].concat(s.requires||[],s.requiresIfExists||[]);o.forEach(function(a){if(!t.has(a)){var l=e.get(a);l&&r(l)}}),i.push(s)}return n.forEach(function(s){t.has(s.name)||r(s)}),i}function wht(n){var e=Aht(n);return Bpt.reduce(function(t,i){return t.concat(e.filter(function(r){return r.phase===i}))},[])}function Oht(n){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(n())})})),e}}function Nht(n){var e=n.reduce(function(t,i){var r=t[i.name];return t[i.name]=r?Object.assign({},r,i,{options:Object.assign({},r.options,i.options),data:Object.assign({},r.data,i.data)}):i,t},{});return Object.keys(e).map(function(t){return e[t]})}var gx={placement:"bottom",modifiers:[],strategy:"absolute"};function Ex(){for(var n=arguments.length,e=new Array(n),t=0;t(Gs("data-v-ea1ea661"),n=n(),zs(),n),Uht={key:0,class:"fixed top-0 left-0 w-screen h-screen flex items-center justify-center"},Fht={class:"flex flex-col text-center"},Bht={class:"flex flex-col text-center items-center"},Ght={class:"flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24"},zht=Lt(()=>p("img",{class:"w-24 animate-bounce",title:"LoLLMS WebUI",src:Vo,alt:"Logo"},null,-1)),Vht={class:"flex flex-col items-start"},Hht={class:"text-2xl"},qht=Lt(()=>p("p",{class:"text-gray-400 text-base"},"One tool to rule them all",-1)),Yht=Lt(()=>p("p",{class:"text-gray-400 text-base"},"by ParisNeo",-1)),$ht=Lt(()=>p("hr",{class:"mt-1 w-96 h-1 mx-auto my-2 md:my-2 dark:bg-bg-dark-tone-panel bg-bg-light-tone-panel border-0 rounded"},null,-1)),Wht=Lt(()=>p("p",{class:"text-2xl mb-10"},"Welcome",-1)),Kht={role:"status",class:"text-center w-full display: flex; flex-row align-items: center;"},jht={class:"text-2xl animate-pulse mt-2"},Qht=Lt(()=>p("i",{"data-feather":"chevron-right"},null,-1)),Xht=[Qht],Zht=Lt(()=>p("i",{"data-feather":"chevron-left"},null,-1)),Jht=[Zht],eft={key:0,class:"relative flex flex-col no-scrollbar shadow-lg min-w-[24rem] max-w-[24rem] bg-bg-light-tone dark:bg-bg-dark-tone"},tft={class:"sticky z-10 top-0 bg-bg-light-tone dark:bg-bg-dark-tone shadow-md"},nft={class:"flex-row p-4 flex items-center gap-3 flex-0"},ift=Lt(()=>p("i",{"data-feather":"plus"},null,-1)),rft=[ift],sft=Lt(()=>p("i",{"data-feather":"check-square"},null,-1)),oft=[sft],aft=Lt(()=>p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Reset database, remove all discussions"},[p("i",{"data-feather":"refresh-ccw"})],-1)),lft=Lt(()=>p("i",{"data-feather":"database"},null,-1)),cft=[lft],dft=Lt(()=>p("i",{"data-feather":"log-in"},null,-1)),uft=[dft],_ft={key:0,class:"dropdown"},pft=Lt(()=>p("i",{"data-feather":"search"},null,-1)),hft=[pft],fft=Lt(()=>p("i",{"data-feather":"save"},null,-1)),mft=[fft],gft={key:2,class:"flex gap-3 flex-1 items-center duration-75"},Eft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),bft=[Eft],Sft=Lt(()=>p("i",{"data-feather":"check"},null,-1)),yft=[Sft],vft=["src"],Tft=["src"],xft=["src"],Cft={key:4,title:"Loading..",class:"flex flex-row flex-grow justify-end"},Rft=Lt(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Aft=[Rft],wft={key:0,class:"flex-row items-center gap-3 flex-0 w-full"},Oft={class:"p-4 pt-2"},Nft={class:"relative"},Mft=Lt(()=>p("div",{class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},[p("div",{class:"scale-75"},[p("i",{"data-feather":"search"})])],-1)),Ift={class:"absolute inset-y-0 right-0 flex items-center pr-3"},Dft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),Lft=[Dft],kft={key:1,class:"h-px bg-bg-light p-0 mb-4 px-4 mx-4 border-0 dark:bg-bg-dark"},Pft={key:2,class:"flex flex-row flex-grow p-4 pt-0 items-center"},Uft={class:"flex flex-row flex-grow"},Fft={key:0},Bft={class:"flex flex-row"},Gft={key:0,class:"flex gap-3"},zft=Lt(()=>p("i",{"data-feather":"trash"},null,-1)),Vft=[zft],Hft={key:1,class:"flex gap-3 mx-3 flex-1 items-center justify-end group-hover:visible duration-75"},qft=Lt(()=>p("i",{"data-feather":"check"},null,-1)),Yft=[qft],$ft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),Wft=[$ft],Kft={class:"flex gap-3"},jft=Lt(()=>p("i",{"data-feather":"log-out"},null,-1)),Qft=[jft],Xft=Lt(()=>p("i",{"data-feather":"bookmark"},null,-1)),Zft=[Xft],Jft=Lt(()=>p("i",{"data-feather":"list"},null,-1)),emt=[Jft],tmt={class:"relative flex flex-row flex-grow mb-10 z-0 w-full"},nmt={key:1,class:"gap-2 py-2 my-2 hover:shadow-md hover:bg-primary-light dark:hover:bg-primary rounded-md p-2 duration-75 group cursor-pointer"},imt=Lt(()=>p("p",{class:"px-3"},"No discussions are found",-1)),rmt=[imt],smt=Lt(()=>p("div",{class:"sticky bottom-0 bg-gradient-to-t pointer-events-none from-bg-light-tone dark:from-bg-dark-tone flex flex-grow"},null,-1)),omt={class:"ml-2"},amt={key:1,class:"relative flex flex-col flex-grow w-full"},lmt={class:"container pt-4 pb-50 mb-50 w-full"},cmt=Lt(()=>p("div",null,[p("br"),p("br"),p("br"),p("br"),p("br"),p("br"),p("br")],-1)),dmt=Lt(()=>p("div",{class:"absolute w-full bottom-0 bg-transparent p-10 pt-16 bg-gradient-to-t from-bg-light dark:from-bg-dark from-5% via-bg-light dark:via-bg-dark via-10% to-transparent to-100%"},null,-1)),umt={key:0,class:"bottom-0 flex flex-row items-center justify-center"},_mt={role:"status",class:"fixed m-0 p-2 left-2 bottom-2 min-w-[24rem] max-w-[24rem] h-20 flex flex-col justify-center items-center pb-4 bg-blue-500 rounded-lg shadow-lg z-50 background-a"},pmt={class:"text-2xl animate-pulse mt-2 text-white"},hmt={setup(){},data(){return{currentDiscussion:{},host:"",progress_visibility_val:!0,progress_value:0,msgTypes:{MSG_TYPE_CHUNK:0,MSG_TYPE_FULL:1,MSG_TYPE_FULL_INVISIBLE_TO_AI:2,MSG_TYPE_FULL_INVISIBLE_TO_USER:3,MSG_TYPE_EXCEPTION:4,MSG_TYPE_WARNING:5,MSG_TYPE_INFO:6,MSG_TYPE_STEP:7,MSG_TYPE_STEP_START:8,MSG_TYPE_STEP_PROGRESS:9,MSG_TYPE_STEP_END:10,MSG_TYPE_JSON_INFOS:11,MSG_TYPE_REF:12,MSG_TYPE_CODE:13,MSG_TYPE_UI:14,MSG_TYPE_NEW_MESSAGE:15,MSG_TYPE_FINISHED_MESSAGE:17},senderTypes:{SENDER_TYPES_USER:0,SENDER_TYPES_AI:1,SENDER_TYPES_SYSTEM:2},list:[],tempList:[],currentDiscussion:{},discussionArr:[],loading:!1,filterTitle:"",filterInProgress:!1,isCreated:!1,isCheckbox:!1,isSelectAll:!1,showSaveConfirmation:!1,showBrainConfirmation:!1,showConfirmation:!1,chime:new Audio("chime_aud.wav"),showToast:!1,isSearch:!1,isDiscussionBottom:!1,personalityAvatars:[],fileList:[],database_selectorDialogVisible:!1,isDragOverDiscussion:!1,isDragOverChat:!1,panelCollapsed:!1,isOpen:!1,discussion_id:0}},methods:{add_webpage(){console.log("addWebLink received"),this.$refs.web_url_input_box.showPanel()},handleOk(){console.log("OK"),He.on("web_page_added",()=>{Pe.get("/get_current_personality_files_list").then(n=>{this.filesList=n.data.files,console.log("this.filesList",this.filesList),this.isFileSentList=n.data.files.map(e=>!0),console.log(`Files recovered: ${this.filesList}`)})}),He.emit("add_webpage",{url:this.$refs.web_url_input_box.inputText})},show_progress(n){this.progress_visibility_val=!0},hide_progress(n){this.progress_visibility_val=!1},update_progress(n){console.log("Progress update"),this.progress_value=n.value},onSettingsBinding(){try{this.isLoading=!0,Pe.get("/get_active_binding_settings").then(n=>{this.isLoading=!1,n&&(n.data&&Object.keys(n.data).length>0?this.$store.state.universalForm.showForm(n.data,"Binding settings - "+bindingEntry.binding.name,"Save changes","Cancel").then(e=>{try{Pe.post("/set_active_binding_settings",e).then(t=>{t&&t.data?(console.log("binding set with new settings",t.data),this.$store.state.toast.showToast("Binding settings updated successfully!",4,!0)):(this.$store.state.toast.showToast(`Did not get binding settings responses. + `,544),[[Je,r.message]])]),p("div",rpt,[t.loading?X("",!0):(M(),L("button",{key:0,type:"button",onClick:e[9]||(e[9]=(...d)=>s.startSpeechRecognition&&s.startSpeechRecognition(...d)),title:"Press and talk",class:Ke([{"text-red-500":r.isLesteningToVoice},"w-6 hover:text-secondary duration-75 active:scale-90 cursor-pointer"])},opt,2)),p("input",{type:"file",ref:"fileDialog",style:{display:"none"},onChange:e[10]||(e[10]=(...d)=>s.addFiles&&s.addFiles(...d)),multiple:""},null,544),p("button",{type:"button",onClick:e[11]||(e[11]=Oe(d=>n.$refs.fileDialog.click(),["stop"])),title:"Add files",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},lpt),p("button",{type:"button",onClick:e[12]||(e[12]=Oe((...d)=>s.takePicture&&s.takePicture(...d),["stop"])),title:"take a shot from camera",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},dpt),p("button",{type:"button",onClick:e[13]||(e[13]=Oe((...d)=>s.addWebLink&&s.addWebLink(...d),["stop"])),title:"add web link",class:"m-1 w-6 hover:text-secondary duration-75 active:scale-90"},_pt),t.loading?X("",!0):(M(),L("button",{key:1,type:"button",onClick:e[14]||(e[14]=(...d)=>s.makeAnEmptyUserMessage&&s.makeAnEmptyUserMessage(...d)),title:"New empty user message",class:"w-6 text-blue-400 hover:text-secondary duration-75 active:scale-90"},fpt)),t.loading?X("",!0):(M(),L("button",{key:2,type:"button",onClick:e[15]||(e[15]=(...d)=>s.makeAnEmptyAIMessage&&s.makeAnEmptyAIMessage(...d)),title:"New empty ai message",class:"w-6 text-red-400 hover:text-secondary duration-75 active:scale-90"},Ept)),t.loading?X("",!0):(M(),L("button",{key:3,type:"button",onClick:e[16]||(e[16]=(...d)=>s.submit&&s.submit(...d)),title:"Send",class:"w-6 hover:text-secondary duration-75 active:scale-90"},ypt)),t.loading?(M(),L("div",vpt,xpt)):X("",!0)])])])])])]),Le(c,{ref:"universalForm",class:"z-20"},null,512)],64)}const Sw=ft(r_t,[["render",Cpt],["__scopeId","data-v-b2f77eff"]]),Rpt={name:"WelcomeComponent",setup(){return{}}},Apt={class:"flex flex-col text-center"},wpt=Og('
Logo

Lord of Large Language and Multimodal Systems

One tool to rule them all


Welcome

Please create a new discussion or select existing one to start

',1),Opt=[wpt];function Npt(n,e,t,i,r,s){return M(),L("div",Apt,Opt)}const yw=ft(Rpt,[["render",Npt]]);var Mpt=function(){function n(e,t){t===void 0&&(t=[]),this._eventType=e,this._eventFunctions=t}return n.prototype.init=function(){var e=this;this._eventFunctions.forEach(function(t){typeof window<"u"&&window.addEventListener(e._eventType,t)})},n}(),ud=globalThis&&globalThis.__assign||function(){return ud=Object.assign||function(n){for(var e,t=1,i=arguments.length;t"u")return!1;var e=Gn(n).ShadowRoot;return n instanceof e||n instanceof ShadowRoot}function qpt(n){var e=n.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},r=e.attributes[t]||{},s=e.elements[t];!ei(s)||!Di(s)||(Object.assign(s.style,i),Object.keys(r).forEach(function(o){var a=r[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function Ypt(n){var e=n.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(i){var r=e.elements[i],s=e.attributes[i]||{},o=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:t[i]),a=o.reduce(function(l,c){return l[c]="",l},{});!ei(r)||!Di(r)||(Object.assign(r.style,a),Object.keys(s).forEach(function(l){r.removeAttribute(l)}))})}}const $pt={name:"applyStyles",enabled:!0,phase:"write",fn:qpt,effect:Ypt,requires:["computeStyles"]};function Ni(n){return n.split("-")[0]}var As=Math.max,fd=Math.min,$o=Math.round;function Ym(){var n=navigator.userAgentData;return n!=null&&n.brands&&Array.isArray(n.brands)?n.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function ww(){return!/^((?!chrome|android).)*safari/i.test(Ym())}function Wo(n,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var i=n.getBoundingClientRect(),r=1,s=1;e&&ei(n)&&(r=n.offsetWidth>0&&$o(i.width)/n.offsetWidth||1,s=n.offsetHeight>0&&$o(i.height)/n.offsetHeight||1);var o=Ls(n)?Gn(n):window,a=o.visualViewport,l=!ww()&&t,c=(i.left+(l&&a?a.offsetLeft:0))/r,d=(i.top+(l&&a?a.offsetTop:0))/s,u=i.width/r,_=i.height/s;return{width:u,height:_,top:d,right:c+u,bottom:d+_,left:c,x:c,y:d}}function yE(n){var e=Wo(n),t=n.offsetWidth,i=n.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:n.offsetLeft,y:n.offsetTop,width:t,height:i}}function Ow(n,e){var t=e.getRootNode&&e.getRootNode();if(n.contains(e))return!0;if(t&&SE(t)){var i=e;do{if(i&&n.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function lr(n){return Gn(n).getComputedStyle(n)}function Wpt(n){return["table","td","th"].indexOf(Di(n))>=0}function Qr(n){return((Ls(n)?n.ownerDocument:n.document)||window.document).documentElement}function su(n){return Di(n)==="html"?n:n.assignedSlot||n.parentNode||(SE(n)?n.host:null)||Qr(n)}function ux(n){return!ei(n)||lr(n).position==="fixed"?null:n.offsetParent}function Kpt(n){var e=/firefox/i.test(Ym()),t=/Trident/i.test(Ym());if(t&&ei(n)){var i=lr(n);if(i.position==="fixed")return null}var r=su(n);for(SE(r)&&(r=r.host);ei(r)&&["html","body"].indexOf(Di(r))<0;){var s=lr(r);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return r;r=r.parentNode}return null}function Fl(n){for(var e=Gn(n),t=ux(n);t&&Wpt(t)&&lr(t).position==="static";)t=ux(t);return t&&(Di(t)==="html"||Di(t)==="body"&&lr(t).position==="static")?e:t||Kpt(n)||e}function vE(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function Za(n,e,t){return As(n,fd(e,t))}function jpt(n,e,t){var i=Za(n,e,t);return i>t?t:i}function Nw(){return{top:0,right:0,bottom:0,left:0}}function Mw(n){return Object.assign({},Nw(),n)}function Iw(n,e){return e.reduce(function(t,i){return t[i]=n,t},{})}var Qpt=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Mw(typeof e!="number"?e:Iw(e,Ul))};function Xpt(n){var e,t=n.state,i=n.name,r=n.options,s=t.elements.arrow,o=t.modifiersData.popperOffsets,a=Ni(t.placement),l=vE(a),c=[Dn,ii].indexOf(a)>=0,d=c?"height":"width";if(!(!s||!o)){var u=Qpt(r.padding,t),_=yE(s),f=l==="y"?In:Dn,h=l==="y"?ni:ii,E=t.rects.reference[d]+t.rects.reference[l]-o[l]-t.rects.popper[d],g=o[l]-t.rects.reference[l],m=Fl(s),b=m?l==="y"?m.clientHeight||0:m.clientWidth||0:0,S=E/2-g/2,v=u[f],T=b-_[d]-u[h],C=b/2-_[d]/2+S,N=Za(v,C,T),x=l;t.modifiersData[i]=(e={},e[x]=N,e.centerOffset=N-C,e)}}function Zpt(n){var e=n.state,t=n.options,i=t.element,r=i===void 0?"[data-popper-arrow]":i;r!=null&&(typeof r=="string"&&(r=e.elements.popper.querySelector(r),!r)||Ow(e.elements.popper,r)&&(e.elements.arrow=r))}const Jpt={name:"arrow",enabled:!0,phase:"main",fn:Xpt,effect:Zpt,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ko(n){return n.split("-")[1]}var eht={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tht(n,e){var t=n.x,i=n.y,r=e.devicePixelRatio||1;return{x:$o(t*r)/r||0,y:$o(i*r)/r||0}}function _x(n){var e,t=n.popper,i=n.popperRect,r=n.placement,s=n.variation,o=n.offsets,a=n.position,l=n.gpuAcceleration,c=n.adaptive,d=n.roundOffsets,u=n.isFixed,_=o.x,f=_===void 0?0:_,h=o.y,E=h===void 0?0:h,g=typeof d=="function"?d({x:f,y:E}):{x:f,y:E};f=g.x,E=g.y;var m=o.hasOwnProperty("x"),b=o.hasOwnProperty("y"),S=Dn,v=In,T=window;if(c){var C=Fl(t),N="clientHeight",x="clientWidth";if(C===Gn(t)&&(C=Qr(t),lr(C).position!=="static"&&a==="absolute"&&(N="scrollHeight",x="scrollWidth")),C=C,r===In||(r===Dn||r===ii)&&s===Sl){v=ni;var y=u&&C===T&&T.visualViewport?T.visualViewport.height:C[N];E-=y-i.height,E*=l?1:-1}if(r===Dn||(r===In||r===ni)&&s===Sl){S=ii;var R=u&&C===T&&T.visualViewport?T.visualViewport.width:C[x];f-=R-i.width,f*=l?1:-1}}var P=Object.assign({position:a},c&&eht),k=d===!0?tht({x:f,y:E},Gn(t)):{x:f,y:E};if(f=k.x,E=k.y,l){var W;return Object.assign({},P,(W={},W[v]=b?"0":"",W[S]=m?"0":"",W.transform=(T.devicePixelRatio||1)<=1?"translate("+f+"px, "+E+"px)":"translate3d("+f+"px, "+E+"px, 0)",W))}return Object.assign({},P,(e={},e[v]=b?E+"px":"",e[S]=m?f+"px":"",e.transform="",e))}function nht(n){var e=n.state,t=n.options,i=t.gpuAcceleration,r=i===void 0?!0:i,s=t.adaptive,o=s===void 0?!0:s,a=t.roundOffsets,l=a===void 0?!0:a,c={placement:Ni(e.placement),variation:Ko(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:r,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,_x(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,_x(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const iht={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:nht,data:{}};var ic={passive:!0};function rht(n){var e=n.state,t=n.instance,i=n.options,r=i.scroll,s=r===void 0?!0:r,o=i.resize,a=o===void 0?!0:o,l=Gn(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(d){d.addEventListener("scroll",t.update,ic)}),a&&l.addEventListener("resize",t.update,ic),function(){s&&c.forEach(function(d){d.removeEventListener("scroll",t.update,ic)}),a&&l.removeEventListener("resize",t.update,ic)}}const sht={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:rht,data:{}};var oht={left:"right",right:"left",bottom:"top",top:"bottom"};function jc(n){return n.replace(/left|right|bottom|top/g,function(e){return oht[e]})}var aht={start:"end",end:"start"};function px(n){return n.replace(/start|end/g,function(e){return aht[e]})}function TE(n){var e=Gn(n),t=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:t,scrollTop:i}}function xE(n){return Wo(Qr(n)).left+TE(n).scrollLeft}function lht(n,e){var t=Gn(n),i=Qr(n),r=t.visualViewport,s=i.clientWidth,o=i.clientHeight,a=0,l=0;if(r){s=r.width,o=r.height;var c=ww();(c||!c&&e==="fixed")&&(a=r.offsetLeft,l=r.offsetTop)}return{width:s,height:o,x:a+xE(n),y:l}}function cht(n){var e,t=Qr(n),i=TE(n),r=(e=n.ownerDocument)==null?void 0:e.body,s=As(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),o=As(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-i.scrollLeft+xE(n),l=-i.scrollTop;return lr(r||t).direction==="rtl"&&(a+=As(t.clientWidth,r?r.clientWidth:0)-s),{width:s,height:o,x:a,y:l}}function CE(n){var e=lr(n),t=e.overflow,i=e.overflowX,r=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+i)}function Dw(n){return["html","body","#document"].indexOf(Di(n))>=0?n.ownerDocument.body:ei(n)&&CE(n)?n:Dw(su(n))}function Ja(n,e){var t;e===void 0&&(e=[]);var i=Dw(n),r=i===((t=n.ownerDocument)==null?void 0:t.body),s=Gn(i),o=r?[s].concat(s.visualViewport||[],CE(i)?i:[]):i,a=e.concat(o);return r?a:a.concat(Ja(su(o)))}function $m(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function dht(n,e){var t=Wo(n,!1,e==="fixed");return t.top=t.top+n.clientTop,t.left=t.left+n.clientLeft,t.bottom=t.top+n.clientHeight,t.right=t.left+n.clientWidth,t.width=n.clientWidth,t.height=n.clientHeight,t.x=t.left,t.y=t.top,t}function hx(n,e,t){return e===Rw?$m(lht(n,t)):Ls(e)?dht(e,t):$m(cht(Qr(n)))}function uht(n){var e=Ja(su(n)),t=["absolute","fixed"].indexOf(lr(n).position)>=0,i=t&&ei(n)?Fl(n):n;return Ls(i)?e.filter(function(r){return Ls(r)&&Ow(r,i)&&Di(r)!=="body"}):[]}function _ht(n,e,t,i){var r=e==="clippingParents"?uht(n):[].concat(e),s=[].concat(r,[t]),o=s[0],a=s.reduce(function(l,c){var d=hx(n,c,i);return l.top=As(d.top,l.top),l.right=fd(d.right,l.right),l.bottom=fd(d.bottom,l.bottom),l.left=As(d.left,l.left),l},hx(n,o,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Lw(n){var e=n.reference,t=n.element,i=n.placement,r=i?Ni(i):null,s=i?Ko(i):null,o=e.x+e.width/2-t.width/2,a=e.y+e.height/2-t.height/2,l;switch(r){case In:l={x:o,y:e.y-t.height};break;case ni:l={x:o,y:e.y+e.height};break;case ii:l={x:e.x+e.width,y:a};break;case Dn:l={x:e.x-t.width,y:a};break;default:l={x:e.x,y:e.y}}var c=r?vE(r):null;if(c!=null){var d=c==="y"?"height":"width";switch(s){case Yo:l[c]=l[c]-(e[d]/2-t[d]/2);break;case Sl:l[c]=l[c]+(e[d]/2-t[d]/2);break}}return l}function yl(n,e){e===void 0&&(e={});var t=e,i=t.placement,r=i===void 0?n.placement:i,s=t.strategy,o=s===void 0?n.strategy:s,a=t.boundary,l=a===void 0?Ipt:a,c=t.rootBoundary,d=c===void 0?Rw:c,u=t.elementContext,_=u===void 0?Da:u,f=t.altBoundary,h=f===void 0?!1:f,E=t.padding,g=E===void 0?0:E,m=Mw(typeof g!="number"?g:Iw(g,Ul)),b=_===Da?Dpt:Da,S=n.rects.popper,v=n.elements[h?b:_],T=_ht(Ls(v)?v:v.contextElement||Qr(n.elements.popper),l,d,o),C=Wo(n.elements.reference),N=Lw({reference:C,element:S,strategy:"absolute",placement:r}),x=$m(Object.assign({},S,N)),y=_===Da?x:C,R={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},P=n.modifiersData.offset;if(_===Da&&P){var k=P[r];Object.keys(R).forEach(function(W){var I=[ii,ni].indexOf(W)>=0?1:-1,V=[In,ni].indexOf(W)>=0?"y":"x";R[W]+=k[V]*I})}return R}function pht(n,e){e===void 0&&(e={});var t=e,i=t.placement,r=t.boundary,s=t.rootBoundary,o=t.padding,a=t.flipVariations,l=t.allowedAutoPlacements,c=l===void 0?Aw:l,d=Ko(i),u=d?a?dx:dx.filter(function(h){return Ko(h)===d}):Ul,_=u.filter(function(h){return c.indexOf(h)>=0});_.length===0&&(_=u);var f=_.reduce(function(h,E){return h[E]=yl(n,{placement:E,boundary:r,rootBoundary:s,padding:o})[Ni(E)],h},{});return Object.keys(f).sort(function(h,E){return f[h]-f[E]})}function hht(n){if(Ni(n)===bE)return[];var e=jc(n);return[px(n),e,px(e)]}function fht(n){var e=n.state,t=n.options,i=n.name;if(!e.modifiersData[i]._skip){for(var r=t.mainAxis,s=r===void 0?!0:r,o=t.altAxis,a=o===void 0?!0:o,l=t.fallbackPlacements,c=t.padding,d=t.boundary,u=t.rootBoundary,_=t.altBoundary,f=t.flipVariations,h=f===void 0?!0:f,E=t.allowedAutoPlacements,g=e.options.placement,m=Ni(g),b=m===g,S=l||(b||!h?[jc(g)]:hht(g)),v=[g].concat(S).reduce(function(_e,he){return _e.concat(Ni(he)===bE?pht(e,{placement:he,boundary:d,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:E}):he)},[]),T=e.rects.reference,C=e.rects.popper,N=new Map,x=!0,y=v[0],R=0;R=0,V=I?"width":"height",z=yl(e,{placement:P,boundary:d,rootBoundary:u,altBoundary:_,padding:c}),D=I?W?ii:Dn:W?ni:In;T[V]>C[V]&&(D=jc(D));var Y=jc(D),K=[];if(s&&K.push(z[k]<=0),a&&K.push(z[D]<=0,z[Y]<=0),K.every(function(_e){return _e})){y=P,x=!1;break}N.set(P,K)}if(x)for(var q=h?3:1,le=function(he){var ye=v.find(function(j){var de=N.get(j);if(de)return de.slice(0,he).every(function(Q){return Q})});if(ye)return y=ye,"break"},Z=q;Z>0;Z--){var J=le(Z);if(J==="break")break}e.placement!==y&&(e.modifiersData[i]._skip=!0,e.placement=y,e.reset=!0)}}const mht={name:"flip",enabled:!0,phase:"main",fn:fht,requiresIfExists:["offset"],data:{_skip:!1}};function fx(n,e,t){return t===void 0&&(t={x:0,y:0}),{top:n.top-e.height-t.y,right:n.right-e.width+t.x,bottom:n.bottom-e.height+t.y,left:n.left-e.width-t.x}}function mx(n){return[In,ii,ni,Dn].some(function(e){return n[e]>=0})}function ght(n){var e=n.state,t=n.name,i=e.rects.reference,r=e.rects.popper,s=e.modifiersData.preventOverflow,o=yl(e,{elementContext:"reference"}),a=yl(e,{altBoundary:!0}),l=fx(o,i),c=fx(a,r,s),d=mx(l),u=mx(c);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":u})}const Eht={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ght};function bht(n,e,t){var i=Ni(n),r=[Dn,In].indexOf(i)>=0?-1:1,s=typeof t=="function"?t(Object.assign({},e,{placement:n})):t,o=s[0],a=s[1];return o=o||0,a=(a||0)*r,[Dn,ii].indexOf(i)>=0?{x:a,y:o}:{x:o,y:a}}function Sht(n){var e=n.state,t=n.options,i=n.name,r=t.offset,s=r===void 0?[0,0]:r,o=Aw.reduce(function(d,u){return d[u]=bht(u,e.rects,s),d},{}),a=o[e.placement],l=a.x,c=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=o}const yht={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Sht};function vht(n){var e=n.state,t=n.name;e.modifiersData[t]=Lw({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const Tht={name:"popperOffsets",enabled:!0,phase:"read",fn:vht,data:{}};function xht(n){return n==="x"?"y":"x"}function Cht(n){var e=n.state,t=n.options,i=n.name,r=t.mainAxis,s=r===void 0?!0:r,o=t.altAxis,a=o===void 0?!1:o,l=t.boundary,c=t.rootBoundary,d=t.altBoundary,u=t.padding,_=t.tether,f=_===void 0?!0:_,h=t.tetherOffset,E=h===void 0?0:h,g=yl(e,{boundary:l,rootBoundary:c,padding:u,altBoundary:d}),m=Ni(e.placement),b=Ko(e.placement),S=!b,v=vE(m),T=xht(v),C=e.modifiersData.popperOffsets,N=e.rects.reference,x=e.rects.popper,y=typeof E=="function"?E(Object.assign({},e.rects,{placement:e.placement})):E,R=typeof y=="number"?{mainAxis:y,altAxis:y}:Object.assign({mainAxis:0,altAxis:0},y),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(C){if(s){var W,I=v==="y"?In:Dn,V=v==="y"?ni:ii,z=v==="y"?"height":"width",D=C[v],Y=D+g[I],K=D-g[V],q=f?-x[z]/2:0,le=b===Yo?N[z]:x[z],Z=b===Yo?-x[z]:-N[z],J=e.elements.arrow,_e=f&&J?yE(J):{width:0,height:0},he=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Nw(),ye=he[I],j=he[V],de=Za(0,N[z],_e[z]),Q=S?N[z]/2-q-de-ye-R.mainAxis:le-de-ye-R.mainAxis,fe=S?-N[z]/2+q+de+j+R.mainAxis:Z+de+j+R.mainAxis,we=e.elements.arrow&&Fl(e.elements.arrow),O=we?v==="y"?we.clientTop||0:we.clientLeft||0:0,F=(W=P==null?void 0:P[v])!=null?W:0,H=D+Q-F-O,se=D+fe-F,te=Za(f?fd(Y,H):Y,D,f?As(K,se):K);C[v]=te,k[v]=te-D}if(a){var be,xe=v==="x"?In:Dn,B=v==="x"?ni:ii,ae=C[T],ne=T==="y"?"height":"width",re=ae+g[xe],w=ae-g[B],A=[In,Dn].indexOf(m)!==-1,G=(be=P==null?void 0:P[T])!=null?be:0,ce=A?re:ae-N[ne]-x[ne]-G+R.altAxis,$=A?ae+N[ne]+x[ne]-G-R.altAxis:w,ee=f&&A?jpt(ce,ae,$):Za(f?ce:re,ae,f?$:w);C[T]=ee,k[T]=ee-ae}e.modifiersData[i]=k}}const Rht={name:"preventOverflow",enabled:!0,phase:"main",fn:Cht,requiresIfExists:["offset"]};function Aht(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function wht(n){return n===Gn(n)||!ei(n)?TE(n):Aht(n)}function Oht(n){var e=n.getBoundingClientRect(),t=$o(e.width)/n.offsetWidth||1,i=$o(e.height)/n.offsetHeight||1;return t!==1||i!==1}function Nht(n,e,t){t===void 0&&(t=!1);var i=ei(e),r=ei(e)&&Oht(e),s=Qr(e),o=Wo(n,r,t),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!t)&&((Di(e)!=="body"||CE(s))&&(a=wht(e)),ei(e)?(l=Wo(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):s&&(l.x=xE(s))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function Mht(n){var e=new Map,t=new Set,i=[];n.forEach(function(s){e.set(s.name,s)});function r(s){t.add(s.name);var o=[].concat(s.requires||[],s.requiresIfExists||[]);o.forEach(function(a){if(!t.has(a)){var l=e.get(a);l&&r(l)}}),i.push(s)}return n.forEach(function(s){t.has(s.name)||r(s)}),i}function Iht(n){var e=Mht(n);return Hpt.reduce(function(t,i){return t.concat(e.filter(function(r){return r.phase===i}))},[])}function Dht(n){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(n())})})),e}}function Lht(n){var e=n.reduce(function(t,i){var r=t[i.name];return t[i.name]=r?Object.assign({},r,i,{options:Object.assign({},r.options,i.options),data:Object.assign({},r.data,i.data)}):i,t},{});return Object.keys(e).map(function(t){return e[t]})}var gx={placement:"bottom",modifiers:[],strategy:"absolute"};function Ex(){for(var n=arguments.length,e=new Array(n),t=0;t(Gs("data-v-ea1ea661"),n=n(),zs(),n),zht={key:0,class:"fixed top-0 left-0 w-screen h-screen flex items-center justify-center"},Vht={class:"flex flex-col text-center"},Hht={class:"flex flex-col text-center items-center"},qht={class:"flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24"},Yht=Lt(()=>p("img",{class:"w-24 animate-bounce",title:"LoLLMS WebUI",src:Vo,alt:"Logo"},null,-1)),$ht={class:"flex flex-col items-start"},Wht={class:"text-2xl"},Kht=Lt(()=>p("p",{class:"text-gray-400 text-base"},"One tool to rule them all",-1)),jht=Lt(()=>p("p",{class:"text-gray-400 text-base"},"by ParisNeo",-1)),Qht=Lt(()=>p("hr",{class:"mt-1 w-96 h-1 mx-auto my-2 md:my-2 dark:bg-bg-dark-tone-panel bg-bg-light-tone-panel border-0 rounded"},null,-1)),Xht=Lt(()=>p("p",{class:"text-2xl mb-10"},"Welcome",-1)),Zht={role:"status",class:"text-center w-full display: flex; flex-row align-items: center;"},Jht={class:"text-2xl animate-pulse mt-2"},eft=Lt(()=>p("i",{"data-feather":"chevron-right"},null,-1)),tft=[eft],nft=Lt(()=>p("i",{"data-feather":"chevron-left"},null,-1)),ift=[nft],rft={key:0,class:"relative flex flex-col no-scrollbar shadow-lg min-w-[24rem] max-w-[24rem] bg-bg-light-tone dark:bg-bg-dark-tone"},sft={class:"sticky z-10 top-0 bg-bg-light-tone dark:bg-bg-dark-tone shadow-md"},oft={class:"flex-row p-4 flex items-center gap-3 flex-0"},aft=Lt(()=>p("i",{"data-feather":"plus"},null,-1)),lft=[aft],cft=Lt(()=>p("i",{"data-feather":"check-square"},null,-1)),dft=[cft],uft=Lt(()=>p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Reset database, remove all discussions"},[p("i",{"data-feather":"refresh-ccw"})],-1)),_ft=Lt(()=>p("i",{"data-feather":"database"},null,-1)),pft=[_ft],hft=Lt(()=>p("i",{"data-feather":"log-in"},null,-1)),fft=[hft],mft={key:0,class:"dropdown"},gft=Lt(()=>p("i",{"data-feather":"search"},null,-1)),Eft=[gft],bft=Lt(()=>p("i",{"data-feather":"save"},null,-1)),Sft=[bft],yft={key:2,class:"flex gap-3 flex-1 items-center duration-75"},vft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),Tft=[vft],xft=Lt(()=>p("i",{"data-feather":"check"},null,-1)),Cft=[xft],Rft=["src"],Aft=["src"],wft=["src"],Oft={key:4,title:"Loading..",class:"flex flex-row flex-grow justify-end"},Nft=Lt(()=>p("div",{role:"status"},[p("svg",{"aria-hidden":"true",class:"w-6 h-6 animate-spin fill-secondary",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[p("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),p("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]),p("span",{class:"sr-only"},"Loading...")],-1)),Mft=[Nft],Ift={key:0,class:"flex-row items-center gap-3 flex-0 w-full"},Dft={class:"p-4 pt-2"},Lft={class:"relative"},kft=Lt(()=>p("div",{class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},[p("div",{class:"scale-75"},[p("i",{"data-feather":"search"})])],-1)),Pft={class:"absolute inset-y-0 right-0 flex items-center pr-3"},Uft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),Fft=[Uft],Bft={key:1,class:"h-px bg-bg-light p-0 mb-4 px-4 mx-4 border-0 dark:bg-bg-dark"},Gft={key:2,class:"flex flex-row flex-grow p-4 pt-0 items-center"},zft={class:"flex flex-row flex-grow"},Vft={key:0},Hft={class:"flex flex-row"},qft={key:0,class:"flex gap-3"},Yft=Lt(()=>p("i",{"data-feather":"trash"},null,-1)),$ft=[Yft],Wft={key:1,class:"flex gap-3 mx-3 flex-1 items-center justify-end group-hover:visible duration-75"},Kft=Lt(()=>p("i",{"data-feather":"check"},null,-1)),jft=[Kft],Qft=Lt(()=>p("i",{"data-feather":"x"},null,-1)),Xft=[Qft],Zft={class:"flex gap-3"},Jft=Lt(()=>p("i",{"data-feather":"log-out"},null,-1)),emt=[Jft],tmt=Lt(()=>p("i",{"data-feather":"bookmark"},null,-1)),nmt=[tmt],imt=Lt(()=>p("i",{"data-feather":"list"},null,-1)),rmt=[imt],smt={class:"relative flex flex-row flex-grow mb-10 z-0 w-full"},omt={key:1,class:"gap-2 py-2 my-2 hover:shadow-md hover:bg-primary-light dark:hover:bg-primary rounded-md p-2 duration-75 group cursor-pointer"},amt=Lt(()=>p("p",{class:"px-3"},"No discussions are found",-1)),lmt=[amt],cmt=Lt(()=>p("div",{class:"sticky bottom-0 bg-gradient-to-t pointer-events-none from-bg-light-tone dark:from-bg-dark-tone flex flex-grow"},null,-1)),dmt={class:"ml-2"},umt={key:1,class:"relative flex flex-col flex-grow w-full"},_mt={class:"container pt-4 pb-50 mb-50 w-full"},pmt=Lt(()=>p("div",null,[p("br"),p("br"),p("br"),p("br"),p("br"),p("br"),p("br")],-1)),hmt=Lt(()=>p("div",{class:"absolute w-full bottom-0 bg-transparent p-10 pt-16 bg-gradient-to-t from-bg-light dark:from-bg-dark from-5% via-bg-light dark:via-bg-dark via-10% to-transparent to-100%"},null,-1)),fmt={key:0,class:"bottom-0 flex flex-row items-center justify-center"},mmt={role:"status",class:"fixed m-0 p-2 left-2 bottom-2 min-w-[24rem] max-w-[24rem] h-20 flex flex-col justify-center items-center pb-4 bg-blue-500 rounded-lg shadow-lg z-50 background-a"},gmt={class:"text-2xl animate-pulse mt-2 text-white"},Emt={setup(){},data(){return{currentDiscussion:{},host:"",progress_visibility_val:!0,progress_value:0,msgTypes:{MSG_TYPE_CHUNK:0,MSG_TYPE_FULL:1,MSG_TYPE_FULL_INVISIBLE_TO_AI:2,MSG_TYPE_FULL_INVISIBLE_TO_USER:3,MSG_TYPE_EXCEPTION:4,MSG_TYPE_WARNING:5,MSG_TYPE_INFO:6,MSG_TYPE_STEP:7,MSG_TYPE_STEP_START:8,MSG_TYPE_STEP_PROGRESS:9,MSG_TYPE_STEP_END:10,MSG_TYPE_JSON_INFOS:11,MSG_TYPE_REF:12,MSG_TYPE_CODE:13,MSG_TYPE_UI:14,MSG_TYPE_NEW_MESSAGE:15,MSG_TYPE_FINISHED_MESSAGE:17},senderTypes:{SENDER_TYPES_USER:0,SENDER_TYPES_AI:1,SENDER_TYPES_SYSTEM:2},list:[],tempList:[],currentDiscussion:{},discussionArr:[],loading:!1,filterTitle:"",filterInProgress:!1,isCreated:!1,isCheckbox:!1,isSelectAll:!1,showSaveConfirmation:!1,showBrainConfirmation:!1,showConfirmation:!1,chime:new Audio("chime_aud.wav"),showToast:!1,isSearch:!1,isDiscussionBottom:!1,personalityAvatars:[],fileList:[],database_selectorDialogVisible:!1,isDragOverDiscussion:!1,isDragOverChat:!1,panelCollapsed:!1,isOpen:!1,discussion_id:0}},methods:{add_webpage(){console.log("addWebLink received"),this.$refs.web_url_input_box.showPanel()},handleOk(){console.log("OK"),He.on("web_page_added",()=>{Pe.get("/get_current_personality_files_list").then(n=>{this.filesList=n.data.files,console.log("this.filesList",this.filesList),this.isFileSentList=n.data.files.map(e=>!0),console.log(`Files recovered: ${this.filesList}`)})}),He.emit("add_webpage",{url:this.$refs.web_url_input_box.inputText})},show_progress(n){this.progress_visibility_val=!0},hide_progress(n){this.progress_visibility_val=!1},update_progress(n){console.log("Progress update"),this.progress_value=n.value},onSettingsBinding(){try{this.isLoading=!0,Pe.get("/get_active_binding_settings").then(n=>{this.isLoading=!1,n&&(n.data&&Object.keys(n.data).length>0?this.$store.state.universalForm.showForm(n.data,"Binding settings - "+bindingEntry.binding.name,"Save changes","Cancel").then(e=>{try{Pe.post("/set_active_binding_settings",e).then(t=>{t&&t.data?(console.log("binding set with new settings",t.data),this.$store.state.toast.showToast("Binding settings updated successfully!",4,!0)):(this.$store.state.toast.showToast(`Did not get binding settings responses. `+t,4,!1),this.isLoading=!1)})}catch(t){this.$store.state.toast.showToast(`Did not get binding settings responses. Endpoint error: `+t.message,4,!1),this.isLoading=!1}}):(this.$store.state.toast.showToast("Binding has no settings",4,!1),this.isLoading=!1))})}catch(n){this.isLoading=!1,this.$store.state.toast.showToast("Could not open binding settings. Endpoint error: "+n.message,4,!1)}},showDatabaseSelector(){this.database_selectorDialogVisible=!0},async ondatabase_selectorDialogSelected(n){console.log("Selected:",n)},onclosedatabase_selectorDialog(){this.database_selectorDialogVisible=!1},async onvalidatedatabase_selectorChoice(n){if(this.database_selectorDialogVisible=!1,(await Pe.post("/select_database",{name:n})).status){console.log("Selected database"),this.$store.state.config=await Pe.get("/get_config"),console.log("new config loaded :",this.$store.state.config);let t=await Pe.get("/list_databases").data;console.log("New list of database: ",t),this.$store.state.databases=t,console.log("New list of database: ",this.$store.state.databases),location.reload()}},async toggleLTM(){this.$store.state.config.use_discussions_history=!this.$store.state.config.use_discussions_history,await this.applyConfiguration(),He.emit("upgrade_vectorization")},async applyConfiguration(){this.loading=!0;const n=await Pe.post("/apply_settings",{config:this.$store.state.config});this.loading=!1,n.data.status?this.$store.state.toast.showToast("Configuration changed successfully.",4,!0):this.$store.state.toast.showToast("Configuration change failed.",4,!1),Ue(()=>{Ge.replace()})},save_configuration(){this.showConfirmation=!1,Pe.post("/save_settings",{}).then(n=>{if(n)return n.status?this.$store.state.toast.showToast("Settings saved!",4,!0):this.$store.state.messageBox.showMessage("Error: Couldn't save settings!"),n.data}).catch(n=>(console.log(n.message,"save_configuration"),this.$store.state.messageBox.showMessage("Couldn't save settings!"),{status:!1}))},showToastMessage(n,e,t){console.log("sending",n),this.$store.state.toast.showToast(n,e,t)},togglePanel(){this.panelCollapsed=!this.panelCollapsed},toggleDropdown(){this.isOpen=!this.isOpen},importChatGPT(){},async api_get_req(n){try{const e=await Pe.get("/"+n);if(e)return e.data}catch(e){console.log(e.message,"api_get_req");return}},async list_discussions(){try{const n=await Pe.get("/list_discussions");if(n)return this.createDiscussionList(n.data),n.data}catch(n){return console.log("Error: Could not list discussions",n.message),[]}},load_discussion(n,e){n&&(console.log("Loading discussion",n),this.loading=!0,this.discussionArr=[],this.setDiscussionLoading(n,this.loading),He.on("discussion",t=>{this.loading=!1,this.setDiscussionLoading(n,this.loading),t&&(this.discussionArr=t.filter(i=>i.message_type==this.msgTypes.MSG_TYPE_CHUNK||i.message_type==this.msgTypes.MSG_TYPE_FULL||i.message_type==this.msgTypes.MSG_TYPE_FULL_INVISIBLE_TO_AI||i.message_type==this.msgTypes.MSG_TYPE_CODE||i.message_type==this.msgTypes.MSG_TYPE_JSON_INFOS||i.message_type==this.msgTypes.MSG_TYPE_UI),console.log("this.discussionArr"),console.log(this.discussionArr),e&&e()),He.off("discussion")}),He.emit("load_discussion",{id:n}))},recoverFiles(){console.log("Recovering files"),Pe.get("/get_current_personality_files_list").then(n=>{this.$refs.chatBox.filesList=n.data.files,this.$refs.chatBox.isFileSentList=n.data.files.map(e=>!0),console.log(`Files recovered: ${this.$refs.chatBox.filesList}`)})},new_discussion(n){try{this.loading=!0,He.on("discussion_created",e=>{He.off("discussion_created"),this.list_discussions().then(()=>{const t=this.list.findIndex(r=>r.id==e.id),i=this.list[t];this.selectDiscussion(i),this.load_discussion(e.id,()=>{this.loading=!1,Pe.get("/get_current_personality_files_list").then(r=>{console.log("Files recovered"),this.fileList=r.files}),Ue(()=>{const r=document.getElementById("dis-"+e.id);this.scrollToElement(r),console.log("Scrolling tp "+r)})})})}),console.log("new_discussion ",n),He.emit("new_discussion",{title:n})}catch(e){return console.log("Error: Could not create new discussion",e.message),{}}},async delete_discussion(n){try{n&&(this.loading=!0,this.setDiscussionLoading(n,this.loading),await Pe.post("/delete_discussion",{client_id:this.client_id,id:n}),this.loading=!1,this.setDiscussionLoading(n,this.loading))}catch(e){console.log("Error: Could not delete discussion",e.message),this.loading=!1,this.setDiscussionLoading(n,this.loading)}},async edit_title(n,e){try{if(n){this.loading=!0,this.setDiscussionLoading(n,this.loading);const t=await Pe.post("/edit_title",{client_id:this.client_id,id:n,title:e});if(this.loading=!1,this.setDiscussionLoading(n,this.loading),t.status==200){const i=this.list.findIndex(s=>s.id==n),r=this.list[i];r.title=e,this.tempList=this.list}}}catch(t){console.log("Error: Could not edit title",t.message),this.loading=!1,this.setDiscussionLoading(n,this.loading)}},async make_title(n){try{if(n){this.loading=!0,this.setDiscussionLoading(n,this.loading);const e=await Pe.post("/make_title",{client_id:this.client_id,id:n});if(console.log("Making title:",e),this.loading=!1,this.setDiscussionLoading(n,this.loading),e.status==200){const t=this.list.findIndex(r=>r.id==n),i=this.list[t];i.title=e.data.title,this.tempList=this.list}}}catch(e){console.log("Error: Could not edit title",e.message),this.loading=!1,this.setDiscussionLoading(n,this.loading)}},async delete_message(n){try{const e=await Pe.get("/delete_message",{params:{client_id:this.client_id,id:n}});if(e)return e.data}catch(e){return console.log("Error: Could delete message",e.message),{}}},async stop_gen(){try{if(He.emit("cancel_generation"),res)return res.data}catch(n){return console.log("Error: Could not stop generating",n.message),{}}},async message_rank_up(n){try{const e=await Pe.get("/message_rank_up",{params:{client_id:this.client_id,id:n}});if(e)return e.data}catch(e){return console.log("Error: Could not rank up message",e.message),{}}},async message_rank_down(n){try{const e=await Pe.get("/message_rank_down",{params:{client_id:this.client_id,id:n}});if(e)return e.data}catch(e){return console.log("Error: Could not rank down message",e.message),{}}},async edit_message(n,e){try{const t=await Pe.get("/edit_message",{params:{client_id:this.client_id,id:n,message:e}});if(t)return t.data}catch(t){return console.log("Error: Could not update message",t.message),{}}},async export_multiple_discussions(n,e){try{if(n.length>0){const t=await Pe.post("/export_multiple_discussions",{discussion_ids:n,export_format:e});if(t)return t.data}}catch(t){return console.log("Error: Could not export multiple discussions",t.message),{}}},async import_multiple_discussions(n){try{if(n.length>0){console.log("sending import",n);const e=await Pe.post("/import_multiple_discussions",{jArray:n});if(e)return console.log("import response",e.data),e.data}}catch(e){console.log("Error: Could not import multiple discussions",e.message);return}},filterDiscussions(){this.filterInProgress||(this.filterInProgress=!0,setTimeout(()=>{this.filterTitle?this.list=this.tempList.filter(n=>n.title&&n.title.includes(this.filterTitle)):this.list=this.tempList,this.filterInProgress=!1},100))},async selectDiscussion(n){if(this.isGenerating){this.$store.state.toast.showToast("You are currently generating a text. Please wait for text generation to finish or stop it before trying to select another discussion",4,!1);return}n&&(this.currentDiscussion===void 0?(this.currentDiscussion=n,this.setPageTitle(n),localStorage.setItem("selected_discussion",this.currentDiscussion.id),this.load_discussion(n.id,()=>{this.discussionArr.length>1&&(this.currentDiscussion.title===""||this.currentDiscussion.title===null)&&this.changeTitleUsingUserMSG(this.currentDiscussion.id,this.discussionArr[1].content)})):this.currentDiscussion.id!=n.id&&(console.log("item",n),console.log("this.currentDiscussion",this.currentDiscussion),this.currentDiscussion=n,console.log("this.currentDiscussion",this.currentDiscussion),this.setPageTitle(n),localStorage.setItem("selected_discussion",this.currentDiscussion.id),this.load_discussion(n.id,()=>{this.discussionArr.length>1&&(this.currentDiscussion.title===""||this.currentDiscussion.title===null)&&this.changeTitleUsingUserMSG(this.currentDiscussion.id,this.discussionArr[1].content)})),Ue(()=>{const e=document.getElementById("dis-"+this.currentDiscussion.id);this.scrollToElementInContainer(e,"leftPanel");const t=document.getElementById("messages-list");this.scrollBottom(t)}))},scrollToElement(n){n?n.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"}):console.log("Error: scrollToElement")},scrollToElementInContainer(n,e){try{const t=n.offsetTop;document.getElementById(e).scrollTo({top:t,behavior:"smooth"})}catch{}},scrollBottom(n){n?n.scrollTo({top:n.scrollHeight,behavior:"smooth"}):console.log("Error: scrollBottom")},scrollTop(n){n?n.scrollTo({top:0,behavior:"smooth"}):console.log("Error: scrollTop")},createUserMsg(n){let e={content:n.message,id:n.id,rank:0,sender:n.user,created_at:n.created_at,steps:[],html_js_s:[]};this.discussionArr.push(e),Ue(()=>{const t=document.getElementById("messages-list");this.scrollBottom(t)})},updateLastUserMsg(n){const e=this.discussionArr.indexOf(i=>i.id=n.user_id),t={binding:n.binding,content:n.message,created_at:n.created_at,type:n.type,finished_generating_at:n.finished_generating_at,id:n.user_id,model:n.model,personality:n.personality,sender:n.user,steps:[]};e!==-1&&(this.discussionArr[e]=t)},socketIOConnected(){return console.log("socketIOConnected"),this.$store.state.isConnected=!0,!0},socketIODisconnected(){return console.log("socketIOConnected"),this.currentDiscussion=null,this.$store.dispatch("refreshModels"),this.$store.state.isConnected=!1,!0},new_message(n){console.log("Making a new message"),console.log("New message",n);let e={sender:n.sender,message_type:n.message_type,sender_type:n.sender_type,content:n.content,id:n.id,discussion_id:n.discussion_id,parent_id:n.parent_id,binding:n.binding,model:n.model,personality:n.personality,created_at:n.created_at,finished_generating_at:n.finished_generating_at,rank:0,ui:n.ui,steps:[],parameters:n.parameters,metadata:n.metadata,open:n.open};console.log(e),this.discussionArr.push(e),(this.currentDiscussion.title===""||this.currentDiscussion.title===null)&&this.changeTitleUsingUserMSG(this.currentDiscussion.id,n.message),console.log("infos",n)},talk(n){this.isGenerating=!0,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),Pe.get("/get_generation_status",{}).then(e=>{e&&(e.data.status?console.log("Already generating"):(console.log("Generating message from ",e.data.status),He.emit("generate_msg_from",{id:-1}),this.discussionArr.length>0&&Number(this.discussionArr[this.discussionArr.length-1].id)+1))}).catch(e=>{console.log("Error: Could not get generation status",e)})},createEmptyUserMessage(){He.emit("create_empty_message",{type:0})},createEmptyAIMessage(){He.emit("create_empty_message",{type:1})},sendMsg(n){if(!n){this.$store.state.toast.showToast("Message contains no content!",4,!1);return}this.isGenerating=!0,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),Pe.get("/get_generation_status",{}).then(e=>{if(e)if(e.data.status)console.log("Already generating");else{He.emit("generate_msg",{prompt:n});let t=0;this.discussionArr.length>0&&(t=Number(this.discussionArr[this.discussionArr.length-1].id)+1);let i={message:n,id:t,rank:0,user:this.$store.state.config.user_name,created_at:new Date().toLocaleString(),sender:this.$store.state.config.user_name,message_type:this.msgTypes.MSG_TYPE_FULL,sender_type:this.senderTypes.SENDER_TYPES_USER,content:n,id:t,discussion_id:this.discussion_id,parent_id:t,binding:"",model:"",personality:"",created_at:new Date().toLocaleString(),finished_generating_at:new Date().toLocaleString(),rank:0,steps:[],parameters:null,metadata:[],ui:null};this.createUserMsg(i)}}).catch(e=>{console.log("Error: Could not get generation status",e)})},sendCmd(n){this.isGenerating=!0,He.emit("execute_command",{command:n,parameters:[]})},notify(n){self.isGenerating=!1,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),Ue(()=>{const e=document.getElementById("messages-list");this.scrollBottom(e)}),n.display_type==0?this.$store.state.toast.showToast(n.content,n.duration,n.notification_type):n.display_type==1?this.$store.state.messageBox.showMessage(n.content):n.display_type==2&&this.$store.state.yesNoDialog.askQuestion(n.content,"Yes","Cancel").then(e=>{He.emit("yesNoRes",{yesRes:e})}),this.chime.play()},streamMessageContent(n){if(this.discussion_id=n.discussion_id,this.setDiscussionLoading(this.discussion_id,!0),this.currentDiscussion.id==this.discussion_id){const e=this.discussionArr.findIndex(i=>i.id==n.id),t=this.discussionArr[e];if(t&&(n.message_type==this.msgTypes.MSG_TYPE_FULL||n.message_type==this.msgTypes.MSG_TYPE_FULL_INVISIBLE_TO_AI))t.content=n.content,t.finished_generating_at=n.finished_generating_at;else if(t&&n.message_type==this.msgTypes.MSG_TYPE_CHUNK)t.content+=n.content;else if(n.message_type==this.msgTypes.MSG_TYPE_STEP)t.steps.push({message:n.content,done:!0,status:!0});else if(n.message_type==this.msgTypes.MSG_TYPE_STEP_START)t.steps.push({message:n.content,done:!1,status:!0});else if(n.message_type==this.msgTypes.MSG_TYPE_STEP_END){const i=t.steps.find(r=>r.message===n.content);if(i){i.done=!0;try{console.log(n.parameters);const r=n.parameters;i.status=r.status,console.log(r)}catch(r){console.error("Error parsing JSON:",r.message)}}}else n.message_type==this.msgTypes.MSG_TYPE_JSON_INFOS?(console.log("JSON message"),console.log(n.metadata),t.metadata=n.metadata):n.message_type==this.msgTypes.MSG_TYPE_UI?(console.log("UI message"),t.ui=n.ui,console.log(t.ui)):n.message_type==this.msgTypes.MSG_TYPE_EXCEPTION&&this.$store.state.toast.showToast(n.content,5,!1)}this.$nextTick(()=>{Ge.replace()})},async changeTitleUsingUserMSG(n,e){const t=this.list.findIndex(r=>r.id==n),i=this.list[t];e&&(i.title=e,this.tempList=this.list,await this.edit_title(n,e))},async createNewDiscussion(){this.new_discussion(null)},loadLastUsedDiscussion(){console.log("Loading last discussion");const n=localStorage.getItem("selected_discussion");if(console.log("Last discussion id: ",n),n){const e=this.list.findIndex(i=>i.id==n),t=this.list[e];t&&this.selectDiscussion(t)}},onCopyPersonalityName(n){this.$store.state.toast.showToast("Copied name to clipboard!",4,!0),navigator.clipboard.writeText(n.name)},async deleteDiscussion(n){await this.delete_discussion(n),this.currentDiscussion.id==n&&(this.currentDiscussion={},this.discussionArr=[],this.setPageTitle()),this.list.splice(this.list.findIndex(e=>e.id==n),1),this.createDiscussionList(this.list)},async deleteDiscussionMulti(){const n=this.selectedDiscussions;for(let e=0;ei.id==t.id),1)}this.tempList=this.list,this.isCheckbox=!1,this.$store.state.toast.showToast("Removed ("+n.length+") items",4,!0),this.showConfirmation=!1,console.log("Multi delete done")},async deleteMessage(n){await this.delete_message(n).then(()=>{this.discussionArr.splice(this.discussionArr.findIndex(e=>e.id==n),1)}).catch(()=>{this.$store.state.toast.showToast("Could not remove message",4,!1),console.log("Error: Could not delete message")})},async editTitle(n){const e=this.list.findIndex(i=>i.id==n.id),t=this.list[e];t.title=n.title,t.loading=!0,await this.edit_title(n.id,n.title),t.loading=!1},async makeTitle(n){this.list.findIndex(e=>e.id==n.id),await this.make_title(n.id)},checkUncheckDiscussion(n,e){const t=this.list.findIndex(r=>r.id==e),i=this.list[t];i.checkBoxValue=n.target.checked,this.tempList=this.list},selectAllDiscussions(){this.isSelectAll=!this.tempList.filter(n=>n.checkBoxValue==!1).length>0;for(let n=0;n({id:t.id,title:t.title,selected:!1,loading:!1,checkBoxValue:!1})).sort(function(t,i){return i.id-t.id});this.list=e,this.tempList=e}},setDiscussionLoading(n,e){const t=this.list.findIndex(r=>r.id==n),i=this.list[t];i.loading=e},setPageTitle(n){if(n)if(n.id){const e=n.title?n.title==="untitled"?"New discussion":n.title:"New discussion";document.title="LoLLMS WebUI - "+e}else{const e=n||"Welcome";document.title="LoLLMS WebUI - "+e}else{const e=n||"Welcome";document.title="LoLLMS WebUI - "+e}},async rankUpMessage(n){await this.message_rank_up(n).then(e=>{const t=this.discussionArr[this.discussionArr.findIndex(i=>i.id==n)];t.rank=e.new_rank}).catch(()=>{this.$store.state.toast.showToast("Could not rank up message",4,!1),console.log("Error: Could not rank up message")})},async rankDownMessage(n){await this.message_rank_down(n).then(e=>{const t=this.discussionArr[this.discussionArr.findIndex(i=>i.id==n)];t.rank=e.new_rank}).catch(()=>{this.$store.state.toast.showToast("Could not rank down message",4,!1),console.log("Error: Could not rank down message")})},async updateMessage(n,e){await this.edit_message(n,e).then(()=>{const t=this.discussionArr[this.discussionArr.findIndex(i=>i.id==n)];t.content=e}).catch(()=>{this.$store.state.toast.showToast("Could not update message",4,!1),console.log("Error: Could not update message")})},resendMessage(n,e,t){Ue(()=>{Ge.replace()}),this.isGenerating=!0,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),Pe.get("/get_generation_status",{}).then(i=>{i&&(i.data.status?(this.$store.state.toast.showToast("The server is busy. Wait",4,!1),console.log("Already generating")):He.emit("generate_msg_from",{prompt:e,id:n,msg_type:t}))}).catch(i=>{console.log("Error: Could not get generation status",i)})},continueMessage(n,e){Ue(()=>{Ge.replace()}),this.isGenerating=!0,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),Pe.get("/get_generation_status",{}).then(t=>{t&&(t.data.status?console.log("Already generating"):He.emit("continue_generate_msg_from",{prompt:e,id:n}))}).catch(t=>{console.log("Error: Could not get generation status",t)})},stopGenerating(){this.stop_gen(),this.isGenerating=!1,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),console.log("Stopped generating"),Ue(()=>{const n=document.getElementById("messages-list");this.scrollBottom(n)})},finalMsgEvent(n){if(console.log("final",n),n.parent_id,this.discussion_id=n.discussion_id,this.currentDiscussion.id==this.discussion_id){const e=this.discussionArr.findIndex(t=>t.id==n.id);this.discussionArr[e].content=n.content,this.discussionArr[e].finished_generating_at=n.finished_generating_at}Ue(()=>{const e=document.getElementById("messages-list");this.scrollBottom(e)}),this.isGenerating=!1,this.setDiscussionLoading(this.currentDiscussion.id,this.isGenerating),this.chime.play()},copyToClipBoard(n){this.$store.state.toast.showToast("Copied to clipboard successfully",4,!0);let e="";n.message.binding&&(e=`Binding: ${n.message.binding}`);let t="";n.message.personality&&(t=` Personality: ${n.message.personality}`);let i="";n.created_at_parsed&&(i=` @@ -191,15 +193,15 @@ ${r} ${l}`;navigator.clipboard.writeText(c),Ue(()=>{Ge.replace()})},closeToast(){this.showToast=!1},saveJSONtoFile(n,e){e=e||"data.json";const t=document.createElement("a");t.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"text/plain"})),t.setAttribute("download",e),document.body.appendChild(t),t.click(),document.body.removeChild(t)},saveMarkdowntoFile(n,e){e=e||"data.md";const t=document.createElement("a");t.href=URL.createObjectURL(new Blob([n],{type:"text/plain"})),t.setAttribute("download",e),document.body.appendChild(t),t.click(),document.body.removeChild(t)},parseJsonObj(n){try{return JSON.parse(n)}catch(e){return this.$store.state.toast.showToast(`Could not parse JSON. `+e.message,4,!1),null}},async parseJsonFile(n){return new Promise((e,t)=>{const i=new FileReader;i.onload=r=>e(this.parseJsonObj(r.target.result)),i.onerror=r=>t(r),i.readAsText(n)})},async exportDiscussionsAsMarkdown(){const n=this.list.filter(e=>e.checkBoxValue==!0).map(e=>e.id);if(n.length>0){console.log("export",n);let e=new Date;const t=e.getFullYear(),i=(e.getMonth()+1).toString().padStart(2,"0"),r=e.getDate().toString().padStart(2,"0"),s=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0"),a=e.getSeconds().toString().padStart(2,"0"),c="discussions_export_"+(t+"."+i+"."+r+"."+s+o+a)+".md";this.loading=!0;const d=await this.export_multiple_discussions(n,"markdown");d?(this.saveMarkdowntoFile(d,c),this.$store.state.toast.showToast("Successfully exported",4,!0),this.isCheckbox=!1):this.$store.state.toast.showToast("Failed to export discussions",4,!1),this.loading=!1}},async exportDiscussionsAsJson(){const n=this.list.filter(e=>e.checkBoxValue==!0).map(e=>e.id);if(n.length>0){console.log("export",n);let e=new Date;const t=e.getFullYear(),i=(e.getMonth()+1).toString().padStart(2,"0"),r=e.getDate().toString().padStart(2,"0"),s=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0"),a=e.getSeconds().toString().padStart(2,"0"),c="discussions_export_"+(t+"."+i+"."+r+"."+s+o+a)+".json";this.loading=!0;const d=await this.export_multiple_discussions(n,"json");d?(this.saveJSONtoFile(d,c),this.$store.state.toast.showToast("Successfully exported",4,!0),this.isCheckbox=!1):this.$store.state.toast.showToast("Failed to export discussions",4,!1),this.loading=!1}},async importDiscussions(n){const e=await this.parseJsonFile(n.target.files[0]);await this.import_multiple_discussions(e)?(this.$store.state.toast.showToast("Successfully imported ("+e.length+")",4,!0),await this.list_discussions()):this.$store.state.toast.showToast("Failed to import discussions",4,!1)},async getPersonalityAvatars(){for(;this.$store.state.personalities===null;)await new Promise(e=>setTimeout(e,100));let n=this.$store.state.personalities;this.personalityAvatars=n.map(e=>({name:e.name,avatar:e.avatar}))},getAvatar(n){if(n.toLowerCase().trim()==this.$store.state.config.user_name.toLowerCase().trim())return"user_infos/"+this.$store.state.config.user_avatar;const e=this.personalityAvatars.findIndex(i=>i.name===n),t=this.personalityAvatars[e];if(t)return console.log("Avatar",t.avatar),t.avatar},setFileListChat(n){try{this.$refs.chatBox.fileList=this.$refs.chatBox.fileList.concat(n)}catch(e){this.$store.state.toast.showToast(`Failed to set filelist in chatbox -`+e.message,4,!1)}this.isDragOverChat=!1},async setFileListDiscussion(n){if(n.length>1){this.$store.state.toast.showToast("Failed to import discussions. Too many files",4,!1);return}const e=await this.parseJsonFile(n[0]);await this.import_multiple_discussions(e)?(this.$store.state.toast.showToast("Successfully imported ("+e.length+")",4,!0),await this.list_discussions()):this.$store.state.toast.showToast("Failed to import discussions",4,!1),this.isDragOverDiscussion=!1}},async created(){for(this.$nextTick(()=>{Ge.replace()}),He.on("disucssion_renamed",n=>{console.log("Received new title",n.discussion_id,n.title);const e=this.list.findIndex(i=>i.id==n.discussion_id),t=this.list[e];t.title=n.title}),He.onclose=n=>{console.log("WebSocket connection closed:",n.code,n.reason),this.socketIODisconnected()},He.on("connect_error",n=>{n.message==="ERR_CONNECTION_REFUSED"?console.error("Connection refused. The server is not available."):console.error("Connection error:",n),this.$store.state.isConnected=!1}),He.onerror=n=>{console.log("WebSocket connection error:",n.code,n.reason),this.socketIODisconnected(),He.disconnect()},He.on("connected",this.socketIOConnected),He.on("disconnected",this.socketIODisconnected),console.log("Added events"),console.log("Waiting to be ready");this.$store.state.ready===!1;)await new Promise(n=>setTimeout(n,100)),console.log(this.$store.state.ready);console.log("Ready"),this.setPageTitle(),await this.list_discussions(),this.loadLastUsedDiscussion(),He.on("show_progress",this.show_progress),He.on("hide_progress",this.hide_progress),He.on("update_progress",this.update_progress),He.on("notification",this.notify),He.on("new_message",this.new_message),He.on("update_message",this.streamMessageContent),He.on("close_message",this.finalMsgEvent),He.onopen=()=>{console.log("WebSocket connection established."),this.currentDiscussion!=null&&(this.setPageTitle(item),localStorage.setItem("selected_discussion",this.currentDiscussion.id),this.load_discussion(item.id,()=>{this.discussionArr.length>1&&(this.currentDiscussion.title===""||this.currentDiscussion.title===null)&&this.changeTitleUsingUserMSG(this.currentDiscussion.id,this.discussionArr[1].content)}))},this.isCreated=!0},async mounted(){let n="http://localhost:9600/";try{n=await(await fetch("/get_server_address")).text(),n.includes("<")&&(console.log("Server address not found"),n="http://localhost:9600/"),console.log(`Server address: ${n}`)}catch(e){console.error("Error fetching server address:",e),n="http://localhost:9600/"}this.host=`${n}`,Pe.defaults.baseURL=n,this.$nextTick(()=>{Ge.replace()})},async activated(){for(;this.isReady===!1;)await new Promise(n=>setTimeout(n,100));await this.getPersonalityAvatars(),console.log("Avatars found:",this.personalityAvatars),this.isCreated&&Ue(()=>{const n=document.getElementById("messages-list");this.scrollBottom(n)})},components:{Discussion:Yg,Message:bw,ChatBox:Sw,WelcomeComponent:yw,ChoiceDialog:pE,ProgressBar:ml,InputBox:Ew},watch:{progress_visibility_val(n){console.log("progress_visibility changed")},filterTitle(n){n==""&&(this.filterInProgress=!0,this.list=this.tempList,this.filterInProgress=!1)},isCheckbox(n){Ue(()=>{Ge.replace()}),n||(this.isSelectAll=!1)},socketConnected(n){console.log("Websocket connected (watch)",n)},showConfirmation(){Ue(()=>{Ge.replace()})},isSearch(){Ue(()=>{Ge.replace()})}},computed:{progress_visibility:{get(){return self.progress_visibility_val}},version_info:{get(){return this.$store.state.version!=null&&this.$store.state.version!="unknown"?" v"+this.$store.state.version:""}},loading_infos:{get(){return this.$store.state.loading_infos}},loading_progress:{get(){return this.$store.state.loading_progress}},isModelOk:{get(){return this.$store.state.isModelOk},set(n){this.$store.state.isModelOk=n}},isGenerating:{get(){return this.$store.state.isGenerating},set(n){this.$store.state.isGenerating=n}},formatted_database_name(){const n=this.$store.state.config.db_path;return n.slice(0,n.length-3)},UseDiscussionHistory(){return this.$store.state.config.use_discussions_history},isReady:{get(){return this.$store.state.ready}},databases(){return this.$store.state.databases},client_id(){return He.id},isReady(){return console.log("verify ready",this.isCreated),this.isCreated},showPanel(){return this.$store.state.ready&&!this.panelCollapsed},socketConnected(){return console.log(" --- > Websocket connected"),this.$store.commit("setIsConnected",!0),!0},socketDisconnected(){return this.$store.commit("setIsConnected",!1),console.log(" --- > Websocket disconnected"),!0},selectedDiscussions(){return Ue(()=>{Ge.replace()}),this.list.filter(n=>n.checkBoxValue==!0)}}},fmt=Object.assign(hmt,{__name:"DiscussionsView",setup(n){return Rl(()=>{zw()}),Pe.defaults.baseURL="/",(e,t)=>(M(),L(Xe,null,[Le(Po,{name:"fade-and-fly"},{default:dt(()=>[e.isReady?X("",!0):(M(),L("div",Uht,[p("div",Fht,[p("div",Bht,[p("div",Ght,[zht,p("div",Vht,[p("p",Hht,"Lord of Large Language and Multimodal Systems "+me(e.version_info),1),qht,Yht])]),$ht,Wht,p("div",Kht,[Le(ml,{ref:"loading_progress",progress:e.loading_progress},null,8,["progress"]),p("p",jht,me(e.loading_infos)+" ...",1)])])])]))]),_:1}),e.isReady?(M(),L("button",{key:0,onClick:t[0]||(t[0]=(...i)=>e.togglePanel&&e.togglePanel(...i)),class:"absolute top-0 left-0 z-50 p-2 m-2 bg-white rounded-full shadow-md bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-primary-light dark:hover:bg-primary"},[Ae(p("div",null,Xht,512),[[At,e.panelCollapsed]]),Ae(p("div",null,Jht,512),[[At,!e.panelCollapsed]])])):X("",!0),Le(Po,{name:"slide-right"},{default:dt(()=>[e.showPanel?(M(),L("div",eft,[p("div",{id:"leftPanel",class:"flex flex-col flex-grow overflow-y-scroll no-scrollbar",onDragover:t[22]||(t[22]=Oe(i=>e.setDropZoneDiscussion(),["stop","prevent"]))},[p("div",tft,[p("div",nft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Create new discussion",type:"button",onClick:t[1]||(t[1]=i=>e.createNewDiscussion())},rft),p("button",{class:Ke(["text-2xl hover:text-secondary duration-75 active:scale-90",e.isCheckbox?"text-secondary":""]),title:"Edit discussion list",type:"button",onClick:t[2]||(t[2]=i=>e.isCheckbox=!e.isCheckbox)},oft,2),aft,p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Export database",type:"button",onClick:t[3]||(t[3]=Oe(i=>e.database_selectorDialogVisible=!0,["stop"]))},cft),p("input",{type:"file",ref:"fileDialog",style:{display:"none"},onChange:t[4]||(t[4]=(...i)=>e.importDiscussions&&e.importDiscussions(...i))},null,544),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Import discussions",type:"button",onClick:t[5]||(t[5]=Oe(i=>e.$refs.fileDialog.click(),["stop"]))},uft),e.isOpen?(M(),L("div",_ft,[p("button",{onClick:t[6]||(t[6]=(...i)=>e.importDiscussions&&e.importDiscussions(...i))},"LOLLMS"),p("button",{onClick:t[7]||(t[7]=(...i)=>e.importChatGPT&&e.importChatGPT(...i))},"ChatGPT")])):X("",!0),p("button",{class:Ke(["text-2xl hover:text-secondary duration-75 active:scale-90",e.isSearch?"text-secondary":""]),title:"Filter discussions",type:"button",onClick:t[8]||(t[8]=i=>e.isSearch=!e.isSearch)},hft,2),e.showSaveConfirmation?X("",!0):(M(),L("button",{key:1,title:"Save configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:t[9]||(t[9]=i=>e.showSaveConfirmation=!0)},mft)),e.showSaveConfirmation?(M(),L("div",gft,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel",type:"button",onClick:t[10]||(t[10]=Oe(i=>e.showSaveConfirmation=!1,["stop"]))},bft),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm save changes",type:"button",onClick:t[11]||(t[11]=Oe(i=>e.save_configuration(),["stop"]))},yft)])):X("",!0),e.showBrainConfirmation?X("",!0):(M(),L("button",{key:3,title:"Activate Long term Memory",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:t[12]||(t[12]=i=>e.toggleLTM())},[e.loading?(M(),L("img",{key:0,src:bn(kht),width:"25",height:"25",class:"animate-pulse",title:"Applying config, please stand by..."},null,8,vft)):e.UseDiscussionHistory?(M(),L("img",{key:1,src:bn(Pht),width:"25",height:"25"},null,8,Tft)):(M(),L("img",{key:2,src:bn(Lht),width:"25",height:"25"},null,8,xft))])),e.loading?(M(),L("div",Cft,Aft)):X("",!0)]),e.isSearch?(M(),L("div",wft,[p("div",Oft,[p("div",Nft,[Mft,p("div",Ift,[p("div",{class:Ke(["hover:text-secondary duration-75 active:scale-90",e.filterTitle?"visible":"invisible"]),title:"Clear",onClick:t[13]||(t[13]=i=>e.filterTitle="")},Lft,2)]),Ae(p("input",{type:"search",id:"default-search",class:"block w-full p-2 pl-10 pr-10 text-sm border border-gray-300 rounded-lg bg-bg-light focus:ring-secondary focus:border-secondary dark:bg-bg-dark dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-secondary dark:focus:border-secondary",placeholder:"Search...",title:"Filter discussions by title","onUpdate:modelValue":t[14]||(t[14]=i=>e.filterTitle=i),onInput:t[15]||(t[15]=i=>e.filterDiscussions())},null,544),[[Je,e.filterTitle]])])])])):X("",!0),e.isCheckbox?(M(),L("hr",kft)):X("",!0),e.isCheckbox?(M(),L("div",Pft,[p("div",Uft,[e.selectedDiscussions.length>0?(M(),L("p",Fft,"Selected: "+me(e.selectedDiscussions.length),1)):X("",!0)]),p("div",Bft,[e.selectedDiscussions.length>0?(M(),L("div",Gft,[e.showConfirmation?X("",!0):(M(),L("button",{key:0,class:"flex mx-3 flex-1 text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Remove selected",type:"button",onClick:t[16]||(t[16]=Oe(i=>e.showConfirmation=!0,["stop"]))},Vft)),e.showConfirmation?(M(),L("div",Hft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm removal",type:"button",onClick:t[17]||(t[17]=Oe((...i)=>e.deleteDiscussionMulti&&e.deleteDiscussionMulti(...i),["stop"]))},Yft),p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel removal",type:"button",onClick:t[18]||(t[18]=Oe(i=>e.showConfirmation=!1,["stop"]))},Wft)])):X("",!0)])):X("",!0),p("div",Kft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Export selected to a json file",type:"button",onClick:t[19]||(t[19]=Oe((...i)=>e.exportDiscussionsAsJson&&e.exportDiscussionsAsJson(...i),["stop"]))},Qft),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Export selected to a martkdown file",type:"button",onClick:t[20]||(t[20]=Oe((...i)=>e.exportDiscussionsAsMarkdown&&e.exportDiscussionsAsMarkdown(...i),["stop"]))},Zft),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Select All",type:"button",onClick:t[21]||(t[21]=Oe((...i)=>e.selectAllDiscussions&&e.selectAllDiscussions(...i),["stop"]))},emt)])])])):X("",!0)]),p("div",tmt,[p("div",{class:Ke(["mx-4 flex flex-col flex-grow w-full",e.isDragOverDiscussion?"pointer-events-none":""])},[p("div",{id:"dis-list",class:Ke([e.filterInProgress?"opacity-20 pointer-events-none":"","flex flex-col flex-grow w-full"])},[e.list.length>0?(M(),Qt(Vr,{key:0,name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(e.list,(i,r)=>(M(),Qt(Yg,{key:i.id,id:i.id,title:i.title,selected:e.currentDiscussion.id==i.id,loading:i.loading,isCheckbox:e.isCheckbox,checkBoxValue:i.checkBoxValue,onSelect:s=>e.selectDiscussion(i),onDelete:s=>e.deleteDiscussion(i.id),onEditTitle:e.editTitle,onMakeTitle:e.makeTitle,onChecked:e.checkUncheckDiscussion},null,8,["id","title","selected","loading","isCheckbox","checkBoxValue","onSelect","onDelete","onEditTitle","onMakeTitle","onChecked"]))),128))]),_:1})):X("",!0),e.list.length<1?(M(),L("div",nmt,rmt)):X("",!0),smt],2)],2)])],32),p("div",{class:"absolute bottom-0 left-0 w-full bg-blue-200 dark:bg-blue-800 text-white py-2 cursor-pointer hover:text-green-500",onClick:t[23]||(t[23]=(...i)=>e.showDatabaseSelector&&e.showDatabaseSelector(...i))},[p("p",omt,"Current database: "+me(e.formatted_database_name),1)])])):X("",!0)]),_:1}),e.isReady?(M(),L("div",amt,[p("div",{id:"messages-list",class:Ke(["w-full z-0 flex flex-col flex-grow overflow-y-auto scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",e.isDragOverChat?"pointer-events-none":""])},[p("div",lmt,[e.discussionArr.length>0?(M(),Qt(Vr,{key:0,name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(e.discussionArr,(i,r)=>(M(),Qt(bw,{key:i.id,message:i,id:"msg-"+i.id,host:e.host,ref_for:!0,ref:"messages",onCopy:e.copyToClipBoard,onDelete:e.deleteMessage,onRankUp:e.rankUpMessage,onRankDown:e.rankDownMessage,onUpdateMessage:e.updateMessage,onResendMessage:e.resendMessage,onContinueMessage:e.continueMessage,avatar:e.getAvatar(i.sender)},null,8,["message","id","host","onCopy","onDelete","onRankUp","onRankDown","onUpdateMessage","onResendMessage","onContinueMessage","avatar"]))),128))]),_:1})):X("",!0),e.currentDiscussion.id?X("",!0):(M(),Qt(yw,{key:1})),cmt]),dmt,e.currentDiscussion.id?(M(),L("div",umt,[Le(Sw,{ref:"chatBox",loading:e.isGenerating,discussionList:e.discussionArr,"on-show-toast-message":e.showToastMessage,"on-talk":e.talk,onPersonalitySelected:e.recoverFiles,onMessageSentEvent:e.sendMsg,onSendCMDEvent:e.sendCmd,onAddWebLink:e.add_webpage,onCreateEmptyUserMessage:e.createEmptyUserMessage,onCreateEmptyAIMessage:e.createEmptyAIMessage,onStopGenerating:e.stopGenerating,onLoaded:e.recoverFiles},null,8,["loading","discussionList","on-show-toast-message","on-talk","onPersonalitySelected","onMessageSentEvent","onSendCMDEvent","onAddWebLink","onCreateEmptyUserMessage","onCreateEmptyAIMessage","onStopGenerating","onLoaded"])])):X("",!0)],2)])):X("",!0),Le(pE,{reference:"database_selector",class:"z-20",show:e.database_selectorDialogVisible,choices:e.databases,onChoiceSelected:e.ondatabase_selectorDialogSelected,onCloseDialog:e.onclosedatabase_selectorDialog,onChoiceValidated:e.onvalidatedatabase_selectorChoice},null,8,["show","choices","onChoiceSelected","onCloseDialog","onChoiceValidated"]),Ae(p("div",_mt,[Le(ml,{ref:"progress",progress:e.progress_value,class:"w-full h-4"},null,8,["progress"]),p("p",pmt,me(e.loading_infos)+" ...",1)],512),[[At,e.progress_visibility]]),Le(Ew,{"prompt-text":"Enter the url to the page to use as discussion support",onOk:e.handleOk,ref:"web_url_input_box"},null,8,["onOk"])],64))}}),mmt=ft(fmt,[["__scopeId","data-v-ea1ea661"]]);/** +`+e.message,4,!1)}this.isDragOverChat=!1},async setFileListDiscussion(n){if(n.length>1){this.$store.state.toast.showToast("Failed to import discussions. Too many files",4,!1);return}const e=await this.parseJsonFile(n[0]);await this.import_multiple_discussions(e)?(this.$store.state.toast.showToast("Successfully imported ("+e.length+")",4,!0),await this.list_discussions()):this.$store.state.toast.showToast("Failed to import discussions",4,!1),this.isDragOverDiscussion=!1}},async created(){for(this.$nextTick(()=>{Ge.replace()}),He.on("disucssion_renamed",n=>{console.log("Received new title",n.discussion_id,n.title);const e=this.list.findIndex(i=>i.id==n.discussion_id),t=this.list[e];t.title=n.title}),He.onclose=n=>{console.log("WebSocket connection closed:",n.code,n.reason),this.socketIODisconnected()},He.on("connect_error",n=>{n.message==="ERR_CONNECTION_REFUSED"?console.error("Connection refused. The server is not available."):console.error("Connection error:",n),this.$store.state.isConnected=!1}),He.onerror=n=>{console.log("WebSocket connection error:",n.code,n.reason),this.socketIODisconnected(),He.disconnect()},He.on("connected",this.socketIOConnected),He.on("disconnected",this.socketIODisconnected),console.log("Added events"),console.log("Waiting to be ready");this.$store.state.ready===!1;)await new Promise(n=>setTimeout(n,100)),console.log(this.$store.state.ready);console.log("Ready"),this.setPageTitle(),await this.list_discussions(),this.loadLastUsedDiscussion(),He.on("show_progress",this.show_progress),He.on("hide_progress",this.hide_progress),He.on("update_progress",this.update_progress),He.on("notification",this.notify),He.on("new_message",this.new_message),He.on("update_message",this.streamMessageContent),He.on("close_message",this.finalMsgEvent),He.onopen=()=>{console.log("WebSocket connection established."),this.currentDiscussion!=null&&(this.setPageTitle(item),localStorage.setItem("selected_discussion",this.currentDiscussion.id),this.load_discussion(item.id,()=>{this.discussionArr.length>1&&(this.currentDiscussion.title===""||this.currentDiscussion.title===null)&&this.changeTitleUsingUserMSG(this.currentDiscussion.id,this.discussionArr[1].content)}))},this.isCreated=!0},async mounted(){let n="http://localhost:9600/";try{n=await(await fetch("/get_server_address")).text(),n.includes("<")&&(console.log("Server address not found"),n="http://localhost:9600/"),console.log(`Server address: ${n}`)}catch(e){console.error("Error fetching server address:",e),n="http://localhost:9600/"}this.host=`${n}`,Pe.defaults.baseURL=n,this.$nextTick(()=>{Ge.replace()})},async activated(){for(;this.isReady===!1;)await new Promise(n=>setTimeout(n,100));await this.getPersonalityAvatars(),console.log("Avatars found:",this.personalityAvatars),this.isCreated&&Ue(()=>{const n=document.getElementById("messages-list");this.scrollBottom(n)})},components:{Discussion:Yg,Message:bw,ChatBox:Sw,WelcomeComponent:yw,ChoiceDialog:pE,ProgressBar:ml,InputBox:Ew},watch:{progress_visibility_val(n){console.log("progress_visibility changed")},filterTitle(n){n==""&&(this.filterInProgress=!0,this.list=this.tempList,this.filterInProgress=!1)},isCheckbox(n){Ue(()=>{Ge.replace()}),n||(this.isSelectAll=!1)},socketConnected(n){console.log("Websocket connected (watch)",n)},showConfirmation(){Ue(()=>{Ge.replace()})},isSearch(){Ue(()=>{Ge.replace()})}},computed:{progress_visibility:{get(){return self.progress_visibility_val}},version_info:{get(){return this.$store.state.version!=null&&this.$store.state.version!="unknown"?" v"+this.$store.state.version:""}},loading_infos:{get(){return this.$store.state.loading_infos}},loading_progress:{get(){return this.$store.state.loading_progress}},isModelOk:{get(){return this.$store.state.isModelOk},set(n){this.$store.state.isModelOk=n}},isGenerating:{get(){return this.$store.state.isGenerating},set(n){this.$store.state.isGenerating=n}},formatted_database_name(){const n=this.$store.state.config.db_path;return n.slice(0,n.length-3)},UseDiscussionHistory(){return this.$store.state.config.use_discussions_history},isReady:{get(){return this.$store.state.ready}},databases(){return this.$store.state.databases},client_id(){return He.id},isReady(){return console.log("verify ready",this.isCreated),this.isCreated},showPanel(){return this.$store.state.ready&&!this.panelCollapsed},socketConnected(){return console.log(" --- > Websocket connected"),this.$store.commit("setIsConnected",!0),!0},socketDisconnected(){return this.$store.commit("setIsConnected",!1),console.log(" --- > Websocket disconnected"),!0},selectedDiscussions(){return Ue(()=>{Ge.replace()}),this.list.filter(n=>n.checkBoxValue==!0)}}},bmt=Object.assign(Emt,{__name:"DiscussionsView",setup(n){return Rl(()=>{zw()}),Pe.defaults.baseURL="/",(e,t)=>(M(),L(Xe,null,[Le(Po,{name:"fade-and-fly"},{default:dt(()=>[e.isReady?X("",!0):(M(),L("div",zht,[p("div",Vht,[p("div",Hht,[p("div",qht,[Yht,p("div",$ht,[p("p",Wht,"Lord of Large Language and Multimodal Systems "+me(e.version_info),1),Kht,jht])]),Qht,Xht,p("div",Zht,[Le(ml,{ref:"loading_progress",progress:e.loading_progress},null,8,["progress"]),p("p",Jht,me(e.loading_infos)+" ...",1)])])])]))]),_:1}),e.isReady?(M(),L("button",{key:0,onClick:t[0]||(t[0]=(...i)=>e.togglePanel&&e.togglePanel(...i)),class:"absolute top-0 left-0 z-50 p-2 m-2 bg-white rounded-full shadow-md bg-bg-light-tone dark:bg-bg-dark-tone hover:bg-primary-light dark:hover:bg-primary"},[Ae(p("div",null,tft,512),[[At,e.panelCollapsed]]),Ae(p("div",null,ift,512),[[At,!e.panelCollapsed]])])):X("",!0),Le(Po,{name:"slide-right"},{default:dt(()=>[e.showPanel?(M(),L("div",rft,[p("div",{id:"leftPanel",class:"flex flex-col flex-grow overflow-y-scroll no-scrollbar",onDragover:t[22]||(t[22]=Oe(i=>e.setDropZoneDiscussion(),["stop","prevent"]))},[p("div",sft,[p("div",oft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Create new discussion",type:"button",onClick:t[1]||(t[1]=i=>e.createNewDiscussion())},lft),p("button",{class:Ke(["text-2xl hover:text-secondary duration-75 active:scale-90",e.isCheckbox?"text-secondary":""]),title:"Edit discussion list",type:"button",onClick:t[2]||(t[2]=i=>e.isCheckbox=!e.isCheckbox)},dft,2),uft,p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Export database",type:"button",onClick:t[3]||(t[3]=Oe(i=>e.database_selectorDialogVisible=!0,["stop"]))},pft),p("input",{type:"file",ref:"fileDialog",style:{display:"none"},onChange:t[4]||(t[4]=(...i)=>e.importDiscussions&&e.importDiscussions(...i))},null,544),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Import discussions",type:"button",onClick:t[5]||(t[5]=Oe(i=>e.$refs.fileDialog.click(),["stop"]))},fft),e.isOpen?(M(),L("div",mft,[p("button",{onClick:t[6]||(t[6]=(...i)=>e.importDiscussions&&e.importDiscussions(...i))},"LOLLMS"),p("button",{onClick:t[7]||(t[7]=(...i)=>e.importChatGPT&&e.importChatGPT(...i))},"ChatGPT")])):X("",!0),p("button",{class:Ke(["text-2xl hover:text-secondary duration-75 active:scale-90",e.isSearch?"text-secondary":""]),title:"Filter discussions",type:"button",onClick:t[8]||(t[8]=i=>e.isSearch=!e.isSearch)},Eft,2),e.showSaveConfirmation?X("",!0):(M(),L("button",{key:1,title:"Save configuration",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:t[9]||(t[9]=i=>e.showSaveConfirmation=!0)},Sft)),e.showSaveConfirmation?(M(),L("div",yft,[p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel",type:"button",onClick:t[10]||(t[10]=Oe(i=>e.showSaveConfirmation=!1,["stop"]))},Tft),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm save changes",type:"button",onClick:t[11]||(t[11]=Oe(i=>e.save_configuration(),["stop"]))},Cft)])):X("",!0),e.showBrainConfirmation?X("",!0):(M(),L("button",{key:3,title:"Activate Long term Memory",class:"text-2xl hover:text-secondary duration-75 active:scale-90",onClick:t[12]||(t[12]=i=>e.toggleLTM())},[e.loading?(M(),L("img",{key:0,src:bn(Bht),width:"25",height:"25",class:"animate-pulse",title:"Applying config, please stand by..."},null,8,Rft)):e.UseDiscussionHistory?(M(),L("img",{key:1,src:bn(Ght),width:"25",height:"25"},null,8,Aft)):(M(),L("img",{key:2,src:bn(Fht),width:"25",height:"25"},null,8,wft))])),e.loading?(M(),L("div",Oft,Mft)):X("",!0)]),e.isSearch?(M(),L("div",Ift,[p("div",Dft,[p("div",Lft,[kft,p("div",Pft,[p("div",{class:Ke(["hover:text-secondary duration-75 active:scale-90",e.filterTitle?"visible":"invisible"]),title:"Clear",onClick:t[13]||(t[13]=i=>e.filterTitle="")},Fft,2)]),Ae(p("input",{type:"search",id:"default-search",class:"block w-full p-2 pl-10 pr-10 text-sm border border-gray-300 rounded-lg bg-bg-light focus:ring-secondary focus:border-secondary dark:bg-bg-dark dark:border-gray-600 dark:placeholder-gray-400 dark:focus:ring-secondary dark:focus:border-secondary",placeholder:"Search...",title:"Filter discussions by title","onUpdate:modelValue":t[14]||(t[14]=i=>e.filterTitle=i),onInput:t[15]||(t[15]=i=>e.filterDiscussions())},null,544),[[Je,e.filterTitle]])])])])):X("",!0),e.isCheckbox?(M(),L("hr",Bft)):X("",!0),e.isCheckbox?(M(),L("div",Gft,[p("div",zft,[e.selectedDiscussions.length>0?(M(),L("p",Vft,"Selected: "+me(e.selectedDiscussions.length),1)):X("",!0)]),p("div",Hft,[e.selectedDiscussions.length>0?(M(),L("div",qft,[e.showConfirmation?X("",!0):(M(),L("button",{key:0,class:"flex mx-3 flex-1 text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Remove selected",type:"button",onClick:t[16]||(t[16]=Oe(i=>e.showConfirmation=!0,["stop"]))},$ft)),e.showConfirmation?(M(),L("div",Wft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Confirm removal",type:"button",onClick:t[17]||(t[17]=Oe((...i)=>e.deleteDiscussionMulti&&e.deleteDiscussionMulti(...i),["stop"]))},jft),p("button",{class:"text-2xl hover:text-red-600 duration-75 active:scale-90",title:"Cancel removal",type:"button",onClick:t[18]||(t[18]=Oe(i=>e.showConfirmation=!1,["stop"]))},Xft)])):X("",!0)])):X("",!0),p("div",Zft,[p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Export selected to a json file",type:"button",onClick:t[19]||(t[19]=Oe((...i)=>e.exportDiscussionsAsJson&&e.exportDiscussionsAsJson(...i),["stop"]))},emt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90",title:"Export selected to a martkdown file",type:"button",onClick:t[20]||(t[20]=Oe((...i)=>e.exportDiscussionsAsMarkdown&&e.exportDiscussionsAsMarkdown(...i),["stop"]))},nmt),p("button",{class:"text-2xl hover:text-secondary duration-75 active:scale-90",title:"Select All",type:"button",onClick:t[21]||(t[21]=Oe((...i)=>e.selectAllDiscussions&&e.selectAllDiscussions(...i),["stop"]))},rmt)])])])):X("",!0)]),p("div",smt,[p("div",{class:Ke(["mx-4 flex flex-col flex-grow w-full",e.isDragOverDiscussion?"pointer-events-none":""])},[p("div",{id:"dis-list",class:Ke([e.filterInProgress?"opacity-20 pointer-events-none":"","flex flex-col flex-grow w-full"])},[e.list.length>0?(M(),Qt(Vr,{key:0,name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(e.list,(i,r)=>(M(),Qt(Yg,{key:i.id,id:i.id,title:i.title,selected:e.currentDiscussion.id==i.id,loading:i.loading,isCheckbox:e.isCheckbox,checkBoxValue:i.checkBoxValue,onSelect:s=>e.selectDiscussion(i),onDelete:s=>e.deleteDiscussion(i.id),onEditTitle:e.editTitle,onMakeTitle:e.makeTitle,onChecked:e.checkUncheckDiscussion},null,8,["id","title","selected","loading","isCheckbox","checkBoxValue","onSelect","onDelete","onEditTitle","onMakeTitle","onChecked"]))),128))]),_:1})):X("",!0),e.list.length<1?(M(),L("div",omt,lmt)):X("",!0),cmt],2)],2)])],32),p("div",{class:"absolute bottom-0 left-0 w-full bg-blue-200 dark:bg-blue-800 text-white py-2 cursor-pointer hover:text-green-500",onClick:t[23]||(t[23]=(...i)=>e.showDatabaseSelector&&e.showDatabaseSelector(...i))},[p("p",dmt,"Current database: "+me(e.formatted_database_name),1)])])):X("",!0)]),_:1}),e.isReady?(M(),L("div",umt,[p("div",{id:"messages-list",class:Ke(["w-full z-0 flex flex-col flex-grow overflow-y-auto scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary",e.isDragOverChat?"pointer-events-none":""])},[p("div",_mt,[e.discussionArr.length>0?(M(),Qt(Vr,{key:0,name:"list"},{default:dt(()=>[(M(!0),L(Xe,null,bt(e.discussionArr,(i,r)=>(M(),Qt(bw,{key:i.id,message:i,id:"msg-"+i.id,host:e.host,ref_for:!0,ref:"messages",onCopy:e.copyToClipBoard,onDelete:e.deleteMessage,onRankUp:e.rankUpMessage,onRankDown:e.rankDownMessage,onUpdateMessage:e.updateMessage,onResendMessage:e.resendMessage,onContinueMessage:e.continueMessage,avatar:e.getAvatar(i.sender)},null,8,["message","id","host","onCopy","onDelete","onRankUp","onRankDown","onUpdateMessage","onResendMessage","onContinueMessage","avatar"]))),128))]),_:1})):X("",!0),e.currentDiscussion.id?X("",!0):(M(),Qt(yw,{key:1})),pmt]),hmt,e.currentDiscussion.id?(M(),L("div",fmt,[Le(Sw,{ref:"chatBox",loading:e.isGenerating,discussionList:e.discussionArr,"on-show-toast-message":e.showToastMessage,"on-talk":e.talk,onPersonalitySelected:e.recoverFiles,onMessageSentEvent:e.sendMsg,onSendCMDEvent:e.sendCmd,onAddWebLink:e.add_webpage,onCreateEmptyUserMessage:e.createEmptyUserMessage,onCreateEmptyAIMessage:e.createEmptyAIMessage,onStopGenerating:e.stopGenerating,onLoaded:e.recoverFiles},null,8,["loading","discussionList","on-show-toast-message","on-talk","onPersonalitySelected","onMessageSentEvent","onSendCMDEvent","onAddWebLink","onCreateEmptyUserMessage","onCreateEmptyAIMessage","onStopGenerating","onLoaded"])])):X("",!0)],2)])):X("",!0),Le(pE,{reference:"database_selector",class:"z-20",show:e.database_selectorDialogVisible,choices:e.databases,onChoiceSelected:e.ondatabase_selectorDialogSelected,onCloseDialog:e.onclosedatabase_selectorDialog,onChoiceValidated:e.onvalidatedatabase_selectorChoice},null,8,["show","choices","onChoiceSelected","onCloseDialog","onChoiceValidated"]),Ae(p("div",mmt,[Le(ml,{ref:"progress",progress:e.progress_value,class:"w-full h-4"},null,8,["progress"]),p("p",gmt,me(e.loading_infos)+" ...",1)],512),[[At,e.progress_visibility]]),Le(Ew,{"prompt-text":"Enter the url to the page to use as discussion support",onOk:e.handleOk,ref:"web_url_input_box"},null,8,["onOk"])],64))}}),Smt=ft(bmt,[["__scopeId","data-v-ea1ea661"]]);/** * @license * Copyright 2010-2023 Three.js Authors * SPDX-License-Identifier: MIT - */const LE="159",gmt=0,Sx=1,Emt=2,Vw=1,bmt=2,Zi=3,cr=0,Ln=1,xi=2,Hr=0,No=1,yx=2,vx=3,Tx=4,Smt=5,bs=100,ymt=101,vmt=102,xx=103,Cx=104,Tmt=200,xmt=201,Cmt=202,Rmt=203,jm=204,Qm=205,Amt=206,wmt=207,Omt=208,Nmt=209,Mmt=210,Imt=211,Dmt=212,Lmt=213,kmt=214,Pmt=0,Umt=1,Fmt=2,yd=3,Bmt=4,Gmt=5,zmt=6,Vmt=7,kE=0,Hmt=1,qmt=2,qr=0,Ymt=1,$mt=2,Wmt=3,Kmt=4,jmt=5,Rx="attached",Qmt="detached",Hw=300,jo=301,Qo=302,Xm=303,Zm=304,ou=306,Xo=1e3,Kn=1001,vd=1002,an=1003,Jm=1004,Qc=1005,Mn=1006,qw=1007,ks=1008,Yr=1009,Xmt=1010,Zmt=1011,PE=1012,Yw=1013,Ur=1014,tr=1015,vl=1016,$w=1017,Ww=1018,ws=1020,Jmt=1021,jn=1023,egt=1024,tgt=1025,Os=1026,Zo=1027,ngt=1028,Kw=1029,igt=1030,jw=1031,Qw=1033,wf=33776,Of=33777,Nf=33778,Mf=33779,Ax=35840,wx=35841,Ox=35842,Nx=35843,Xw=36196,Mx=37492,Ix=37496,Dx=37808,Lx=37809,kx=37810,Px=37811,Ux=37812,Fx=37813,Bx=37814,Gx=37815,zx=37816,Vx=37817,Hx=37818,qx=37819,Yx=37820,$x=37821,If=36492,Wx=36494,Kx=36495,rgt=36283,jx=36284,Qx=36285,Xx=36286,Tl=2300,Jo=2301,Df=2302,Zx=2400,Jx=2401,eC=2402,sgt=2500,ogt=0,Zw=1,eg=2,Jw=3e3,Ns=3001,agt=3200,lgt=3201,UE=0,cgt=1,Qn="",Kt="srgb",hn="srgb-linear",FE="display-p3",au="display-p3-linear",Td="linear",Gt="srgb",xd="rec709",Cd="p3",Js=7680,tC=519,dgt=512,ugt=513,_gt=514,eO=515,pgt=516,hgt=517,fgt=518,mgt=519,tg=35044,nC="300 es",ng=1035,nr=2e3,Rd=2001;class fa{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let s=0,o=r.length;s>8&255]+mn[n>>16&255]+mn[n>>24&255]+"-"+mn[e&255]+mn[e>>8&255]+"-"+mn[e>>16&15|64]+mn[e>>24&255]+"-"+mn[t&63|128]+mn[t>>8&255]+"-"+mn[t>>16&255]+mn[t>>24&255]+mn[i&255]+mn[i>>8&255]+mn[i>>16&255]+mn[i>>24&255]).toLowerCase()}function En(n,e,t){return Math.max(e,Math.min(t,n))}function BE(n,e){return(n%e+e)%e}function ggt(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function Egt(n,e,t){return n!==e?(t-n)/(e-n):0}function nl(n,e,t){return(1-t)*n+t*e}function bgt(n,e,t,i){return nl(n,e,1-Math.exp(-t*i))}function Sgt(n,e=1){return e-Math.abs(BE(n,e*2)-e)}function ygt(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function vgt(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function Tgt(n,e){return n+Math.floor(Math.random()*(e-n+1))}function xgt(n,e){return n+Math.random()*(e-n)}function Cgt(n){return n*(.5-Math.random())}function Rgt(n){n!==void 0&&(iC=n);let e=iC+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Agt(n){return n*tl}function wgt(n){return n*ea}function ig(n){return(n&n-1)===0&&n!==0}function Ogt(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Ad(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Ngt(n,e,t,i,r){const s=Math.cos,o=Math.sin,a=s(t/2),l=o(t/2),c=s((e+i)/2),d=o((e+i)/2),u=s((e-i)/2),_=o((e-i)/2),f=s((i-e)/2),h=o((i-e)/2);switch(r){case"XYX":n.set(a*d,l*u,l*_,a*c);break;case"YZY":n.set(l*_,a*d,l*u,a*c);break;case"ZXZ":n.set(l*u,l*_,a*d,a*c);break;case"XZX":n.set(a*d,l*h,l*f,a*c);break;case"YXY":n.set(l*f,a*d,l*h,a*c);break;case"ZYZ":n.set(l*h,l*f,a*d,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function Ci(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function kt(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const Mgt={DEG2RAD:tl,RAD2DEG:ea,generateUUID:fi,clamp:En,euclideanModulo:BE,mapLinear:ggt,inverseLerp:Egt,lerp:nl,damp:bgt,pingpong:Sgt,smoothstep:ygt,smootherstep:vgt,randInt:Tgt,randFloat:xgt,randFloatSpread:Cgt,seededRandom:Rgt,degToRad:Agt,radToDeg:wgt,isPowerOfTwo:ig,ceilPowerOfTwo:Ogt,floorPowerOfTwo:Ad,setQuaternionFromProperEuler:Ngt,normalize:kt,denormalize:Ci};class vt{constructor(e=0,t=0){vt.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(En(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),r=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*i-o*r+e.x,this.y=s*r+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class mt{constructor(e,t,i,r,s,o,a,l,c){mt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c)}set(e,t,i,r,s,o,a,l,c){const d=this.elements;return d[0]=e,d[1]=r,d[2]=a,d[3]=t,d[4]=s,d[5]=l,d[6]=i,d[7]=o,d[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],d=i[4],u=i[7],_=i[2],f=i[5],h=i[8],E=r[0],g=r[3],m=r[6],b=r[1],S=r[4],v=r[7],T=r[2],C=r[5],N=r[8];return s[0]=o*E+a*b+l*T,s[3]=o*g+a*S+l*C,s[6]=o*m+a*v+l*N,s[1]=c*E+d*b+u*T,s[4]=c*g+d*S+u*C,s[7]=c*m+d*v+u*N,s[2]=_*E+f*b+h*T,s[5]=_*g+f*S+h*C,s[8]=_*m+f*v+h*N,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8];return t*o*d-t*a*c-i*s*d+i*a*l+r*s*c-r*o*l}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],u=d*o-a*c,_=a*l-d*s,f=c*s-o*l,h=t*u+i*_+r*f;if(h===0)return this.set(0,0,0,0,0,0,0,0,0);const E=1/h;return e[0]=u*E,e[1]=(r*c-d*i)*E,e[2]=(a*i-r*o)*E,e[3]=_*E,e[4]=(d*t-r*l)*E,e[5]=(r*s-a*t)*E,e[6]=f*E,e[7]=(i*l-c*t)*E,e[8]=(o*t-i*s)*E,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,o,a){const l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-r*c,r*l,-r*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Lf.makeScale(e,t)),this}rotate(e){return this.premultiply(Lf.makeRotation(-e)),this}translate(e,t){return this.premultiply(Lf.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Lf=new mt;function tO(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function xl(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function Igt(){const n=xl("canvas");return n.style.display="block",n}const rC={};function il(n){n in rC||(rC[n]=!0,console.warn(n))}const sC=new mt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),oC=new mt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),cc={[hn]:{transfer:Td,primaries:xd,toReference:n=>n,fromReference:n=>n},[Kt]:{transfer:Gt,primaries:xd,toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[au]:{transfer:Td,primaries:Cd,toReference:n=>n.applyMatrix3(oC),fromReference:n=>n.applyMatrix3(sC)},[FE]:{transfer:Gt,primaries:Cd,toReference:n=>n.convertSRGBToLinear().applyMatrix3(oC),fromReference:n=>n.applyMatrix3(sC).convertLinearToSRGB()}},Dgt=new Set([hn,au]),Nt={enabled:!0,_workingColorSpace:hn,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(n){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!n},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!Dgt.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=cc[e].toReference,r=cc[t].fromReference;return r(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this._workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this._workingColorSpace)},getPrimaries:function(n){return cc[n].primaries},getTransfer:function(n){return n===Qn?Td:cc[n].transfer}};function Mo(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function kf(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let eo;class nO{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{eo===void 0&&(eo=xl("canvas")),eo.width=e.width,eo.height=e.height;const i=eo.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=eo}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=xl("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Hw)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Xo:e.x=e.x-Math.floor(e.x);break;case Kn:e.x=e.x<0?0:1;break;case vd:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Xo:e.y=e.y-Math.floor(e.y);break;case Kn:e.y=e.y<0?0:1;break;case vd:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return il("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===Kt?Ns:Jw}set encoding(e){il("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Ns?Kt:Qn}}pn.DEFAULT_IMAGE=null;pn.DEFAULT_MAPPING=Hw;pn.DEFAULT_ANISOTROPY=1;class Pt{constructor(e=0,t=0,i=0,r=1){Pt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*r+o[12]*s,this.y=o[1]*t+o[5]*i+o[9]*r+o[13]*s,this.z=o[2]*t+o[6]*i+o[10]*r+o[14]*s,this.w=o[3]*t+o[7]*i+o[11]*r+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s;const l=e.elements,c=l[0],d=l[4],u=l[8],_=l[1],f=l[5],h=l[9],E=l[2],g=l[6],m=l[10];if(Math.abs(d-_)<.01&&Math.abs(u-E)<.01&&Math.abs(h-g)<.01){if(Math.abs(d+_)<.1&&Math.abs(u+E)<.1&&Math.abs(h+g)<.1&&Math.abs(c+f+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const S=(c+1)/2,v=(f+1)/2,T=(m+1)/2,C=(d+_)/4,N=(u+E)/4,x=(h+g)/4;return S>v&&S>T?S<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(S),r=C/i,s=N/i):v>T?v<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(v),i=C/r,s=x/r):T<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(T),i=N/s,r=x/s),this.set(i,r,s,t),this}let b=Math.sqrt((g-h)*(g-h)+(u-E)*(u-E)+(_-d)*(_-d));return Math.abs(b)<.001&&(b=1),this.x=(g-h)/b,this.y=(u-E)/b,this.z=(_-d)/b,this.w=Math.acos((c+f+m-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Pgt extends fa{constructor(e=1,t=1,i={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Pt(0,0,e,t),this.scissorTest=!1,this.viewport=new Pt(0,0,e,t);const r={width:e,height:t,depth:1};i.encoding!==void 0&&(il("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),i.colorSpace=i.encoding===Ns?Kt:Qn),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Mn,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0},i),this.texture=new pn(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=i.generateMipmaps,this.texture.internalFormat=i.internalFormat,this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.depthTexture=i.depthTexture,this.samples=i.samples}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new iO(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ps extends Pgt{constructor(e=1,t=1,i={}){super(e,t,i),this.isWebGLRenderTarget=!0}}class rO extends pn{constructor(e=null,t=1,i=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=an,this.minFilter=an,this.wrapR=Kn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Ugt extends pn{constructor(e=null,t=1,i=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=an,this.minFilter=an,this.wrapR=Kn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Xr{constructor(e=0,t=0,i=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=i,this._w=r}static slerpFlat(e,t,i,r,s,o,a){let l=i[r+0],c=i[r+1],d=i[r+2],u=i[r+3];const _=s[o+0],f=s[o+1],h=s[o+2],E=s[o+3];if(a===0){e[t+0]=l,e[t+1]=c,e[t+2]=d,e[t+3]=u;return}if(a===1){e[t+0]=_,e[t+1]=f,e[t+2]=h,e[t+3]=E;return}if(u!==E||l!==_||c!==f||d!==h){let g=1-a;const m=l*_+c*f+d*h+u*E,b=m>=0?1:-1,S=1-m*m;if(S>Number.EPSILON){const T=Math.sqrt(S),C=Math.atan2(T,m*b);g=Math.sin(g*C)/T,a=Math.sin(a*C)/T}const v=a*b;if(l=l*g+_*v,c=c*g+f*v,d=d*g+h*v,u=u*g+E*v,g===1-a){const T=1/Math.sqrt(l*l+c*c+d*d+u*u);l*=T,c*=T,d*=T,u*=T}}e[t]=l,e[t+1]=c,e[t+2]=d,e[t+3]=u}static multiplyQuaternionsFlat(e,t,i,r,s,o){const a=i[r],l=i[r+1],c=i[r+2],d=i[r+3],u=s[o],_=s[o+1],f=s[o+2],h=s[o+3];return e[t]=a*h+d*u+l*f-c*_,e[t+1]=l*h+d*_+c*u-a*f,e[t+2]=c*h+d*f+a*_-l*u,e[t+3]=d*h-a*u-l*_-c*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,r=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),d=a(r/2),u=a(s/2),_=l(i/2),f=l(r/2),h=l(s/2);switch(o){case"XYZ":this._x=_*d*u+c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u-_*f*h;break;case"YXZ":this._x=_*d*u+c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u+_*f*h;break;case"ZXY":this._x=_*d*u-c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u-_*f*h;break;case"ZYX":this._x=_*d*u-c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u+_*f*h;break;case"YZX":this._x=_*d*u+c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u-_*f*h;break;case"XZY":this._x=_*d*u-c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u+_*f*h;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],r=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],d=t[6],u=t[10],_=i+a+u;if(_>0){const f=.5/Math.sqrt(_+1);this._w=.25/f,this._x=(d-l)*f,this._y=(s-c)*f,this._z=(o-r)*f}else if(i>a&&i>u){const f=2*Math.sqrt(1+i-a-u);this._w=(d-l)/f,this._x=.25*f,this._y=(r+o)/f,this._z=(s+c)/f}else if(a>u){const f=2*Math.sqrt(1+a-i-u);this._w=(s-c)/f,this._x=(r+o)/f,this._y=.25*f,this._z=(l+d)/f}else{const f=2*Math.sqrt(1+u-i-a);this._w=(o-r)/f,this._x=(s+c)/f,this._y=(l+d)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(En(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,r=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,d=t._w;return this._x=i*d+o*a+r*c-s*l,this._y=r*d+o*l+s*a-i*c,this._z=s*d+o*c+i*l-r*a,this._w=o*d-i*a-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,r=this._y,s=this._z,o=this._w;let a=o*e._w+i*e._x+r*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=r,this._z=s,this;const l=1-a*a;if(l<=Number.EPSILON){const f=1-t;return this._w=f*o+t*this._w,this._x=f*i+t*this._x,this._y=f*r+t*this._y,this._z=f*s+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),d=Math.atan2(c,a),u=Math.sin((1-t)*d)/c,_=Math.sin(t*d)/c;return this._w=o*u+this._w*_,this._x=i*u+this._x*_,this._y=r*u+this._y*_,this._z=s*u+this._z*_,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),r=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(t*Math.cos(r),i*Math.sin(s),i*Math.cos(s),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ue{constructor(e=0,t=0,i=0){ue.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(aC.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(aC.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=e.elements,o=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*o,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*o,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=2*(o*r-a*i),d=2*(a*t-s*r),u=2*(s*i-o*t);return this.x=t+l*c+o*u-a*d,this.y=i+l*d+a*c-s*u,this.z=r+l*u+s*d-o*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,r=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=r*l-s*a,this.y=s*o-i*l,this.z=i*a-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return Uf.copy(this).projectOnVector(e),this.sub(Uf)}reflect(e){return this.sub(Uf.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(En(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Uf=new ue,aC=new Xr;class hr{constructor(e=new ue(1/0,1/0,1/0),t=new ue(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,si),si.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(La),uc.subVectors(this.max,La),to.subVectors(e.a,La),no.subVectors(e.b,La),io.subVectors(e.c,La),Sr.subVectors(no,to),yr.subVectors(io,no),os.subVectors(to,io);let t=[0,-Sr.z,Sr.y,0,-yr.z,yr.y,0,-os.z,os.y,Sr.z,0,-Sr.x,yr.z,0,-yr.x,os.z,0,-os.x,-Sr.y,Sr.x,0,-yr.y,yr.x,0,-os.y,os.x,0];return!Ff(t,to,no,io,uc)||(t=[1,0,0,0,1,0,0,0,1],!Ff(t,to,no,io,uc))?!1:(_c.crossVectors(Sr,yr),t=[_c.x,_c.y,_c.z],Ff(t,to,no,io,uc))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,si).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(si).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Yi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Yi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Yi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Yi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Yi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Yi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Yi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Yi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Yi),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Yi=[new ue,new ue,new ue,new ue,new ue,new ue,new ue,new ue],si=new ue,dc=new hr,to=new ue,no=new ue,io=new ue,Sr=new ue,yr=new ue,os=new ue,La=new ue,uc=new ue,_c=new ue,as=new ue;function Ff(n,e,t,i,r){for(let s=0,o=n.length-3;s<=o;s+=3){as.fromArray(n,s);const a=r.x*Math.abs(as.x)+r.y*Math.abs(as.y)+r.z*Math.abs(as.z),l=e.dot(as),c=t.dot(as),d=i.dot(as);if(Math.max(-Math.max(l,c,d),Math.min(l,c,d))>a)return!1}return!0}const Fgt=new hr,ka=new ue,Bf=new ue;class Ui{constructor(e=new ue,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):Fgt.setFromPoints(e).getCenter(i);let r=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;ka.subVectors(e,this.center);const t=ka.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(ka,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Bf.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ka.copy(e.center).add(Bf)),this.expandByPoint(ka.copy(e.center).sub(Bf))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const $i=new ue,Gf=new ue,pc=new ue,vr=new ue,zf=new ue,hc=new ue,Vf=new ue;class lu{constructor(e=new ue,t=new ue(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,$i)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=$i.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):($i.copy(this.origin).addScaledVector(this.direction,t),$i.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Gf.copy(e).add(t).multiplyScalar(.5),pc.copy(t).sub(e).normalize(),vr.copy(this.origin).sub(Gf);const s=e.distanceTo(t)*.5,o=-this.direction.dot(pc),a=vr.dot(this.direction),l=-vr.dot(pc),c=vr.lengthSq(),d=Math.abs(1-o*o);let u,_,f,h;if(d>0)if(u=o*l-a,_=o*a-l,h=s*d,u>=0)if(_>=-h)if(_<=h){const E=1/d;u*=E,_*=E,f=u*(u+o*_+2*a)+_*(o*u+_+2*l)+c}else _=s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;else _=-s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;else _<=-h?(u=Math.max(0,-(-o*s+a)),_=u>0?-s:Math.min(Math.max(-s,-l),s),f=-u*u+_*(_+2*l)+c):_<=h?(u=0,_=Math.min(Math.max(-s,-l),s),f=_*(_+2*l)+c):(u=Math.max(0,-(o*s+a)),_=u>0?s:Math.min(Math.max(-s,-l),s),f=-u*u+_*(_+2*l)+c);else _=o>0?-s:s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(Gf).addScaledVector(pc,_),f}intersectSphere(e,t){$i.subVectors(e.center,this.origin);const i=$i.dot(this.direction),r=$i.dot($i)-i*i,s=e.radius*e.radius;if(r>s)return null;const o=Math.sqrt(s-r),a=i-o,l=i+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,o,a,l;const c=1/this.direction.x,d=1/this.direction.y,u=1/this.direction.z,_=this.origin;return c>=0?(i=(e.min.x-_.x)*c,r=(e.max.x-_.x)*c):(i=(e.max.x-_.x)*c,r=(e.min.x-_.x)*c),d>=0?(s=(e.min.y-_.y)*d,o=(e.max.y-_.y)*d):(s=(e.max.y-_.y)*d,o=(e.min.y-_.y)*d),i>o||s>r||((s>i||isNaN(i))&&(i=s),(o=0?(a=(e.min.z-_.z)*u,l=(e.max.z-_.z)*u):(a=(e.max.z-_.z)*u,l=(e.min.z-_.z)*u),i>l||a>r)||((a>i||i!==i)&&(i=a),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,$i)!==null}intersectTriangle(e,t,i,r,s){zf.subVectors(t,e),hc.subVectors(i,e),Vf.crossVectors(zf,hc);let o=this.direction.dot(Vf),a;if(o>0){if(r)return null;a=1}else if(o<0)a=-1,o=-o;else return null;vr.subVectors(this.origin,e);const l=a*this.direction.dot(hc.crossVectors(vr,hc));if(l<0)return null;const c=a*this.direction.dot(zf.cross(vr));if(c<0||l+c>o)return null;const d=-a*vr.dot(Vf);return d<0?null:this.at(d/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class gt{constructor(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g){gt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g)}set(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g){const m=this.elements;return m[0]=e,m[4]=t,m[8]=i,m[12]=r,m[1]=s,m[5]=o,m[9]=a,m[13]=l,m[2]=c,m[6]=d,m[10]=u,m[14]=_,m[3]=f,m[7]=h,m[11]=E,m[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 gt().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,r=1/ro.setFromMatrixColumn(e,0).length(),s=1/ro.setFromMatrixColumn(e,1).length(),o=1/ro.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*s,t[5]=i[5]*s,t[6]=i[6]*s,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,s=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(r),c=Math.sin(r),d=Math.cos(s),u=Math.sin(s);if(e.order==="XYZ"){const _=o*d,f=o*u,h=a*d,E=a*u;t[0]=l*d,t[4]=-l*u,t[8]=c,t[1]=f+h*c,t[5]=_-E*c,t[9]=-a*l,t[2]=E-_*c,t[6]=h+f*c,t[10]=o*l}else if(e.order==="YXZ"){const _=l*d,f=l*u,h=c*d,E=c*u;t[0]=_+E*a,t[4]=h*a-f,t[8]=o*c,t[1]=o*u,t[5]=o*d,t[9]=-a,t[2]=f*a-h,t[6]=E+_*a,t[10]=o*l}else if(e.order==="ZXY"){const _=l*d,f=l*u,h=c*d,E=c*u;t[0]=_-E*a,t[4]=-o*u,t[8]=h+f*a,t[1]=f+h*a,t[5]=o*d,t[9]=E-_*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){const _=o*d,f=o*u,h=a*d,E=a*u;t[0]=l*d,t[4]=h*c-f,t[8]=_*c+E,t[1]=l*u,t[5]=E*c+_,t[9]=f*c-h,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){const _=o*l,f=o*c,h=a*l,E=a*c;t[0]=l*d,t[4]=E-_*u,t[8]=h*u+f,t[1]=u,t[5]=o*d,t[9]=-a*d,t[2]=-c*d,t[6]=f*u+h,t[10]=_-E*u}else if(e.order==="XZY"){const _=o*l,f=o*c,h=a*l,E=a*c;t[0]=l*d,t[4]=-u,t[8]=c*d,t[1]=_*u+E,t[5]=o*d,t[9]=f*u-h,t[2]=h*u-f,t[6]=a*d,t[10]=E*u+_}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Bgt,e,Ggt)}lookAt(e,t,i){const r=this.elements;return Un.subVectors(e,t),Un.lengthSq()===0&&(Un.z=1),Un.normalize(),Tr.crossVectors(i,Un),Tr.lengthSq()===0&&(Math.abs(i.z)===1?Un.x+=1e-4:Un.z+=1e-4,Un.normalize(),Tr.crossVectors(i,Un)),Tr.normalize(),fc.crossVectors(Un,Tr),r[0]=Tr.x,r[4]=fc.x,r[8]=Un.x,r[1]=Tr.y,r[5]=fc.y,r[9]=Un.y,r[2]=Tr.z,r[6]=fc.z,r[10]=Un.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],d=i[1],u=i[5],_=i[9],f=i[13],h=i[2],E=i[6],g=i[10],m=i[14],b=i[3],S=i[7],v=i[11],T=i[15],C=r[0],N=r[4],x=r[8],y=r[12],R=r[1],P=r[5],k=r[9],W=r[13],I=r[2],V=r[6],z=r[10],D=r[14],Y=r[3],K=r[7],q=r[11],le=r[15];return s[0]=o*C+a*R+l*I+c*Y,s[4]=o*N+a*P+l*V+c*K,s[8]=o*x+a*k+l*z+c*q,s[12]=o*y+a*W+l*D+c*le,s[1]=d*C+u*R+_*I+f*Y,s[5]=d*N+u*P+_*V+f*K,s[9]=d*x+u*k+_*z+f*q,s[13]=d*y+u*W+_*D+f*le,s[2]=h*C+E*R+g*I+m*Y,s[6]=h*N+E*P+g*V+m*K,s[10]=h*x+E*k+g*z+m*q,s[14]=h*y+E*W+g*D+m*le,s[3]=b*C+S*R+v*I+T*Y,s[7]=b*N+S*P+v*V+T*K,s[11]=b*x+S*k+v*z+T*q,s[15]=b*y+S*W+v*D+T*le,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],r=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],d=e[2],u=e[6],_=e[10],f=e[14],h=e[3],E=e[7],g=e[11],m=e[15];return h*(+s*l*u-r*c*u-s*a*_+i*c*_+r*a*f-i*l*f)+E*(+t*l*f-t*c*_+s*o*_-r*o*f+r*c*d-s*l*d)+g*(+t*c*u-t*a*f-s*o*u+i*o*f+s*a*d-i*c*d)+m*(-r*a*d-t*l*u+t*a*_+r*o*u-i*o*_+i*l*d)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],u=e[9],_=e[10],f=e[11],h=e[12],E=e[13],g=e[14],m=e[15],b=u*g*c-E*_*c+E*l*f-a*g*f-u*l*m+a*_*m,S=h*_*c-d*g*c-h*l*f+o*g*f+d*l*m-o*_*m,v=d*E*c-h*u*c+h*a*f-o*E*f-d*a*m+o*u*m,T=h*u*l-d*E*l-h*a*_+o*E*_+d*a*g-o*u*g,C=t*b+i*S+r*v+s*T;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const N=1/C;return e[0]=b*N,e[1]=(E*_*s-u*g*s-E*r*f+i*g*f+u*r*m-i*_*m)*N,e[2]=(a*g*s-E*l*s+E*r*c-i*g*c-a*r*m+i*l*m)*N,e[3]=(u*l*s-a*_*s-u*r*c+i*_*c+a*r*f-i*l*f)*N,e[4]=S*N,e[5]=(d*g*s-h*_*s+h*r*f-t*g*f-d*r*m+t*_*m)*N,e[6]=(h*l*s-o*g*s-h*r*c+t*g*c+o*r*m-t*l*m)*N,e[7]=(o*_*s-d*l*s+d*r*c-t*_*c-o*r*f+t*l*f)*N,e[8]=v*N,e[9]=(h*u*s-d*E*s-h*i*f+t*E*f+d*i*m-t*u*m)*N,e[10]=(o*E*s-h*a*s+h*i*c-t*E*c-o*i*m+t*a*m)*N,e[11]=(d*a*s-o*u*s-d*i*c+t*u*c+o*i*f-t*a*f)*N,e[12]=T*N,e[13]=(d*E*r-h*u*r+h*i*_-t*E*_-d*i*g+t*u*g)*N,e[14]=(h*a*r-o*E*r-h*i*l+t*E*l+o*i*g-t*a*g)*N,e[15]=(o*u*r-d*a*r+d*i*l-t*u*l-o*i*_+t*a*_)*N,this}scale(e){const t=this.elements,i=e.x,r=e.y,s=e.z;return t[0]*=i,t[4]*=r,t[8]*=s,t[1]*=i,t[5]*=r,t[9]*=s,t[2]*=i,t[6]*=r,t[10]*=s,t[3]*=i,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),r=Math.sin(t),s=1-i,o=e.x,a=e.y,l=e.z,c=s*o,d=s*a;return this.set(c*o+i,c*a-r*l,c*l+r*a,0,c*a+r*l,d*a+i,d*l-r*o,0,c*l-r*a,d*l+r*o,s*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,s,o){return this.set(1,i,s,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,d=o+o,u=a+a,_=s*c,f=s*d,h=s*u,E=o*d,g=o*u,m=a*u,b=l*c,S=l*d,v=l*u,T=i.x,C=i.y,N=i.z;return r[0]=(1-(E+m))*T,r[1]=(f+v)*T,r[2]=(h-S)*T,r[3]=0,r[4]=(f-v)*C,r[5]=(1-(_+m))*C,r[6]=(g+b)*C,r[7]=0,r[8]=(h+S)*N,r[9]=(g-b)*N,r[10]=(1-(_+E))*N,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let s=ro.set(r[0],r[1],r[2]).length();const o=ro.set(r[4],r[5],r[6]).length(),a=ro.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],oi.copy(this);const c=1/s,d=1/o,u=1/a;return oi.elements[0]*=c,oi.elements[1]*=c,oi.elements[2]*=c,oi.elements[4]*=d,oi.elements[5]*=d,oi.elements[6]*=d,oi.elements[8]*=u,oi.elements[9]*=u,oi.elements[10]*=u,t.setFromRotationMatrix(oi),i.x=s,i.y=o,i.z=a,this}makePerspective(e,t,i,r,s,o,a=nr){const l=this.elements,c=2*s/(t-e),d=2*s/(i-r),u=(t+e)/(t-e),_=(i+r)/(i-r);let f,h;if(a===nr)f=-(o+s)/(o-s),h=-2*o*s/(o-s);else if(a===Rd)f=-o/(o-s),h=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return l[0]=c,l[4]=0,l[8]=u,l[12]=0,l[1]=0,l[5]=d,l[9]=_,l[13]=0,l[2]=0,l[6]=0,l[10]=f,l[14]=h,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,i,r,s,o,a=nr){const l=this.elements,c=1/(t-e),d=1/(i-r),u=1/(o-s),_=(t+e)*c,f=(i+r)*d;let h,E;if(a===nr)h=(o+s)*u,E=-2*u;else if(a===Rd)h=s*u,E=-1*u;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-_,l[1]=0,l[5]=2*d,l[9]=0,l[13]=-f,l[2]=0,l[6]=0,l[10]=E,l[14]=-h,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const ro=new ue,oi=new gt,Bgt=new ue(0,0,0),Ggt=new ue(1,1,1),Tr=new ue,fc=new ue,Un=new ue,lC=new gt,cC=new Xr;class cu{constructor(e=0,t=0,i=0,r=cu.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const r=e.elements,s=r[0],o=r[4],a=r[8],l=r[1],c=r[5],d=r[9],u=r[2],_=r[6],f=r[10];switch(t){case"XYZ":this._y=Math.asin(En(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-d,f),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(_,c),this._z=0);break;case"YXZ":this._x=Math.asin(-En(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(a,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(En(_,-1,1)),Math.abs(_)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-En(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(_,f),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(En(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,c),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(a,f));break;case"XZY":this._z=Math.asin(-En(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(_,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-d,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return lC.makeRotationFromQuaternion(e),this.setFromRotationMatrix(lC,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cC.setFromEuler(this),this.setFromQuaternion(cC,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}cu.DEFAULT_ORDER="XYZ";class sO{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),r.maxGeometryCount=this._maxGeometryCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const l=a.shapes;if(Array.isArray(l))for(let c=0,d=l.length;c0){r.children=[];for(let a=0;a0){r.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),d.length>0&&(i.images=d),u.length>0&&(i.shapes=u),_.length>0&&(i.skeletons=_),f.length>0&&(i.animations=f),h.length>0&&(i.nodes=h)}return i.object=r,i;function o(a){const l=[];for(const c in a){const d=a[c];delete d.metadata,l.push(d)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){ai.subVectors(r,t),Ki.subVectors(i,t),Hf.subVectors(e,t);const o=ai.dot(ai),a=ai.dot(Ki),l=ai.dot(Hf),c=Ki.dot(Ki),d=Ki.dot(Hf),u=o*c-a*a;if(u===0)return s.set(-2,-1,-1);const _=1/u,f=(c*l-a*d)*_,h=(o*d-a*l)*_;return s.set(1-f-h,h,f)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,ji),ji.x>=0&&ji.y>=0&&ji.x+ji.y<=1}static getUV(e,t,i,r,s,o,a,l){return gc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),gc=!0),this.getInterpolation(e,t,i,r,s,o,a,l)}static getInterpolation(e,t,i,r,s,o,a,l){return this.getBarycoord(e,t,i,r,ji),l.setScalar(0),l.addScaledVector(s,ji.x),l.addScaledVector(o,ji.y),l.addScaledVector(a,ji.z),l}static isFrontFacing(e,t,i,r){return ai.subVectors(i,t),Ki.subVectors(e,t),ai.cross(Ki).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ai.subVectors(this.c,this.b),Ki.subVectors(this.a,this.b),ai.cross(Ki).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return di.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return di.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,r,s){return gc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),gc=!0),di.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}getInterpolation(e,t,i,r,s){return di.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return di.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return di.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,s=this.c;let o,a;oo.subVectors(r,i),ao.subVectors(s,i),qf.subVectors(e,i);const l=oo.dot(qf),c=ao.dot(qf);if(l<=0&&c<=0)return t.copy(i);Yf.subVectors(e,r);const d=oo.dot(Yf),u=ao.dot(Yf);if(d>=0&&u<=d)return t.copy(r);const _=l*u-d*c;if(_<=0&&l>=0&&d<=0)return o=l/(l-d),t.copy(i).addScaledVector(oo,o);$f.subVectors(e,s);const f=oo.dot($f),h=ao.dot($f);if(h>=0&&f<=h)return t.copy(s);const E=f*c-l*h;if(E<=0&&c>=0&&h<=0)return a=c/(c-h),t.copy(i).addScaledVector(ao,a);const g=d*h-f*u;if(g<=0&&u-d>=0&&f-h>=0)return hC.subVectors(s,r),a=(u-d)/(u-d+(f-h)),t.copy(r).addScaledVector(hC,a);const m=1/(g+E+_);return o=E*m,a=_*m,t.copy(i).addScaledVector(oo,o).addScaledVector(ao,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const oO={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},xr={h:0,s:0,l:0},Ec={h:0,s:0,l:0};function Wf(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class ot{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Kt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Nt.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=Nt.workingColorSpace){return this.r=e,this.g=t,this.b=i,Nt.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=Nt.workingColorSpace){if(e=BE(e,1),t=En(t,0,1),i=En(i,0,1),t===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+t):i+t-i*t,o=2*i-s;this.r=Wf(o,s,e+1/3),this.g=Wf(o,s,e),this.b=Wf(o,s,e-1/3)}return Nt.toWorkingColorSpace(this,r),this}setStyle(e,t=Kt){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const o=r[1],a=r[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))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,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))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,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Kt){const i=oO[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Mo(e.r),this.g=Mo(e.g),this.b=Mo(e.b),this}copyLinearToSRGB(e){return this.r=kf(e.r),this.g=kf(e.g),this.b=kf(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Kt){return Nt.fromWorkingColorSpace(gn.copy(this),e),Math.round(En(gn.r*255,0,255))*65536+Math.round(En(gn.g*255,0,255))*256+Math.round(En(gn.b*255,0,255))}getHexString(e=Kt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Nt.workingColorSpace){Nt.fromWorkingColorSpace(gn.copy(this),t);const i=gn.r,r=gn.g,s=gn.b,o=Math.max(i,r,s),a=Math.min(i,r,s);let l,c;const d=(a+o)/2;if(a===o)l=0,c=0;else{const u=o-a;switch(c=d<=.5?u/(o+a):u/(2-o-a),o){case i:l=(r-s)/u+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,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&&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(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),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(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).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(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),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(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).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!==No&&(i.blending=this.blending),this.side!==cr&&(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!==jm&&(i.blendSrc=this.blendSrc),this.blendDst!==Qm&&(i.blendDst=this.blendDst),this.blendEquation!==bs&&(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!==yd&&(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!==tC&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Js&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Js&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Js&&(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 r(s){const o=[];for(const a in s){const l=s[a];delete l.metadata,o.push(l)}return o}if(t){const s=r(e.textures),o=r(e.images);s.length>0&&(i.textures=s),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Fr extends mi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ot(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.combine=kE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Zt=new ue,bc=new vt;class wn{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=tg,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=tr,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.BufferAttribute: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;r0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const c=i[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],d=[];for(let u=0,_=c.length;u<_;u++){const f=c[u];d.push(f.toJSON(e.data))}d.length>0&&(r[l]=d,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const r=e.attributes;for(const c in r){const d=r[c];this.setAttribute(c,d.clone(t))}const s=e.morphAttributes;for(const c in s){const d=[],u=s[c];for(let _=0,f=u.length;_0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s(e.far-e.near)**2))&&(fC.copy(s).invert(),ls.copy(e.ray).applyMatrix4(fC),!(i.boundingBox!==null&&ls.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,ls)))}_computeIntersections(e,t,i){let r;const s=this.geometry,o=this.material,a=s.index,l=s.attributes.position,c=s.attributes.uv,d=s.attributes.uv1,u=s.attributes.normal,_=s.groups,f=s.drawRange;if(a!==null)if(Array.isArray(o))for(let h=0,E=_.length;ht.far?null:{distance:c,point:Rc.clone(),object:n}}function Ac(n,e,t,i,r,s,o,a,l,c){n.getVertexPosition(a,co),n.getVertexPosition(l,uo),n.getVertexPosition(c,_o);const d=Kgt(n,e,t,i,co,uo,_o,Cc);if(d){r&&(vc.fromBufferAttribute(r,a),Tc.fromBufferAttribute(r,l),xc.fromBufferAttribute(r,c),d.uv=di.getInterpolation(Cc,co,uo,_o,vc,Tc,xc,new vt)),s&&(vc.fromBufferAttribute(s,a),Tc.fromBufferAttribute(s,l),xc.fromBufferAttribute(s,c),d.uv1=di.getInterpolation(Cc,co,uo,_o,vc,Tc,xc,new vt),d.uv2=d.uv1),o&&(gC.fromBufferAttribute(o,a),EC.fromBufferAttribute(o,l),bC.fromBufferAttribute(o,c),d.normal=di.getInterpolation(Cc,co,uo,_o,gC,EC,bC,new ue),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const u={a,b:l,c,normal:new ue,materialIndex:0};di.getNormal(co,uo,_o,u.normal),d.face=u}return d}class $r extends Fi{constructor(e=1,t=1,i=1,r=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:s,depthSegments:o};const a=this;r=Math.floor(r),s=Math.floor(s),o=Math.floor(o);const l=[],c=[],d=[],u=[];let _=0,f=0;h("z","y","x",-1,-1,i,t,e,o,s,0),h("z","y","x",1,-1,i,t,-e,o,s,1),h("x","z","y",1,1,e,i,t,r,o,2),h("x","z","y",1,-1,e,i,-t,r,o,3),h("x","y","z",1,-1,e,t,i,r,s,4),h("x","y","z",-1,-1,e,t,-i,r,s,5),this.setIndex(l),this.setAttribute("position",new sr(c,3)),this.setAttribute("normal",new sr(d,3)),this.setAttribute("uv",new sr(u,2));function h(E,g,m,b,S,v,T,C,N,x,y){const R=v/N,P=T/x,k=v/2,W=T/2,I=C/2,V=N+1,z=x+1;let D=0,Y=0;const K=new ue;for(let q=0;q0?1:-1,d.push(K.x,K.y,K.z),u.push(Z/N),u.push(1-q/x),D+=1}}for(let q=0;q>8&255]+mn[n>>16&255]+mn[n>>24&255]+"-"+mn[e&255]+mn[e>>8&255]+"-"+mn[e>>16&15|64]+mn[e>>24&255]+"-"+mn[t&63|128]+mn[t>>8&255]+"-"+mn[t>>16&255]+mn[t>>24&255]+mn[i&255]+mn[i>>8&255]+mn[i>>16&255]+mn[i>>24&255]).toLowerCase()}function En(n,e,t){return Math.max(e,Math.min(t,n))}function BE(n,e){return(n%e+e)%e}function ygt(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function vgt(n,e,t){return n!==e?(t-n)/(e-n):0}function nl(n,e,t){return(1-t)*n+t*e}function Tgt(n,e,t,i){return nl(n,e,1-Math.exp(-t*i))}function xgt(n,e=1){return e-Math.abs(BE(n,e*2)-e)}function Cgt(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function Rgt(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function Agt(n,e){return n+Math.floor(Math.random()*(e-n+1))}function wgt(n,e){return n+Math.random()*(e-n)}function Ogt(n){return n*(.5-Math.random())}function Ngt(n){n!==void 0&&(iC=n);let e=iC+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Mgt(n){return n*tl}function Igt(n){return n*ea}function ig(n){return(n&n-1)===0&&n!==0}function Dgt(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Ad(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Lgt(n,e,t,i,r){const s=Math.cos,o=Math.sin,a=s(t/2),l=o(t/2),c=s((e+i)/2),d=o((e+i)/2),u=s((e-i)/2),_=o((e-i)/2),f=s((i-e)/2),h=o((i-e)/2);switch(r){case"XYX":n.set(a*d,l*u,l*_,a*c);break;case"YZY":n.set(l*_,a*d,l*u,a*c);break;case"ZXZ":n.set(l*u,l*_,a*d,a*c);break;case"XZX":n.set(a*d,l*h,l*f,a*c);break;case"YXY":n.set(l*f,a*d,l*h,a*c);break;case"ZYZ":n.set(l*h,l*f,a*d,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function Ci(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function kt(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const kgt={DEG2RAD:tl,RAD2DEG:ea,generateUUID:fi,clamp:En,euclideanModulo:BE,mapLinear:ygt,inverseLerp:vgt,lerp:nl,damp:Tgt,pingpong:xgt,smoothstep:Cgt,smootherstep:Rgt,randInt:Agt,randFloat:wgt,randFloatSpread:Ogt,seededRandom:Ngt,degToRad:Mgt,radToDeg:Igt,isPowerOfTwo:ig,ceilPowerOfTwo:Dgt,floorPowerOfTwo:Ad,setQuaternionFromProperEuler:Lgt,normalize:kt,denormalize:Ci};class vt{constructor(e=0,t=0){vt.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(En(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),r=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*i-o*r+e.x,this.y=s*r+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class mt{constructor(e,t,i,r,s,o,a,l,c){mt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c)}set(e,t,i,r,s,o,a,l,c){const d=this.elements;return d[0]=e,d[1]=r,d[2]=a,d[3]=t,d[4]=s,d[5]=l,d[6]=i,d[7]=o,d[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],d=i[4],u=i[7],_=i[2],f=i[5],h=i[8],E=r[0],g=r[3],m=r[6],b=r[1],S=r[4],v=r[7],T=r[2],C=r[5],N=r[8];return s[0]=o*E+a*b+l*T,s[3]=o*g+a*S+l*C,s[6]=o*m+a*v+l*N,s[1]=c*E+d*b+u*T,s[4]=c*g+d*S+u*C,s[7]=c*m+d*v+u*N,s[2]=_*E+f*b+h*T,s[5]=_*g+f*S+h*C,s[8]=_*m+f*v+h*N,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8];return t*o*d-t*a*c-i*s*d+i*a*l+r*s*c-r*o*l}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],u=d*o-a*c,_=a*l-d*s,f=c*s-o*l,h=t*u+i*_+r*f;if(h===0)return this.set(0,0,0,0,0,0,0,0,0);const E=1/h;return e[0]=u*E,e[1]=(r*c-d*i)*E,e[2]=(a*i-r*o)*E,e[3]=_*E,e[4]=(d*t-r*l)*E,e[5]=(r*s-a*t)*E,e[6]=f*E,e[7]=(i*l-c*t)*E,e[8]=(o*t-i*s)*E,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,o,a){const l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-r*c,r*l,-r*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Lf.makeScale(e,t)),this}rotate(e){return this.premultiply(Lf.makeRotation(-e)),this}translate(e,t){return this.premultiply(Lf.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Lf=new mt;function tO(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function xl(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function Pgt(){const n=xl("canvas");return n.style.display="block",n}const rC={};function il(n){n in rC||(rC[n]=!0,console.warn(n))}const sC=new mt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),oC=new mt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),cc={[hn]:{transfer:Td,primaries:xd,toReference:n=>n,fromReference:n=>n},[Kt]:{transfer:Gt,primaries:xd,toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[au]:{transfer:Td,primaries:Cd,toReference:n=>n.applyMatrix3(oC),fromReference:n=>n.applyMatrix3(sC)},[FE]:{transfer:Gt,primaries:Cd,toReference:n=>n.convertSRGBToLinear().applyMatrix3(oC),fromReference:n=>n.applyMatrix3(sC).convertLinearToSRGB()}},Ugt=new Set([hn,au]),Nt={enabled:!0,_workingColorSpace:hn,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(n){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!n},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!Ugt.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=cc[e].toReference,r=cc[t].fromReference;return r(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this._workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this._workingColorSpace)},getPrimaries:function(n){return cc[n].primaries},getTransfer:function(n){return n===Qn?Td:cc[n].transfer}};function Mo(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function kf(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let eo;class nO{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{eo===void 0&&(eo=xl("canvas")),eo.width=e.width,eo.height=e.height;const i=eo.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=eo}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=xl("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Hw)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Xo:e.x=e.x-Math.floor(e.x);break;case Kn:e.x=e.x<0?0:1;break;case vd:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Xo:e.y=e.y-Math.floor(e.y);break;case Kn:e.y=e.y<0?0:1;break;case vd:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return il("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===Kt?Ns:Jw}set encoding(e){il("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Ns?Kt:Qn}}pn.DEFAULT_IMAGE=null;pn.DEFAULT_MAPPING=Hw;pn.DEFAULT_ANISOTROPY=1;class Pt{constructor(e=0,t=0,i=0,r=1){Pt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*r+o[12]*s,this.y=o[1]*t+o[5]*i+o[9]*r+o[13]*s,this.z=o[2]*t+o[6]*i+o[10]*r+o[14]*s,this.w=o[3]*t+o[7]*i+o[11]*r+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s;const l=e.elements,c=l[0],d=l[4],u=l[8],_=l[1],f=l[5],h=l[9],E=l[2],g=l[6],m=l[10];if(Math.abs(d-_)<.01&&Math.abs(u-E)<.01&&Math.abs(h-g)<.01){if(Math.abs(d+_)<.1&&Math.abs(u+E)<.1&&Math.abs(h+g)<.1&&Math.abs(c+f+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const S=(c+1)/2,v=(f+1)/2,T=(m+1)/2,C=(d+_)/4,N=(u+E)/4,x=(h+g)/4;return S>v&&S>T?S<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(S),r=C/i,s=N/i):v>T?v<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(v),i=C/r,s=x/r):T<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(T),i=N/s,r=x/s),this.set(i,r,s,t),this}let b=Math.sqrt((g-h)*(g-h)+(u-E)*(u-E)+(_-d)*(_-d));return Math.abs(b)<.001&&(b=1),this.x=(g-h)/b,this.y=(u-E)/b,this.z=(_-d)/b,this.w=Math.acos((c+f+m-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Ggt extends fa{constructor(e=1,t=1,i={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Pt(0,0,e,t),this.scissorTest=!1,this.viewport=new Pt(0,0,e,t);const r={width:e,height:t,depth:1};i.encoding!==void 0&&(il("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),i.colorSpace=i.encoding===Ns?Kt:Qn),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Mn,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0},i),this.texture=new pn(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=i.generateMipmaps,this.texture.internalFormat=i.internalFormat,this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.depthTexture=i.depthTexture,this.samples=i.samples}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new iO(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ps extends Ggt{constructor(e=1,t=1,i={}){super(e,t,i),this.isWebGLRenderTarget=!0}}class rO extends pn{constructor(e=null,t=1,i=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=an,this.minFilter=an,this.wrapR=Kn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class zgt extends pn{constructor(e=null,t=1,i=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=an,this.minFilter=an,this.wrapR=Kn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Xr{constructor(e=0,t=0,i=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=i,this._w=r}static slerpFlat(e,t,i,r,s,o,a){let l=i[r+0],c=i[r+1],d=i[r+2],u=i[r+3];const _=s[o+0],f=s[o+1],h=s[o+2],E=s[o+3];if(a===0){e[t+0]=l,e[t+1]=c,e[t+2]=d,e[t+3]=u;return}if(a===1){e[t+0]=_,e[t+1]=f,e[t+2]=h,e[t+3]=E;return}if(u!==E||l!==_||c!==f||d!==h){let g=1-a;const m=l*_+c*f+d*h+u*E,b=m>=0?1:-1,S=1-m*m;if(S>Number.EPSILON){const T=Math.sqrt(S),C=Math.atan2(T,m*b);g=Math.sin(g*C)/T,a=Math.sin(a*C)/T}const v=a*b;if(l=l*g+_*v,c=c*g+f*v,d=d*g+h*v,u=u*g+E*v,g===1-a){const T=1/Math.sqrt(l*l+c*c+d*d+u*u);l*=T,c*=T,d*=T,u*=T}}e[t]=l,e[t+1]=c,e[t+2]=d,e[t+3]=u}static multiplyQuaternionsFlat(e,t,i,r,s,o){const a=i[r],l=i[r+1],c=i[r+2],d=i[r+3],u=s[o],_=s[o+1],f=s[o+2],h=s[o+3];return e[t]=a*h+d*u+l*f-c*_,e[t+1]=l*h+d*_+c*u-a*f,e[t+2]=c*h+d*f+a*_-l*u,e[t+3]=d*h-a*u-l*_-c*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,r=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),d=a(r/2),u=a(s/2),_=l(i/2),f=l(r/2),h=l(s/2);switch(o){case"XYZ":this._x=_*d*u+c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u-_*f*h;break;case"YXZ":this._x=_*d*u+c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u+_*f*h;break;case"ZXY":this._x=_*d*u-c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u-_*f*h;break;case"ZYX":this._x=_*d*u-c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u+_*f*h;break;case"YZX":this._x=_*d*u+c*f*h,this._y=c*f*u+_*d*h,this._z=c*d*h-_*f*u,this._w=c*d*u-_*f*h;break;case"XZY":this._x=_*d*u-c*f*h,this._y=c*f*u-_*d*h,this._z=c*d*h+_*f*u,this._w=c*d*u+_*f*h;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],r=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],d=t[6],u=t[10],_=i+a+u;if(_>0){const f=.5/Math.sqrt(_+1);this._w=.25/f,this._x=(d-l)*f,this._y=(s-c)*f,this._z=(o-r)*f}else if(i>a&&i>u){const f=2*Math.sqrt(1+i-a-u);this._w=(d-l)/f,this._x=.25*f,this._y=(r+o)/f,this._z=(s+c)/f}else if(a>u){const f=2*Math.sqrt(1+a-i-u);this._w=(s-c)/f,this._x=(r+o)/f,this._y=.25*f,this._z=(l+d)/f}else{const f=2*Math.sqrt(1+u-i-a);this._w=(o-r)/f,this._x=(s+c)/f,this._y=(l+d)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(En(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,r=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,d=t._w;return this._x=i*d+o*a+r*c-s*l,this._y=r*d+o*l+s*a-i*c,this._z=s*d+o*c+i*l-r*a,this._w=o*d-i*a-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,r=this._y,s=this._z,o=this._w;let a=o*e._w+i*e._x+r*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=r,this._z=s,this;const l=1-a*a;if(l<=Number.EPSILON){const f=1-t;return this._w=f*o+t*this._w,this._x=f*i+t*this._x,this._y=f*r+t*this._y,this._z=f*s+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),d=Math.atan2(c,a),u=Math.sin((1-t)*d)/c,_=Math.sin(t*d)/c;return this._w=o*u+this._w*_,this._x=i*u+this._x*_,this._y=r*u+this._y*_,this._z=s*u+this._z*_,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),r=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(t*Math.cos(r),i*Math.sin(s),i*Math.cos(s),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ue{constructor(e=0,t=0,i=0){ue.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(aC.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(aC.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=e.elements,o=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*o,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*o,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=2*(o*r-a*i),d=2*(a*t-s*r),u=2*(s*i-o*t);return this.x=t+l*c+o*u-a*d,this.y=i+l*d+a*c-s*u,this.z=r+l*u+s*d-o*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,r=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=r*l-s*a,this.y=s*o-i*l,this.z=i*a-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return Uf.copy(this).projectOnVector(e),this.sub(Uf)}reflect(e){return this.sub(Uf.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(En(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Uf=new ue,aC=new Xr;class hr{constructor(e=new ue(1/0,1/0,1/0),t=new ue(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,si),si.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(La),uc.subVectors(this.max,La),to.subVectors(e.a,La),no.subVectors(e.b,La),io.subVectors(e.c,La),Sr.subVectors(no,to),yr.subVectors(io,no),os.subVectors(to,io);let t=[0,-Sr.z,Sr.y,0,-yr.z,yr.y,0,-os.z,os.y,Sr.z,0,-Sr.x,yr.z,0,-yr.x,os.z,0,-os.x,-Sr.y,Sr.x,0,-yr.y,yr.x,0,-os.y,os.x,0];return!Ff(t,to,no,io,uc)||(t=[1,0,0,0,1,0,0,0,1],!Ff(t,to,no,io,uc))?!1:(_c.crossVectors(Sr,yr),t=[_c.x,_c.y,_c.z],Ff(t,to,no,io,uc))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,si).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(si).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Yi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Yi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Yi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Yi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Yi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Yi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Yi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Yi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Yi),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Yi=[new ue,new ue,new ue,new ue,new ue,new ue,new ue,new ue],si=new ue,dc=new hr,to=new ue,no=new ue,io=new ue,Sr=new ue,yr=new ue,os=new ue,La=new ue,uc=new ue,_c=new ue,as=new ue;function Ff(n,e,t,i,r){for(let s=0,o=n.length-3;s<=o;s+=3){as.fromArray(n,s);const a=r.x*Math.abs(as.x)+r.y*Math.abs(as.y)+r.z*Math.abs(as.z),l=e.dot(as),c=t.dot(as),d=i.dot(as);if(Math.max(-Math.max(l,c,d),Math.min(l,c,d))>a)return!1}return!0}const Vgt=new hr,ka=new ue,Bf=new ue;class Ui{constructor(e=new ue,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):Vgt.setFromPoints(e).getCenter(i);let r=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;ka.subVectors(e,this.center);const t=ka.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(ka,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Bf.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ka.copy(e.center).add(Bf)),this.expandByPoint(ka.copy(e.center).sub(Bf))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const $i=new ue,Gf=new ue,pc=new ue,vr=new ue,zf=new ue,hc=new ue,Vf=new ue;class lu{constructor(e=new ue,t=new ue(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,$i)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=$i.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):($i.copy(this.origin).addScaledVector(this.direction,t),$i.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Gf.copy(e).add(t).multiplyScalar(.5),pc.copy(t).sub(e).normalize(),vr.copy(this.origin).sub(Gf);const s=e.distanceTo(t)*.5,o=-this.direction.dot(pc),a=vr.dot(this.direction),l=-vr.dot(pc),c=vr.lengthSq(),d=Math.abs(1-o*o);let u,_,f,h;if(d>0)if(u=o*l-a,_=o*a-l,h=s*d,u>=0)if(_>=-h)if(_<=h){const E=1/d;u*=E,_*=E,f=u*(u+o*_+2*a)+_*(o*u+_+2*l)+c}else _=s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;else _=-s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;else _<=-h?(u=Math.max(0,-(-o*s+a)),_=u>0?-s:Math.min(Math.max(-s,-l),s),f=-u*u+_*(_+2*l)+c):_<=h?(u=0,_=Math.min(Math.max(-s,-l),s),f=_*(_+2*l)+c):(u=Math.max(0,-(o*s+a)),_=u>0?s:Math.min(Math.max(-s,-l),s),f=-u*u+_*(_+2*l)+c);else _=o>0?-s:s,u=Math.max(0,-(o*_+a)),f=-u*u+_*(_+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(Gf).addScaledVector(pc,_),f}intersectSphere(e,t){$i.subVectors(e.center,this.origin);const i=$i.dot(this.direction),r=$i.dot($i)-i*i,s=e.radius*e.radius;if(r>s)return null;const o=Math.sqrt(s-r),a=i-o,l=i+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,o,a,l;const c=1/this.direction.x,d=1/this.direction.y,u=1/this.direction.z,_=this.origin;return c>=0?(i=(e.min.x-_.x)*c,r=(e.max.x-_.x)*c):(i=(e.max.x-_.x)*c,r=(e.min.x-_.x)*c),d>=0?(s=(e.min.y-_.y)*d,o=(e.max.y-_.y)*d):(s=(e.max.y-_.y)*d,o=(e.min.y-_.y)*d),i>o||s>r||((s>i||isNaN(i))&&(i=s),(o=0?(a=(e.min.z-_.z)*u,l=(e.max.z-_.z)*u):(a=(e.max.z-_.z)*u,l=(e.min.z-_.z)*u),i>l||a>r)||((a>i||i!==i)&&(i=a),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,$i)!==null}intersectTriangle(e,t,i,r,s){zf.subVectors(t,e),hc.subVectors(i,e),Vf.crossVectors(zf,hc);let o=this.direction.dot(Vf),a;if(o>0){if(r)return null;a=1}else if(o<0)a=-1,o=-o;else return null;vr.subVectors(this.origin,e);const l=a*this.direction.dot(hc.crossVectors(vr,hc));if(l<0)return null;const c=a*this.direction.dot(zf.cross(vr));if(c<0||l+c>o)return null;const d=-a*vr.dot(Vf);return d<0?null:this.at(d/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class gt{constructor(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g){gt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g)}set(e,t,i,r,s,o,a,l,c,d,u,_,f,h,E,g){const m=this.elements;return m[0]=e,m[4]=t,m[8]=i,m[12]=r,m[1]=s,m[5]=o,m[9]=a,m[13]=l,m[2]=c,m[6]=d,m[10]=u,m[14]=_,m[3]=f,m[7]=h,m[11]=E,m[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 gt().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,r=1/ro.setFromMatrixColumn(e,0).length(),s=1/ro.setFromMatrixColumn(e,1).length(),o=1/ro.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*s,t[5]=i[5]*s,t[6]=i[6]*s,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,s=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(r),c=Math.sin(r),d=Math.cos(s),u=Math.sin(s);if(e.order==="XYZ"){const _=o*d,f=o*u,h=a*d,E=a*u;t[0]=l*d,t[4]=-l*u,t[8]=c,t[1]=f+h*c,t[5]=_-E*c,t[9]=-a*l,t[2]=E-_*c,t[6]=h+f*c,t[10]=o*l}else if(e.order==="YXZ"){const _=l*d,f=l*u,h=c*d,E=c*u;t[0]=_+E*a,t[4]=h*a-f,t[8]=o*c,t[1]=o*u,t[5]=o*d,t[9]=-a,t[2]=f*a-h,t[6]=E+_*a,t[10]=o*l}else if(e.order==="ZXY"){const _=l*d,f=l*u,h=c*d,E=c*u;t[0]=_-E*a,t[4]=-o*u,t[8]=h+f*a,t[1]=f+h*a,t[5]=o*d,t[9]=E-_*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){const _=o*d,f=o*u,h=a*d,E=a*u;t[0]=l*d,t[4]=h*c-f,t[8]=_*c+E,t[1]=l*u,t[5]=E*c+_,t[9]=f*c-h,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){const _=o*l,f=o*c,h=a*l,E=a*c;t[0]=l*d,t[4]=E-_*u,t[8]=h*u+f,t[1]=u,t[5]=o*d,t[9]=-a*d,t[2]=-c*d,t[6]=f*u+h,t[10]=_-E*u}else if(e.order==="XZY"){const _=o*l,f=o*c,h=a*l,E=a*c;t[0]=l*d,t[4]=-u,t[8]=c*d,t[1]=_*u+E,t[5]=o*d,t[9]=f*u-h,t[2]=h*u-f,t[6]=a*d,t[10]=E*u+_}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Hgt,e,qgt)}lookAt(e,t,i){const r=this.elements;return Un.subVectors(e,t),Un.lengthSq()===0&&(Un.z=1),Un.normalize(),Tr.crossVectors(i,Un),Tr.lengthSq()===0&&(Math.abs(i.z)===1?Un.x+=1e-4:Un.z+=1e-4,Un.normalize(),Tr.crossVectors(i,Un)),Tr.normalize(),fc.crossVectors(Un,Tr),r[0]=Tr.x,r[4]=fc.x,r[8]=Un.x,r[1]=Tr.y,r[5]=fc.y,r[9]=Un.y,r[2]=Tr.z,r[6]=fc.z,r[10]=Un.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],d=i[1],u=i[5],_=i[9],f=i[13],h=i[2],E=i[6],g=i[10],m=i[14],b=i[3],S=i[7],v=i[11],T=i[15],C=r[0],N=r[4],x=r[8],y=r[12],R=r[1],P=r[5],k=r[9],W=r[13],I=r[2],V=r[6],z=r[10],D=r[14],Y=r[3],K=r[7],q=r[11],le=r[15];return s[0]=o*C+a*R+l*I+c*Y,s[4]=o*N+a*P+l*V+c*K,s[8]=o*x+a*k+l*z+c*q,s[12]=o*y+a*W+l*D+c*le,s[1]=d*C+u*R+_*I+f*Y,s[5]=d*N+u*P+_*V+f*K,s[9]=d*x+u*k+_*z+f*q,s[13]=d*y+u*W+_*D+f*le,s[2]=h*C+E*R+g*I+m*Y,s[6]=h*N+E*P+g*V+m*K,s[10]=h*x+E*k+g*z+m*q,s[14]=h*y+E*W+g*D+m*le,s[3]=b*C+S*R+v*I+T*Y,s[7]=b*N+S*P+v*V+T*K,s[11]=b*x+S*k+v*z+T*q,s[15]=b*y+S*W+v*D+T*le,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],r=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],d=e[2],u=e[6],_=e[10],f=e[14],h=e[3],E=e[7],g=e[11],m=e[15];return h*(+s*l*u-r*c*u-s*a*_+i*c*_+r*a*f-i*l*f)+E*(+t*l*f-t*c*_+s*o*_-r*o*f+r*c*d-s*l*d)+g*(+t*c*u-t*a*f-s*o*u+i*o*f+s*a*d-i*c*d)+m*(-r*a*d-t*l*u+t*a*_+r*o*u-i*o*_+i*l*d)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],u=e[9],_=e[10],f=e[11],h=e[12],E=e[13],g=e[14],m=e[15],b=u*g*c-E*_*c+E*l*f-a*g*f-u*l*m+a*_*m,S=h*_*c-d*g*c-h*l*f+o*g*f+d*l*m-o*_*m,v=d*E*c-h*u*c+h*a*f-o*E*f-d*a*m+o*u*m,T=h*u*l-d*E*l-h*a*_+o*E*_+d*a*g-o*u*g,C=t*b+i*S+r*v+s*T;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const N=1/C;return e[0]=b*N,e[1]=(E*_*s-u*g*s-E*r*f+i*g*f+u*r*m-i*_*m)*N,e[2]=(a*g*s-E*l*s+E*r*c-i*g*c-a*r*m+i*l*m)*N,e[3]=(u*l*s-a*_*s-u*r*c+i*_*c+a*r*f-i*l*f)*N,e[4]=S*N,e[5]=(d*g*s-h*_*s+h*r*f-t*g*f-d*r*m+t*_*m)*N,e[6]=(h*l*s-o*g*s-h*r*c+t*g*c+o*r*m-t*l*m)*N,e[7]=(o*_*s-d*l*s+d*r*c-t*_*c-o*r*f+t*l*f)*N,e[8]=v*N,e[9]=(h*u*s-d*E*s-h*i*f+t*E*f+d*i*m-t*u*m)*N,e[10]=(o*E*s-h*a*s+h*i*c-t*E*c-o*i*m+t*a*m)*N,e[11]=(d*a*s-o*u*s-d*i*c+t*u*c+o*i*f-t*a*f)*N,e[12]=T*N,e[13]=(d*E*r-h*u*r+h*i*_-t*E*_-d*i*g+t*u*g)*N,e[14]=(h*a*r-o*E*r-h*i*l+t*E*l+o*i*g-t*a*g)*N,e[15]=(o*u*r-d*a*r+d*i*l-t*u*l-o*i*_+t*a*_)*N,this}scale(e){const t=this.elements,i=e.x,r=e.y,s=e.z;return t[0]*=i,t[4]*=r,t[8]*=s,t[1]*=i,t[5]*=r,t[9]*=s,t[2]*=i,t[6]*=r,t[10]*=s,t[3]*=i,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),r=Math.sin(t),s=1-i,o=e.x,a=e.y,l=e.z,c=s*o,d=s*a;return this.set(c*o+i,c*a-r*l,c*l+r*a,0,c*a+r*l,d*a+i,d*l-r*o,0,c*l-r*a,d*l+r*o,s*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,s,o){return this.set(1,i,s,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,d=o+o,u=a+a,_=s*c,f=s*d,h=s*u,E=o*d,g=o*u,m=a*u,b=l*c,S=l*d,v=l*u,T=i.x,C=i.y,N=i.z;return r[0]=(1-(E+m))*T,r[1]=(f+v)*T,r[2]=(h-S)*T,r[3]=0,r[4]=(f-v)*C,r[5]=(1-(_+m))*C,r[6]=(g+b)*C,r[7]=0,r[8]=(h+S)*N,r[9]=(g-b)*N,r[10]=(1-(_+E))*N,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let s=ro.set(r[0],r[1],r[2]).length();const o=ro.set(r[4],r[5],r[6]).length(),a=ro.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],oi.copy(this);const c=1/s,d=1/o,u=1/a;return oi.elements[0]*=c,oi.elements[1]*=c,oi.elements[2]*=c,oi.elements[4]*=d,oi.elements[5]*=d,oi.elements[6]*=d,oi.elements[8]*=u,oi.elements[9]*=u,oi.elements[10]*=u,t.setFromRotationMatrix(oi),i.x=s,i.y=o,i.z=a,this}makePerspective(e,t,i,r,s,o,a=nr){const l=this.elements,c=2*s/(t-e),d=2*s/(i-r),u=(t+e)/(t-e),_=(i+r)/(i-r);let f,h;if(a===nr)f=-(o+s)/(o-s),h=-2*o*s/(o-s);else if(a===Rd)f=-o/(o-s),h=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return l[0]=c,l[4]=0,l[8]=u,l[12]=0,l[1]=0,l[5]=d,l[9]=_,l[13]=0,l[2]=0,l[6]=0,l[10]=f,l[14]=h,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,i,r,s,o,a=nr){const l=this.elements,c=1/(t-e),d=1/(i-r),u=1/(o-s),_=(t+e)*c,f=(i+r)*d;let h,E;if(a===nr)h=(o+s)*u,E=-2*u;else if(a===Rd)h=s*u,E=-1*u;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-_,l[1]=0,l[5]=2*d,l[9]=0,l[13]=-f,l[2]=0,l[6]=0,l[10]=E,l[14]=-h,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const ro=new ue,oi=new gt,Hgt=new ue(0,0,0),qgt=new ue(1,1,1),Tr=new ue,fc=new ue,Un=new ue,lC=new gt,cC=new Xr;class cu{constructor(e=0,t=0,i=0,r=cu.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const r=e.elements,s=r[0],o=r[4],a=r[8],l=r[1],c=r[5],d=r[9],u=r[2],_=r[6],f=r[10];switch(t){case"XYZ":this._y=Math.asin(En(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-d,f),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(_,c),this._z=0);break;case"YXZ":this._x=Math.asin(-En(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(a,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(En(_,-1,1)),Math.abs(_)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-En(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(_,f),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(En(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,c),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(a,f));break;case"XZY":this._z=Math.asin(-En(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(_,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-d,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return lC.makeRotationFromQuaternion(e),this.setFromRotationMatrix(lC,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cC.setFromEuler(this),this.setFromQuaternion(cC,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}cu.DEFAULT_ORDER="XYZ";class sO{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),r.maxGeometryCount=this._maxGeometryCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const l=a.shapes;if(Array.isArray(l))for(let c=0,d=l.length;c0){r.children=[];for(let a=0;a0){r.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),d.length>0&&(i.images=d),u.length>0&&(i.shapes=u),_.length>0&&(i.skeletons=_),f.length>0&&(i.animations=f),h.length>0&&(i.nodes=h)}return i.object=r,i;function o(a){const l=[];for(const c in a){const d=a[c];delete d.metadata,l.push(d)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){ai.subVectors(r,t),Ki.subVectors(i,t),Hf.subVectors(e,t);const o=ai.dot(ai),a=ai.dot(Ki),l=ai.dot(Hf),c=Ki.dot(Ki),d=Ki.dot(Hf),u=o*c-a*a;if(u===0)return s.set(-2,-1,-1);const _=1/u,f=(c*l-a*d)*_,h=(o*d-a*l)*_;return s.set(1-f-h,h,f)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,ji),ji.x>=0&&ji.y>=0&&ji.x+ji.y<=1}static getUV(e,t,i,r,s,o,a,l){return gc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),gc=!0),this.getInterpolation(e,t,i,r,s,o,a,l)}static getInterpolation(e,t,i,r,s,o,a,l){return this.getBarycoord(e,t,i,r,ji),l.setScalar(0),l.addScaledVector(s,ji.x),l.addScaledVector(o,ji.y),l.addScaledVector(a,ji.z),l}static isFrontFacing(e,t,i,r){return ai.subVectors(i,t),Ki.subVectors(e,t),ai.cross(Ki).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ai.subVectors(this.c,this.b),Ki.subVectors(this.a,this.b),ai.cross(Ki).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return di.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return di.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,r,s){return gc===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),gc=!0),di.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}getInterpolation(e,t,i,r,s){return di.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return di.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return di.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,s=this.c;let o,a;oo.subVectors(r,i),ao.subVectors(s,i),qf.subVectors(e,i);const l=oo.dot(qf),c=ao.dot(qf);if(l<=0&&c<=0)return t.copy(i);Yf.subVectors(e,r);const d=oo.dot(Yf),u=ao.dot(Yf);if(d>=0&&u<=d)return t.copy(r);const _=l*u-d*c;if(_<=0&&l>=0&&d<=0)return o=l/(l-d),t.copy(i).addScaledVector(oo,o);$f.subVectors(e,s);const f=oo.dot($f),h=ao.dot($f);if(h>=0&&f<=h)return t.copy(s);const E=f*c-l*h;if(E<=0&&c>=0&&h<=0)return a=c/(c-h),t.copy(i).addScaledVector(ao,a);const g=d*h-f*u;if(g<=0&&u-d>=0&&f-h>=0)return hC.subVectors(s,r),a=(u-d)/(u-d+(f-h)),t.copy(r).addScaledVector(hC,a);const m=1/(g+E+_);return o=E*m,a=_*m,t.copy(i).addScaledVector(oo,o).addScaledVector(ao,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const oO={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},xr={h:0,s:0,l:0},Ec={h:0,s:0,l:0};function Wf(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class ot{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Kt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Nt.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=Nt.workingColorSpace){return this.r=e,this.g=t,this.b=i,Nt.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=Nt.workingColorSpace){if(e=BE(e,1),t=En(t,0,1),i=En(i,0,1),t===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+t):i+t-i*t,o=2*i-s;this.r=Wf(o,s,e+1/3),this.g=Wf(o,s,e),this.b=Wf(o,s,e-1/3)}return Nt.toWorkingColorSpace(this,r),this}setStyle(e,t=Kt){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const o=r[1],a=r[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))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,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))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,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Kt){const i=oO[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Mo(e.r),this.g=Mo(e.g),this.b=Mo(e.b),this}copyLinearToSRGB(e){return this.r=kf(e.r),this.g=kf(e.g),this.b=kf(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Kt){return Nt.fromWorkingColorSpace(gn.copy(this),e),Math.round(En(gn.r*255,0,255))*65536+Math.round(En(gn.g*255,0,255))*256+Math.round(En(gn.b*255,0,255))}getHexString(e=Kt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Nt.workingColorSpace){Nt.fromWorkingColorSpace(gn.copy(this),t);const i=gn.r,r=gn.g,s=gn.b,o=Math.max(i,r,s),a=Math.min(i,r,s);let l,c;const d=(a+o)/2;if(a===o)l=0,c=0;else{const u=o-a;switch(c=d<=.5?u/(o+a):u/(2-o-a),o){case i:l=(r-s)/u+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,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&&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(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),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(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).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(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),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(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).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!==No&&(i.blending=this.blending),this.side!==cr&&(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!==jm&&(i.blendSrc=this.blendSrc),this.blendDst!==Qm&&(i.blendDst=this.blendDst),this.blendEquation!==bs&&(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!==yd&&(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!==tC&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Js&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Js&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Js&&(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 r(s){const o=[];for(const a in s){const l=s[a];delete l.metadata,o.push(l)}return o}if(t){const s=r(e.textures),o=r(e.images);s.length>0&&(i.textures=s),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Fr extends mi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ot(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.combine=kE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Zt=new ue,bc=new vt;class wn{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=tg,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=tr,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.BufferAttribute: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;r0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const c=i[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],d=[];for(let u=0,_=c.length;u<_;u++){const f=c[u];d.push(f.toJSON(e.data))}d.length>0&&(r[l]=d,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const r=e.attributes;for(const c in r){const d=r[c];this.setAttribute(c,d.clone(t))}const s=e.morphAttributes;for(const c in s){const d=[],u=s[c];for(let _=0,f=u.length;_0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s(e.far-e.near)**2))&&(fC.copy(s).invert(),ls.copy(e.ray).applyMatrix4(fC),!(i.boundingBox!==null&&ls.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,ls)))}_computeIntersections(e,t,i){let r;const s=this.geometry,o=this.material,a=s.index,l=s.attributes.position,c=s.attributes.uv,d=s.attributes.uv1,u=s.attributes.normal,_=s.groups,f=s.drawRange;if(a!==null)if(Array.isArray(o))for(let h=0,E=_.length;ht.far?null:{distance:c,point:Rc.clone(),object:n}}function Ac(n,e,t,i,r,s,o,a,l,c){n.getVertexPosition(a,co),n.getVertexPosition(l,uo),n.getVertexPosition(c,_o);const d=Zgt(n,e,t,i,co,uo,_o,Cc);if(d){r&&(vc.fromBufferAttribute(r,a),Tc.fromBufferAttribute(r,l),xc.fromBufferAttribute(r,c),d.uv=di.getInterpolation(Cc,co,uo,_o,vc,Tc,xc,new vt)),s&&(vc.fromBufferAttribute(s,a),Tc.fromBufferAttribute(s,l),xc.fromBufferAttribute(s,c),d.uv1=di.getInterpolation(Cc,co,uo,_o,vc,Tc,xc,new vt),d.uv2=d.uv1),o&&(gC.fromBufferAttribute(o,a),EC.fromBufferAttribute(o,l),bC.fromBufferAttribute(o,c),d.normal=di.getInterpolation(Cc,co,uo,_o,gC,EC,bC,new ue),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const u={a,b:l,c,normal:new ue,materialIndex:0};di.getNormal(co,uo,_o,u.normal),d.face=u}return d}class $r extends Fi{constructor(e=1,t=1,i=1,r=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:s,depthSegments:o};const a=this;r=Math.floor(r),s=Math.floor(s),o=Math.floor(o);const l=[],c=[],d=[],u=[];let _=0,f=0;h("z","y","x",-1,-1,i,t,e,o,s,0),h("z","y","x",1,-1,i,t,-e,o,s,1),h("x","z","y",1,1,e,i,t,r,o,2),h("x","z","y",1,-1,e,i,-t,r,o,3),h("x","y","z",1,-1,e,t,i,r,s,4),h("x","y","z",-1,-1,e,t,-i,r,s,5),this.setIndex(l),this.setAttribute("position",new sr(c,3)),this.setAttribute("normal",new sr(d,3)),this.setAttribute("uv",new sr(u,2));function h(E,g,m,b,S,v,T,C,N,x,y){const R=v/N,P=T/x,k=v/2,W=T/2,I=C/2,V=N+1,z=x+1;let D=0,Y=0;const K=new ue;for(let q=0;q0?1:-1,d.push(K.x,K.y,K.z),u.push(Z/N),u.push(1-q/x),D+=1}}for(let q=0;q0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class dO extends Yt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new gt,this.projectionMatrix=new gt,this.projectionMatrixInverse=new gt,this.coordinateSystem=nr}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Rn extends dO{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=ea*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(tl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return ea*2*Math.atan(Math.tan(tl*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,r,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(tl*.5*this.fov)/this.zoom,i=2*t,r=this.aspect*i,s=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*r/l,t-=o.offsetY*i/c,r*=o.width/l,i*=o.height/c}const a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const po=-90,ho=1;class Jgt extends Yt{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Rn(po,ho,e,t);r.layers=this.layers,this.add(r);const s=new Rn(po,ho,e,t);s.layers=this.layers,this.add(s);const o=new Rn(po,ho,e,t);o.layers=this.layers,this.add(o);const a=new Rn(po,ho,e,t);a.layers=this.layers,this.add(a);const l=new Rn(po,ho,e,t);l.layers=this.layers,this.add(l);const c=new Rn(po,ho,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,r,s,o,a,l]=t;for(const c of t)this.remove(c);if(e===nr)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===Rd)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,o,a,l,c,d]=this.children,u=e.getRenderTarget(),_=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),h=e.xr.enabled;e.xr.enabled=!1;const E=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,r),e.render(t,s),e.setRenderTarget(i,1,r),e.render(t,o),e.setRenderTarget(i,2,r),e.render(t,a),e.setRenderTarget(i,3,r),e.render(t,l),e.setRenderTarget(i,4,r),e.render(t,c),i.texture.generateMipmaps=E,e.setRenderTarget(i,5,r),e.render(t,d),e.setRenderTarget(u,_,f),e.xr.enabled=h,i.texture.needsPMREMUpdate=!0}}class uO extends pn{constructor(e,t,i,r,s,o,a,l,c,d){e=e!==void 0?e:[],t=t!==void 0?t:jo,super(e,t,i,r,s,o,a,l,c,d),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class eEt extends Ps{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];t.encoding!==void 0&&(il("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===Ns?Kt:Qn),this.texture=new uO(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Mn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` +}`;class Us extends mi{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=tEt,this.fragmentShader=nEt,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ta(e.uniforms),this.uniformsGroups=Jgt(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const r in this.uniforms){const o=this.uniforms[r].value;o&&o.isTexture?t.uniforms[r]={type:"t",value:o.toJSON(e).uuid}:o&&o.isColor?t.uniforms[r]={type:"c",value:o.getHex()}:o&&o.isVector2?t.uniforms[r]={type:"v2",value:o.toArray()}:o&&o.isVector3?t.uniforms[r]={type:"v3",value:o.toArray()}:o&&o.isVector4?t.uniforms[r]={type:"v4",value:o.toArray()}:o&&o.isMatrix3?t.uniforms[r]={type:"m3",value:o.toArray()}:o&&o.isMatrix4?t.uniforms[r]={type:"m4",value:o.toArray()}:t.uniforms[r]={value:o}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class dO extends Yt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new gt,this.projectionMatrix=new gt,this.projectionMatrixInverse=new gt,this.coordinateSystem=nr}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Rn extends dO{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=ea*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(tl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return ea*2*Math.atan(Math.tan(tl*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,r,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(tl*.5*this.fov)/this.zoom,i=2*t,r=this.aspect*i,s=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*r/l,t-=o.offsetY*i/c,r*=o.width/l,i*=o.height/c}const a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const po=-90,ho=1;class iEt extends Yt{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Rn(po,ho,e,t);r.layers=this.layers,this.add(r);const s=new Rn(po,ho,e,t);s.layers=this.layers,this.add(s);const o=new Rn(po,ho,e,t);o.layers=this.layers,this.add(o);const a=new Rn(po,ho,e,t);a.layers=this.layers,this.add(a);const l=new Rn(po,ho,e,t);l.layers=this.layers,this.add(l);const c=new Rn(po,ho,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,r,s,o,a,l]=t;for(const c of t)this.remove(c);if(e===nr)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===Rd)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,o,a,l,c,d]=this.children,u=e.getRenderTarget(),_=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),h=e.xr.enabled;e.xr.enabled=!1;const E=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,r),e.render(t,s),e.setRenderTarget(i,1,r),e.render(t,o),e.setRenderTarget(i,2,r),e.render(t,a),e.setRenderTarget(i,3,r),e.render(t,l),e.setRenderTarget(i,4,r),e.render(t,c),i.texture.generateMipmaps=E,e.setRenderTarget(i,5,r),e.render(t,d),e.setRenderTarget(u,_,f),e.xr.enabled=h,i.texture.needsPMREMUpdate=!0}}class uO extends pn{constructor(e,t,i,r,s,o,a,l,c,d){e=e!==void 0?e:[],t=t!==void 0?t:jo,super(e,t,i,r,s,o,a,l,c,d),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class rEt extends Ps{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];t.encoding!==void 0&&(il("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===Ns?Kt:Qn),this.texture=new uO(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Mn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -234,9 +236,9 @@ ${l}`;navigator.clipboard.writeText(c),Ue(()=>{Ge.replace()})},closeToast(){this gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},r=new $r(5,5,5),s=new Us({name:"CubemapFromEquirect",uniforms:ta(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Ln,blending:Hr});s.uniforms.tEquirect.value=t;const o=new An(r,s),a=t.minFilter;return t.minFilter===ks&&(t.minFilter=Mn),new Jgt(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,r){const s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,i,r);e.setRenderTarget(s)}}const Qf=new ue,tEt=new ue,nEt=new mt;class _s{constructor(e=new ue(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const r=Qf.subVectors(i,t).cross(tEt.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(Qf),r=this.normal.dot(i);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(i,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||nEt.getNormalMatrix(e),r=this.coplanarPoint(Qf).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const cs=new Ui,wc=new ue;class GE{constructor(e=new _s,t=new _s,i=new _s,r=new _s,s=new _s,o=new _s){this.planes=[e,t,i,r,s,o]}set(e,t,i,r,s,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(s),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=nr){const i=this.planes,r=e.elements,s=r[0],o=r[1],a=r[2],l=r[3],c=r[4],d=r[5],u=r[6],_=r[7],f=r[8],h=r[9],E=r[10],g=r[11],m=r[12],b=r[13],S=r[14],v=r[15];if(i[0].setComponents(l-s,_-c,g-f,v-m).normalize(),i[1].setComponents(l+s,_+c,g+f,v+m).normalize(),i[2].setComponents(l+o,_+d,g+h,v+b).normalize(),i[3].setComponents(l-o,_-d,g-h,v-b).normalize(),i[4].setComponents(l-a,_-u,g-E,v-S).normalize(),t===nr)i[5].setComponents(l+a,_+u,g+E,v+S).normalize();else if(t===Rd)i[5].setComponents(a,u,E,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),cs.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),cs.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(cs)}intersectsSprite(e){return cs.center.set(0,0,0),cs.radius=.7071067811865476,cs.applyMatrix4(e.matrixWorld),this.intersectsSphere(cs)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,wc.y=r.normal.y>0?e.max.y:e.min.y,wc.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(wc)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function _O(){let n=null,e=!1,t=null,i=null;function r(s,o){t(s,o),i=n.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(r),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){n=s}}}function iEt(n,e){const t=e.isWebGL2,i=new WeakMap;function r(c,d){const u=c.array,_=c.usage,f=u.byteLength,h=n.createBuffer();n.bindBuffer(d,h),n.bufferData(d,u,_),c.onUploadCallback();let E;if(u instanceof Float32Array)E=n.FLOAT;else if(u instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)E=n.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else E=n.UNSIGNED_SHORT;else if(u instanceof Int16Array)E=n.SHORT;else if(u instanceof Uint32Array)E=n.UNSIGNED_INT;else if(u instanceof Int32Array)E=n.INT;else if(u instanceof Int8Array)E=n.BYTE;else if(u instanceof Uint8Array)E=n.UNSIGNED_BYTE;else if(u instanceof Uint8ClampedArray)E=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+u);return{buffer:h,type:E,bytesPerElement:u.BYTES_PER_ELEMENT,version:c.version,size:f}}function s(c,d,u){const _=d.array,f=d._updateRange,h=d.updateRanges;if(n.bindBuffer(u,c),f.count===-1&&h.length===0&&n.bufferSubData(u,0,_),h.length!==0){for(let E=0,g=h.length;E1?null:t.copy(e.start).addScaledVector(i,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||oEt.getNormalMatrix(e),r=this.coplanarPoint(Qf).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const cs=new Ui,wc=new ue;class GE{constructor(e=new _s,t=new _s,i=new _s,r=new _s,s=new _s,o=new _s){this.planes=[e,t,i,r,s,o]}set(e,t,i,r,s,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(s),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=nr){const i=this.planes,r=e.elements,s=r[0],o=r[1],a=r[2],l=r[3],c=r[4],d=r[5],u=r[6],_=r[7],f=r[8],h=r[9],E=r[10],g=r[11],m=r[12],b=r[13],S=r[14],v=r[15];if(i[0].setComponents(l-s,_-c,g-f,v-m).normalize(),i[1].setComponents(l+s,_+c,g+f,v+m).normalize(),i[2].setComponents(l+o,_+d,g+h,v+b).normalize(),i[3].setComponents(l-o,_-d,g-h,v-b).normalize(),i[4].setComponents(l-a,_-u,g-E,v-S).normalize(),t===nr)i[5].setComponents(l+a,_+u,g+E,v+S).normalize();else if(t===Rd)i[5].setComponents(a,u,E,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),cs.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),cs.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(cs)}intersectsSprite(e){return cs.center.set(0,0,0),cs.radius=.7071067811865476,cs.applyMatrix4(e.matrixWorld),this.intersectsSphere(cs)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,wc.y=r.normal.y>0?e.max.y:e.min.y,wc.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(wc)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function _O(){let n=null,e=!1,t=null,i=null;function r(s,o){t(s,o),i=n.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(r),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){n=s}}}function aEt(n,e){const t=e.isWebGL2,i=new WeakMap;function r(c,d){const u=c.array,_=c.usage,f=u.byteLength,h=n.createBuffer();n.bindBuffer(d,h),n.bufferData(d,u,_),c.onUploadCallback();let E;if(u instanceof Float32Array)E=n.FLOAT;else if(u instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)E=n.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else E=n.UNSIGNED_SHORT;else if(u instanceof Int16Array)E=n.SHORT;else if(u instanceof Uint32Array)E=n.UNSIGNED_INT;else if(u instanceof Int32Array)E=n.INT;else if(u instanceof Int8Array)E=n.BYTE;else if(u instanceof Uint8Array)E=n.UNSIGNED_BYTE;else if(u instanceof Uint8ClampedArray)E=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+u);return{buffer:h,type:E,bytesPerElement:u.BYTES_PER_ELEMENT,version:c.version,size:f}}function s(c,d,u){const _=d.array,f=d._updateRange,h=d.updateRanges;if(n.bindBuffer(u,c),f.count===-1&&h.length===0&&n.bufferSubData(u,0,_),h.length!==0){for(let E=0,g=h.length;E{Ge.replace()})},closeToast(){this : cases.z; return clamp( threshold , 1.0e-6, 1.0 ); } -#endif`,oEt=`#ifdef USE_ALPHAMAP +#endif`,dEt=`#ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; -#endif`,aEt=`#ifdef USE_ALPHAMAP +#endif`,uEt=`#ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,lEt=`#ifdef USE_ALPHATEST +#endif`,_Et=`#ifdef USE_ALPHATEST if ( diffuseColor.a < alphaTest ) discard; -#endif`,cEt=`#ifdef USE_ALPHATEST +#endif`,pEt=`#ifdef USE_ALPHATEST uniform float alphaTest; -#endif`,dEt=`#ifdef USE_AOMAP +#endif`,hEt=`#ifdef USE_AOMAP float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; reflectedLight.indirectDiffuse *= ambientOcclusion; #if defined( USE_CLEARCOAT ) @@ -292,10 +294,10 @@ ${l}`;navigator.clipboard.writeText(c),Ue(()=>{Ge.replace()})},closeToast(){this float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); #endif -#endif`,uEt=`#ifdef USE_AOMAP +#endif`,fEt=`#ifdef USE_AOMAP uniform sampler2D aoMap; uniform float aoMapIntensity; -#endif`,_Et=`#ifdef USE_BATCHING +#endif`,mEt=`#ifdef USE_BATCHING attribute float batchId; uniform highp sampler2D batchingTexture; mat4 getBatchingMatrix( const in float i ) { @@ -309,15 +311,15 @@ ${l}`;navigator.clipboard.writeText(c),Ue(()=>{Ge.replace()})},closeToast(){this vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,pEt=`#ifdef USE_BATCHING +#endif`,gEt=`#ifdef USE_BATCHING mat4 batchingMatrix = getBatchingMatrix( batchId ); -#endif`,hEt=`vec3 transformed = vec3( position ); +#endif`,EEt=`vec3 transformed = vec3( position ); #ifdef USE_ALPHAHASH vPosition = vec3( position ); -#endif`,fEt=`vec3 objectNormal = vec3( normal ); +#endif`,bEt=`vec3 objectNormal = vec3( normal ); #ifdef USE_TANGENT vec3 objectTangent = vec3( tangent.xyz ); -#endif`,mEt=`float G_BlinnPhong_Implicit( ) { +#endif`,SEt=`float G_BlinnPhong_Implicit( ) { return 0.25; } float D_BlinnPhong( const in float shininess, const in float dotNH ) { @@ -331,7 +333,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve float G = G_BlinnPhong_Implicit( ); float D = D_BlinnPhong( shininess, dotNH ); return F * ( G * D ); -} // validated`,gEt=`#ifdef USE_IRIDESCENCE +} // validated`,yEt=`#ifdef USE_IRIDESCENCE const mat3 XYZ_TO_REC709 = mat3( 3.2404542, -0.9692660, 0.0556434, -1.5371385, 1.8760108, -0.2040259, @@ -394,7 +396,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve } return max( I, vec3( 0.0 ) ); } -#endif`,EEt=`#ifdef USE_BUMPMAP +#endif`,vEt=`#ifdef USE_BUMPMAP uniform sampler2D bumpMap; uniform float bumpScale; vec2 dHdxy_fwd() { @@ -415,7 +417,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); return normalize( abs( fDet ) * surf_norm - vGrad ); } -#endif`,bEt=`#if NUM_CLIPPING_PLANES > 0 +#endif`,TEt=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #pragma unroll_loop_start for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { @@ -433,26 +435,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #pragma unroll_loop_end if ( clipped ) discard; #endif -#endif`,SEt=`#if NUM_CLIPPING_PLANES > 0 +#endif`,xEt=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,yEt=`#if NUM_CLIPPING_PLANES > 0 +#endif`,CEt=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,vEt=`#if NUM_CLIPPING_PLANES > 0 +#endif`,REt=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,TEt=`#if defined( USE_COLOR_ALPHA ) +#endif`,AEt=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,xEt=`#if defined( USE_COLOR_ALPHA ) +#endif`,wEt=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,CEt=`#if defined( USE_COLOR_ALPHA ) +#endif`,OEt=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) varying vec3 vColor; -#endif`,REt=`#if defined( USE_COLOR_ALPHA ) +#endif`,NEt=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) vColor = vec3( 1.0 ); @@ -462,7 +464,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #endif #ifdef USE_INSTANCING_COLOR vColor.xyz *= instanceColor.xyz; -#endif`,AEt=`#define PI 3.141592653589793 +#endif`,MEt=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -540,7 +542,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,wEt=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,IEt=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -638,7 +640,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,OEt=`vec3 transformedNormal = objectNormal; +#endif`,DEt=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -667,18 +669,18 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,NEt=`#ifdef USE_DISPLACEMENTMAP +#endif`,LEt=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,MEt=`#ifdef USE_DISPLACEMENTMAP +#endif`,kEt=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,IEt=`#ifdef USE_EMISSIVEMAP +#endif`,PEt=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,DEt=`#ifdef USE_EMISSIVEMAP +#endif`,UEt=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,LEt="gl_FragColor = linearToOutputTexel( gl_FragColor );",kEt=` +#endif`,FEt="gl_FragColor = linearToOutputTexel( gl_FragColor );",BEt=` const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( vec3( 0.8224621, 0.177538, 0.0 ), vec3( 0.0331941, 0.9668058, 0.0 ), @@ -706,7 +708,7 @@ vec4 LinearToLinear( in vec4 value ) { } vec4 LinearTosRGB( in vec4 value ) { return sRGBTransferOETF( value ); -}`,PEt=`#ifdef USE_ENVMAP +}`,GEt=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -735,7 +737,7 @@ vec4 LinearTosRGB( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,UEt=`#ifdef USE_ENVMAP +#endif`,zEt=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; #ifdef ENVMAP_TYPE_CUBE @@ -744,7 +746,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,FEt=`#ifdef USE_ENVMAP +#endif`,VEt=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -755,7 +757,7 @@ vec4 LinearTosRGB( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,BEt=`#ifdef USE_ENVMAP +#endif`,HEt=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -766,7 +768,7 @@ vec4 LinearTosRGB( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,GEt=`#ifdef USE_ENVMAP +#endif`,qEt=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -783,18 +785,18 @@ vec4 LinearTosRGB( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,zEt=`#ifdef USE_FOG +#endif`,YEt=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,VEt=`#ifdef USE_FOG +#endif`,$Et=`#ifdef USE_FOG varying float vFogDepth; -#endif`,HEt=`#ifdef USE_FOG +#endif`,WEt=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,qEt=`#ifdef USE_FOG +#endif`,KEt=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -803,7 +805,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,YEt=`#ifdef USE_GRADIENTMAP +#endif`,jEt=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -815,16 +817,16 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,$Et=`#ifdef USE_LIGHTMAP +}`,QEt=`#ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; reflectedLight.indirectDiffuse += lightMapIrradiance; -#endif`,WEt=`#ifdef USE_LIGHTMAP +#endif`,XEt=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,KEt=`LambertMaterial material; +#endif`,ZEt=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,jEt=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,JEt=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -838,7 +840,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,QEt=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,ebt=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -961,7 +963,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,XEt=`#ifdef USE_ENVMAP +#endif`,tbt=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -994,8 +996,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,ZEt=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,JEt=`varying vec3 vViewPosition; +#endif`,nbt=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,ibt=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -1007,11 +1009,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,ebt=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,rbt=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,tbt=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,sbt=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -1028,7 +1030,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,nbt=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,obt=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -1111,7 +1113,7 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,ibt=`struct PhysicalMaterial { +#endif`,abt=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; @@ -1411,7 +1413,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,rbt=` +}`,lbt=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1526,7 +1528,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,sbt=`#if defined( RE_IndirectDiffuse ) +#endif`,cbt=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1545,25 +1547,25 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,obt=`#if defined( RE_IndirectDiffuse ) +#endif`,dbt=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,abt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,ubt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,lbt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,_bt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,cbt=`#ifdef USE_LOGDEPTHBUF +#endif`,pbt=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT varying float vFragDepth; varying float vIsPerspective; #else uniform float logDepthBufFC; #endif -#endif`,dbt=`#ifdef USE_LOGDEPTHBUF +#endif`,hbt=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); @@ -1573,16 +1575,16 @@ IncidentLight directLight; gl_Position.z *= gl_Position.w; } #endif -#endif`,ubt=`#ifdef USE_MAP +#endif`,fbt=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,_bt=`#ifdef USE_MAP +#endif`,mbt=`#ifdef USE_MAP uniform sampler2D map; -#endif`,pbt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,gbt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1594,7 +1596,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,hbt=`#if defined( USE_POINTS_UV ) +#endif`,Ebt=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1606,13 +1608,13 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,fbt=`float metalnessFactor = metalness; +#endif`,bbt=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,mbt=`#ifdef USE_METALNESSMAP +#endif`,Sbt=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,gbt=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) +#endif`,ybt=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1621,7 +1623,7 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,Ebt=`#ifdef USE_MORPHNORMALS +#endif`,vbt=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1633,7 +1635,7 @@ IncidentLight directLight; objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; #endif -#endif`,bbt=`#ifdef USE_MORPHTARGETS +#endif`,Tbt=`#ifdef USE_MORPHTARGETS uniform float morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1653,7 +1655,7 @@ IncidentLight directLight; uniform float morphTargetInfluences[ 4 ]; #endif #endif -#endif`,Sbt=`#ifdef USE_MORPHTARGETS +#endif`,xbt=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1671,7 +1673,7 @@ IncidentLight directLight; transformed += morphTarget7 * morphTargetInfluences[ 7 ]; #endif #endif -#endif`,ybt=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,Cbt=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1712,7 +1714,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,vbt=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,Rbt=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1727,25 +1729,25 @@ vec3 nonPerturbedNormal = normal;`,vbt=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,Tbt=`#ifndef FLAT_SHADED +#endif`,Abt=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,xbt=`#ifndef FLAT_SHADED +#endif`,wbt=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,Cbt=`#ifndef FLAT_SHADED +#endif`,Obt=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,Rbt=`#ifdef USE_NORMALMAP +#endif`,Nbt=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1767,13 +1769,13 @@ vec3 nonPerturbedNormal = normal;`,vbt=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,Abt=`#ifdef USE_CLEARCOAT +#endif`,Mbt=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,wbt=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,Ibt=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,Obt=`#ifdef USE_CLEARCOATMAP +#endif`,Dbt=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1782,18 +1784,18 @@ vec3 nonPerturbedNormal = normal;`,vbt=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,Nbt=`#ifdef USE_IRIDESCENCEMAP +#endif`,Lbt=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,Mbt=`#ifdef OPAQUE +#endif`,kbt=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Ibt=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Pbt=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -1834,9 +1836,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,Dbt=`#ifdef PREMULTIPLIED_ALPHA +}`,Ubt=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,Lbt=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,Fbt=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -1844,22 +1846,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,Bbt=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,Pbt=`#ifdef DITHERING +#endif`,Gbt=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,Ubt=`float roughnessFactor = roughness; +#endif`,zbt=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,Fbt=`#ifdef USE_ROUGHNESSMAP +#endif`,Vbt=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,Bbt=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,Hbt=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -2036,7 +2038,7 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); #endif } -#endif`,Gbt=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,qbt=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -2074,7 +2076,7 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,zbt=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,Ybt=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -2106,7 +2108,7 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,Vbt=`float getShadowMask() { +#endif`,$bt=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -2138,12 +2140,12 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING #endif #endif return shadow; -}`,Hbt=`#ifdef USE_SKINNING +}`,Wbt=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,qbt=`#ifdef USE_SKINNING +#endif`,Kbt=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2158,7 +2160,7 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,Ybt=`#ifdef USE_SKINNING +#endif`,jbt=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2166,7 +2168,7 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,$bt=`#ifdef USE_SKINNING +#endif`,Qbt=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2177,17 +2179,17 @@ gl_Position = projectionMatrix * mvPosition;`,kbt=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,Wbt=`float specularStrength; +#endif`,Xbt=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,Kbt=`#ifdef USE_SPECULARMAP +#endif`,Zbt=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,jbt=`#if defined( TONE_MAPPING ) +#endif`,Jbt=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,Qbt=`#ifndef saturate +#endif`,eSt=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2223,7 +2225,7 @@ vec3 ACESFilmicToneMapping( vec3 color ) { color = ACESOutputMat * color; return saturate( color ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,tSt=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2244,7 +2246,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,Zbt=`#ifdef USE_TRANSMISSION +#endif`,nSt=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2350,7 +2352,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,Jbt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,iSt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2420,7 +2422,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,eSt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,rSt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2514,7 +2516,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,tSt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,sSt=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2585,7 +2587,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,nSt=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,oSt=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2594,12 +2596,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Xbt=`#ifdef USE_TRANSMIS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`;const iSt=`varying vec2 vUv; +#endif`;const aSt=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,rSt=`uniform sampler2D t2D; +}`,lSt=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2611,14 +2613,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,sSt=`varying vec3 vWorldDirection; +}`,cSt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,oSt=`#ifdef ENVMAP_TYPE_CUBE +}`,dSt=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2640,14 +2642,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,aSt=`varying vec3 vWorldDirection; +}`,uSt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,lSt=`uniform samplerCube tCube; +}`,_St=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2657,7 +2659,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,cSt=`#include +}`,pSt=`#include #include #include #include @@ -2683,7 +2685,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,dSt=`#if DEPTH_PACKING == 3200 +}`,hSt=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2713,7 +2715,7 @@ void main() { #elif DEPTH_PACKING == 3201 gl_FragColor = packDepthToRGBA( fragCoordZ ); #endif -}`,uSt=`#define DISTANCE +}`,fSt=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2739,7 +2741,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,_St=`#define DISTANCE +}`,mSt=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2763,13 +2765,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,pSt=`varying vec3 vWorldDirection; +}`,gSt=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,hSt=`uniform sampler2D tEquirect; +}`,ESt=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2778,7 +2780,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,fSt=`uniform float scale; +}`,bSt=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2799,7 +2801,7 @@ void main() { #include #include #include -}`,mSt=`uniform vec3 diffuse; +}`,SSt=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2827,7 +2829,7 @@ void main() { #include #include #include -}`,gSt=`#include +}`,ySt=`#include #include #include #include @@ -2858,7 +2860,7 @@ void main() { #include #include #include -}`,ESt=`uniform vec3 diffuse; +}`,vSt=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -2906,7 +2908,7 @@ void main() { #include #include #include -}`,bSt=`#define LAMBERT +}`,TSt=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -2944,7 +2946,7 @@ void main() { #include #include #include -}`,SSt=`#define LAMBERT +}`,xSt=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3001,7 +3003,7 @@ void main() { #include #include #include -}`,ySt=`#define MATCAP +}`,CSt=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -3034,7 +3036,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,vSt=`#define MATCAP +}`,RSt=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3080,7 +3082,7 @@ void main() { #include #include #include -}`,TSt=`#define NORMAL +}`,ASt=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3112,7 +3114,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,xSt=`#define NORMAL +}`,wSt=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3133,7 +3135,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,CSt=`#define PHONG +}`,OSt=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3171,7 +3173,7 @@ void main() { #include #include #include -}`,RSt=`#define PHONG +}`,NSt=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3230,7 +3232,7 @@ void main() { #include #include #include -}`,ASt=`#define STANDARD +}`,MSt=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3272,7 +3274,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,wSt=`#define STANDARD +}`,ISt=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3394,7 +3396,7 @@ void main() { #include #include #include -}`,OSt=`#define TOON +}`,DSt=`#define TOON varying vec3 vViewPosition; #include #include @@ -3430,7 +3432,7 @@ void main() { #include #include #include -}`,NSt=`#define TOON +}`,LSt=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3483,7 +3485,7 @@ void main() { #include #include #include -}`,MSt=`uniform float size; +}`,kSt=`uniform float size; uniform float scale; #include #include @@ -3513,7 +3515,7 @@ void main() { #include #include #include -}`,ISt=`uniform vec3 diffuse; +}`,PSt=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3538,7 +3540,7 @@ void main() { #include #include #include -}`,DSt=`#include +}`,USt=`#include #include #include #include @@ -3560,7 +3562,7 @@ void main() { #include #include #include -}`,LSt=`uniform vec3 color; +}`,FSt=`uniform vec3 color; uniform float opacity; #include #include @@ -3576,7 +3578,7 @@ void main() { #include #include #include -}`,kSt=`uniform float rotation; +}`,BSt=`uniform float rotation; uniform vec2 center; #include #include @@ -3602,7 +3604,7 @@ void main() { #include #include #include -}`,PSt=`uniform vec3 diffuse; +}`,GSt=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3627,7 +3629,7 @@ void main() { #include #include #include -}`,ht={alphahash_fragment:rEt,alphahash_pars_fragment:sEt,alphamap_fragment:oEt,alphamap_pars_fragment:aEt,alphatest_fragment:lEt,alphatest_pars_fragment:cEt,aomap_fragment:dEt,aomap_pars_fragment:uEt,batching_pars_vertex:_Et,batching_vertex:pEt,begin_vertex:hEt,beginnormal_vertex:fEt,bsdfs:mEt,iridescence_fragment:gEt,bumpmap_pars_fragment:EEt,clipping_planes_fragment:bEt,clipping_planes_pars_fragment:SEt,clipping_planes_pars_vertex:yEt,clipping_planes_vertex:vEt,color_fragment:TEt,color_pars_fragment:xEt,color_pars_vertex:CEt,color_vertex:REt,common:AEt,cube_uv_reflection_fragment:wEt,defaultnormal_vertex:OEt,displacementmap_pars_vertex:NEt,displacementmap_vertex:MEt,emissivemap_fragment:IEt,emissivemap_pars_fragment:DEt,colorspace_fragment:LEt,colorspace_pars_fragment:kEt,envmap_fragment:PEt,envmap_common_pars_fragment:UEt,envmap_pars_fragment:FEt,envmap_pars_vertex:BEt,envmap_physical_pars_fragment:XEt,envmap_vertex:GEt,fog_vertex:zEt,fog_pars_vertex:VEt,fog_fragment:HEt,fog_pars_fragment:qEt,gradientmap_pars_fragment:YEt,lightmap_fragment:$Et,lightmap_pars_fragment:WEt,lights_lambert_fragment:KEt,lights_lambert_pars_fragment:jEt,lights_pars_begin:QEt,lights_toon_fragment:ZEt,lights_toon_pars_fragment:JEt,lights_phong_fragment:ebt,lights_phong_pars_fragment:tbt,lights_physical_fragment:nbt,lights_physical_pars_fragment:ibt,lights_fragment_begin:rbt,lights_fragment_maps:sbt,lights_fragment_end:obt,logdepthbuf_fragment:abt,logdepthbuf_pars_fragment:lbt,logdepthbuf_pars_vertex:cbt,logdepthbuf_vertex:dbt,map_fragment:ubt,map_pars_fragment:_bt,map_particle_fragment:pbt,map_particle_pars_fragment:hbt,metalnessmap_fragment:fbt,metalnessmap_pars_fragment:mbt,morphcolor_vertex:gbt,morphnormal_vertex:Ebt,morphtarget_pars_vertex:bbt,morphtarget_vertex:Sbt,normal_fragment_begin:ybt,normal_fragment_maps:vbt,normal_pars_fragment:Tbt,normal_pars_vertex:xbt,normal_vertex:Cbt,normalmap_pars_fragment:Rbt,clearcoat_normal_fragment_begin:Abt,clearcoat_normal_fragment_maps:wbt,clearcoat_pars_fragment:Obt,iridescence_pars_fragment:Nbt,opaque_fragment:Mbt,packing:Ibt,premultiplied_alpha_fragment:Dbt,project_vertex:Lbt,dithering_fragment:kbt,dithering_pars_fragment:Pbt,roughnessmap_fragment:Ubt,roughnessmap_pars_fragment:Fbt,shadowmap_pars_fragment:Bbt,shadowmap_pars_vertex:Gbt,shadowmap_vertex:zbt,shadowmask_pars_fragment:Vbt,skinbase_vertex:Hbt,skinning_pars_vertex:qbt,skinning_vertex:Ybt,skinnormal_vertex:$bt,specularmap_fragment:Wbt,specularmap_pars_fragment:Kbt,tonemapping_fragment:jbt,tonemapping_pars_fragment:Qbt,transmission_fragment:Xbt,transmission_pars_fragment:Zbt,uv_pars_fragment:Jbt,uv_pars_vertex:eSt,uv_vertex:tSt,worldpos_vertex:nSt,background_vert:iSt,background_frag:rSt,backgroundCube_vert:sSt,backgroundCube_frag:oSt,cube_vert:aSt,cube_frag:lSt,depth_vert:cSt,depth_frag:dSt,distanceRGBA_vert:uSt,distanceRGBA_frag:_St,equirect_vert:pSt,equirect_frag:hSt,linedashed_vert:fSt,linedashed_frag:mSt,meshbasic_vert:gSt,meshbasic_frag:ESt,meshlambert_vert:bSt,meshlambert_frag:SSt,meshmatcap_vert:ySt,meshmatcap_frag:vSt,meshnormal_vert:TSt,meshnormal_frag:xSt,meshphong_vert:CSt,meshphong_frag:RSt,meshphysical_vert:ASt,meshphysical_frag:wSt,meshtoon_vert:OSt,meshtoon_frag:NSt,points_vert:MSt,points_frag:ISt,shadow_vert:DSt,shadow_frag:LSt,sprite_vert:kSt,sprite_frag:PSt},ze={common:{diffuse:{value:new ot(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new mt},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new mt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new mt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new mt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new mt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new mt},normalScale:{value:new vt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new mt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new mt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new mt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new mt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ot(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{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 ot(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0},uvTransform:{value:new mt}},sprite:{diffuse:{value:new ot(16777215)},opacity:{value:1},center:{value:new vt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new mt},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0}}},yi={basic:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.fog]),vertexShader:ht.meshbasic_vert,fragmentShader:ht.meshbasic_frag},lambert:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,ze.lights,{emissive:{value:new ot(0)}}]),vertexShader:ht.meshlambert_vert,fragmentShader:ht.meshlambert_frag},phong:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,ze.lights,{emissive:{value:new ot(0)},specular:{value:new ot(1118481)},shininess:{value:30}}]),vertexShader:ht.meshphong_vert,fragmentShader:ht.meshphong_frag},standard:{uniforms:Cn([ze.common,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.roughnessmap,ze.metalnessmap,ze.fog,ze.lights,{emissive:{value:new ot(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ht.meshphysical_vert,fragmentShader:ht.meshphysical_frag},toon:{uniforms:Cn([ze.common,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.gradientmap,ze.fog,ze.lights,{emissive:{value:new ot(0)}}]),vertexShader:ht.meshtoon_vert,fragmentShader:ht.meshtoon_frag},matcap:{uniforms:Cn([ze.common,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,{matcap:{value:null}}]),vertexShader:ht.meshmatcap_vert,fragmentShader:ht.meshmatcap_frag},points:{uniforms:Cn([ze.points,ze.fog]),vertexShader:ht.points_vert,fragmentShader:ht.points_frag},dashed:{uniforms:Cn([ze.common,ze.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ht.linedashed_vert,fragmentShader:ht.linedashed_frag},depth:{uniforms:Cn([ze.common,ze.displacementmap]),vertexShader:ht.depth_vert,fragmentShader:ht.depth_frag},normal:{uniforms:Cn([ze.common,ze.bumpmap,ze.normalmap,ze.displacementmap,{opacity:{value:1}}]),vertexShader:ht.meshnormal_vert,fragmentShader:ht.meshnormal_frag},sprite:{uniforms:Cn([ze.sprite,ze.fog]),vertexShader:ht.sprite_vert,fragmentShader:ht.sprite_frag},background:{uniforms:{uvTransform:{value:new mt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ht.background_vert,fragmentShader:ht.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:ht.backgroundCube_vert,fragmentShader:ht.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ht.cube_vert,fragmentShader:ht.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ht.equirect_vert,fragmentShader:ht.equirect_frag},distanceRGBA:{uniforms:Cn([ze.common,ze.displacementmap,{referencePosition:{value:new ue},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ht.distanceRGBA_vert,fragmentShader:ht.distanceRGBA_frag},shadow:{uniforms:Cn([ze.lights,ze.fog,{color:{value:new ot(0)},opacity:{value:1}}]),vertexShader:ht.shadow_vert,fragmentShader:ht.shadow_frag}};yi.physical={uniforms:Cn([yi.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new mt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new mt},clearcoatNormalScale:{value:new vt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new mt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new mt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new mt},sheen:{value:0},sheenColor:{value:new ot(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new mt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new mt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new mt},transmissionSamplerSize:{value:new vt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new mt},attenuationDistance:{value:0},attenuationColor:{value:new ot(0)},specularColor:{value:new ot(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new mt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new mt},anisotropyVector:{value:new vt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new mt}}]),vertexShader:ht.meshphysical_vert,fragmentShader:ht.meshphysical_frag};const Oc={r:0,b:0,g:0};function USt(n,e,t,i,r,s,o){const a=new ot(0);let l=s===!0?0:1,c,d,u=null,_=0,f=null;function h(g,m){let b=!1,S=m.isScene===!0?m.background:null;S&&S.isTexture&&(S=(m.backgroundBlurriness>0?t:e).get(S)),S===null?E(a,l):S&&S.isColor&&(E(S,1),b=!0);const v=n.xr.getEnvironmentBlendMode();v==="additive"?i.buffers.color.setClear(0,0,0,1,o):v==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,o),(n.autoClear||b)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),S&&(S.isCubeTexture||S.mapping===ou)?(d===void 0&&(d=new An(new $r(1,1,1),new Us({name:"BackgroundCubeMaterial",uniforms:ta(yi.backgroundCube.uniforms),vertexShader:yi.backgroundCube.vertexShader,fragmentShader:yi.backgroundCube.fragmentShader,side:Ln,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),d.geometry.deleteAttribute("uv"),d.onBeforeRender=function(T,C,N){this.matrixWorld.copyPosition(N.matrixWorld)},Object.defineProperty(d.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(d)),d.material.uniforms.envMap.value=S,d.material.uniforms.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,d.material.uniforms.backgroundBlurriness.value=m.backgroundBlurriness,d.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,d.material.toneMapped=Nt.getTransfer(S.colorSpace)!==Gt,(u!==S||_!==S.version||f!==n.toneMapping)&&(d.material.needsUpdate=!0,u=S,_=S.version,f=n.toneMapping),d.layers.enableAll(),g.unshift(d,d.geometry,d.material,0,0,null)):S&&S.isTexture&&(c===void 0&&(c=new An(new zE(2,2),new Us({name:"BackgroundMaterial",uniforms:ta(yi.background.uniforms),vertexShader:yi.background.vertexShader,fragmentShader:yi.background.fragmentShader,side:cr,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=S,c.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,c.material.toneMapped=Nt.getTransfer(S.colorSpace)!==Gt,S.matrixAutoUpdate===!0&&S.updateMatrix(),c.material.uniforms.uvTransform.value.copy(S.matrix),(u!==S||_!==S.version||f!==n.toneMapping)&&(c.material.needsUpdate=!0,u=S,_=S.version,f=n.toneMapping),c.layers.enableAll(),g.unshift(c,c.geometry,c.material,0,0,null))}function E(g,m){g.getRGB(Oc,cO(n)),i.buffers.color.setClear(Oc.r,Oc.g,Oc.b,m,o)}return{getClearColor:function(){return a},setClearColor:function(g,m=1){a.set(g),l=m,E(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(g){l=g,E(a,l)},render:h}}function FSt(n,e,t,i){const r=n.getParameter(n.MAX_VERTEX_ATTRIBS),s=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||s!==null,a={},l=g(null);let c=l,d=!1;function u(I,V,z,D,Y){let K=!1;if(o){const q=E(D,z,V);c!==q&&(c=q,f(c.object)),K=m(I,D,z,Y),K&&b(I,D,z,Y)}else{const q=V.wireframe===!0;(c.geometry!==D.id||c.program!==z.id||c.wireframe!==q)&&(c.geometry=D.id,c.program=z.id,c.wireframe=q,K=!0)}Y!==null&&t.update(Y,n.ELEMENT_ARRAY_BUFFER),(K||d)&&(d=!1,x(I,V,z,D),Y!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(Y).buffer))}function _(){return i.isWebGL2?n.createVertexArray():s.createVertexArrayOES()}function f(I){return i.isWebGL2?n.bindVertexArray(I):s.bindVertexArrayOES(I)}function h(I){return i.isWebGL2?n.deleteVertexArray(I):s.deleteVertexArrayOES(I)}function E(I,V,z){const D=z.wireframe===!0;let Y=a[I.id];Y===void 0&&(Y={},a[I.id]=Y);let K=Y[V.id];K===void 0&&(K={},Y[V.id]=K);let q=K[D];return q===void 0&&(q=g(_()),K[D]=q),q}function g(I){const V=[],z=[],D=[];for(let Y=0;Y=0){const _e=Y[Z];let he=K[Z];if(he===void 0&&(Z==="instanceMatrix"&&I.instanceMatrix&&(he=I.instanceMatrix),Z==="instanceColor"&&I.instanceColor&&(he=I.instanceColor)),_e===void 0||_e.attribute!==he||he&&_e.data!==he.data)return!0;q++}return c.attributesNum!==q||c.index!==D}function b(I,V,z,D){const Y={},K=V.attributes;let q=0;const le=z.getAttributes();for(const Z in le)if(le[Z].location>=0){let _e=K[Z];_e===void 0&&(Z==="instanceMatrix"&&I.instanceMatrix&&(_e=I.instanceMatrix),Z==="instanceColor"&&I.instanceColor&&(_e=I.instanceColor));const he={};he.attribute=_e,_e&&_e.data&&(he.data=_e.data),Y[Z]=he,q++}c.attributes=Y,c.attributesNum=q,c.index=D}function S(){const I=c.newAttributes;for(let V=0,z=I.length;V=0){let J=Y[le];if(J===void 0&&(le==="instanceMatrix"&&I.instanceMatrix&&(J=I.instanceMatrix),le==="instanceColor"&&I.instanceColor&&(J=I.instanceColor)),J!==void 0){const _e=J.normalized,he=J.itemSize,ye=t.get(J);if(ye===void 0)continue;const j=ye.buffer,de=ye.type,Q=ye.bytesPerElement,fe=i.isWebGL2===!0&&(de===n.INT||de===n.UNSIGNED_INT||J.gpuType===Yw);if(J.isInterleavedBufferAttribute){const we=J.data,O=we.stride,F=J.offset;if(we.isInstancedInterleavedBuffer){for(let H=0;H0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";N="mediump"}return N==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&n.constructor.name==="WebGL2RenderingContext";let a=t.precision!==void 0?t.precision:"highp";const l=s(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);const c=o||e.has("WEBGL_draw_buffers"),d=t.logarithmicDepthBuffer===!0,u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),f=n.getParameter(n.MAX_TEXTURE_SIZE),h=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),E=n.getParameter(n.MAX_VERTEX_ATTRIBS),g=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),m=n.getParameter(n.MAX_VARYING_VECTORS),b=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),S=_>0,v=o||e.has("OES_texture_float"),T=S&&v,C=o?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:r,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:d,maxTextures:u,maxVertexTextures:_,maxTextureSize:f,maxCubemapSize:h,maxAttributes:E,maxVertexUniforms:g,maxVaryings:m,maxFragmentUniforms:b,vertexTextures:S,floatFragmentTextures:v,floatVertexTextures:T,maxSamples:C}}function zSt(n){const e=this;let t=null,i=0,r=!1,s=!1;const o=new _s,a=new mt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(u,_){const f=u.length!==0||_||i!==0||r;return r=_,i=u.length,f},this.beginShadows=function(){s=!0,d(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(u,_){t=d(u,_,0)},this.setState=function(u,_,f){const h=u.clippingPlanes,E=u.clipIntersection,g=u.clipShadows,m=n.get(u);if(!r||h===null||h.length===0||s&&!g)s?d(null):c();else{const b=s?0:i,S=b*4;let v=m.clippingState||null;l.value=v,v=d(h,_,S,f);for(let T=0;T!==S;++T)v[T]=t[T];m.clippingState=v,this.numIntersection=E?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function d(u,_,f,h){const E=u!==null?u.length:0;let g=null;if(E!==0){if(g=l.value,h!==!0||g===null){const m=f+E*4,b=_.matrixWorldInverse;a.getNormalMatrix(b),(g===null||g.length0){const c=new eEt(l.height/2);return c.fromEquirectangularTexture(n,o),e.set(o,c),o.addEventListener("dispose",r),t(c.texture,o.mapping)}else return null}}return o}function r(o){const a=o.target;a.removeEventListener("dispose",r);const l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:i,dispose:s}}class VE extends dO{constructor(e=-1,t=1,i=1,r=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=i-e,o=i+e,a=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,d=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,o=s+c*this.view.width,a-=d*this.view.offsetY,l=a-d*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const yo=4,SC=[.125,.215,.35,.446,.526,.582],Ss=20,Xf=new VE,yC=new ot;let Zf=null,Jf=0,em=0;const ps=(1+Math.sqrt(5))/2,fo=1/ps,vC=[new ue(1,1,1),new ue(-1,1,1),new ue(1,1,-1),new ue(-1,1,-1),new ue(0,ps,fo),new ue(0,ps,-fo),new ue(fo,0,ps),new ue(-fo,0,ps),new ue(ps,fo,0),new ue(-ps,fo,0)];class TC{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){Zf=this._renderer.getRenderTarget(),Jf=this._renderer.getActiveCubeFace(),em=this._renderer.getActiveMipmapLevel(),this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,i,r,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=RC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=CC(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?S:0,S,S),d.setRenderTarget(r),E&&d.render(h,a),d.render(e,a)}h.geometry.dispose(),h.material.dispose(),d.toneMapping=_,d.autoClear=u,e.background=g}_textureToCubeUV(e,t){const i=this._renderer,r=e.mapping===jo||e.mapping===Qo;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=RC()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=CC());const s=r?this._cubemapMaterial:this._equirectMaterial,o=new An(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;const l=this._cubeSize;Nc(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(o,Xf)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let r=1;rSs&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Ss}`);const m=[];let b=0;for(let N=0;NS-yo?r-S+yo:0),C=4*(this._cubeSize-v);Nc(t,T,C,3*v,2*v),l.setRenderTarget(t),l.render(u,Xf)}}function HSt(n){const e=[],t=[],i=[];let r=n;const s=n-yo+1+SC.length;for(let o=0;on-yo?l=SC[o-n+yo-1]:o===0&&(l=0),i.push(l);const c=1/(a-2),d=-c,u=1+c,_=[d,d,u,d,u,u,d,d,u,u,d,u],f=6,h=6,E=3,g=2,m=1,b=new Float32Array(E*h*f),S=new Float32Array(g*h*f),v=new Float32Array(m*h*f);for(let C=0;C2?0:-1,y=[N,x,0,N+2/3,x,0,N+2/3,x+1,0,N,x,0,N+2/3,x+1,0,N,x+1,0];b.set(y,E*h*C),S.set(_,g*h*C);const R=[C,C,C,C,C,C];v.set(R,m*h*C)}const T=new Fi;T.setAttribute("position",new wn(b,E)),T.setAttribute("uv",new wn(S,g)),T.setAttribute("faceIndex",new wn(v,m)),e.push(T),r>yo&&r--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function xC(n,e,t){const i=new Ps(n,e,t);return i.texture.mapping=ou,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Nc(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function qSt(n,e,t){const i=new Float32Array(Ss),r=new ue(0,1,0);return new Us({name:"SphericalGaussianBlur",defines:{n:Ss,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:HE(),fragmentShader:` +}`,ht={alphahash_fragment:lEt,alphahash_pars_fragment:cEt,alphamap_fragment:dEt,alphamap_pars_fragment:uEt,alphatest_fragment:_Et,alphatest_pars_fragment:pEt,aomap_fragment:hEt,aomap_pars_fragment:fEt,batching_pars_vertex:mEt,batching_vertex:gEt,begin_vertex:EEt,beginnormal_vertex:bEt,bsdfs:SEt,iridescence_fragment:yEt,bumpmap_pars_fragment:vEt,clipping_planes_fragment:TEt,clipping_planes_pars_fragment:xEt,clipping_planes_pars_vertex:CEt,clipping_planes_vertex:REt,color_fragment:AEt,color_pars_fragment:wEt,color_pars_vertex:OEt,color_vertex:NEt,common:MEt,cube_uv_reflection_fragment:IEt,defaultnormal_vertex:DEt,displacementmap_pars_vertex:LEt,displacementmap_vertex:kEt,emissivemap_fragment:PEt,emissivemap_pars_fragment:UEt,colorspace_fragment:FEt,colorspace_pars_fragment:BEt,envmap_fragment:GEt,envmap_common_pars_fragment:zEt,envmap_pars_fragment:VEt,envmap_pars_vertex:HEt,envmap_physical_pars_fragment:tbt,envmap_vertex:qEt,fog_vertex:YEt,fog_pars_vertex:$Et,fog_fragment:WEt,fog_pars_fragment:KEt,gradientmap_pars_fragment:jEt,lightmap_fragment:QEt,lightmap_pars_fragment:XEt,lights_lambert_fragment:ZEt,lights_lambert_pars_fragment:JEt,lights_pars_begin:ebt,lights_toon_fragment:nbt,lights_toon_pars_fragment:ibt,lights_phong_fragment:rbt,lights_phong_pars_fragment:sbt,lights_physical_fragment:obt,lights_physical_pars_fragment:abt,lights_fragment_begin:lbt,lights_fragment_maps:cbt,lights_fragment_end:dbt,logdepthbuf_fragment:ubt,logdepthbuf_pars_fragment:_bt,logdepthbuf_pars_vertex:pbt,logdepthbuf_vertex:hbt,map_fragment:fbt,map_pars_fragment:mbt,map_particle_fragment:gbt,map_particle_pars_fragment:Ebt,metalnessmap_fragment:bbt,metalnessmap_pars_fragment:Sbt,morphcolor_vertex:ybt,morphnormal_vertex:vbt,morphtarget_pars_vertex:Tbt,morphtarget_vertex:xbt,normal_fragment_begin:Cbt,normal_fragment_maps:Rbt,normal_pars_fragment:Abt,normal_pars_vertex:wbt,normal_vertex:Obt,normalmap_pars_fragment:Nbt,clearcoat_normal_fragment_begin:Mbt,clearcoat_normal_fragment_maps:Ibt,clearcoat_pars_fragment:Dbt,iridescence_pars_fragment:Lbt,opaque_fragment:kbt,packing:Pbt,premultiplied_alpha_fragment:Ubt,project_vertex:Fbt,dithering_fragment:Bbt,dithering_pars_fragment:Gbt,roughnessmap_fragment:zbt,roughnessmap_pars_fragment:Vbt,shadowmap_pars_fragment:Hbt,shadowmap_pars_vertex:qbt,shadowmap_vertex:Ybt,shadowmask_pars_fragment:$bt,skinbase_vertex:Wbt,skinning_pars_vertex:Kbt,skinning_vertex:jbt,skinnormal_vertex:Qbt,specularmap_fragment:Xbt,specularmap_pars_fragment:Zbt,tonemapping_fragment:Jbt,tonemapping_pars_fragment:eSt,transmission_fragment:tSt,transmission_pars_fragment:nSt,uv_pars_fragment:iSt,uv_pars_vertex:rSt,uv_vertex:sSt,worldpos_vertex:oSt,background_vert:aSt,background_frag:lSt,backgroundCube_vert:cSt,backgroundCube_frag:dSt,cube_vert:uSt,cube_frag:_St,depth_vert:pSt,depth_frag:hSt,distanceRGBA_vert:fSt,distanceRGBA_frag:mSt,equirect_vert:gSt,equirect_frag:ESt,linedashed_vert:bSt,linedashed_frag:SSt,meshbasic_vert:ySt,meshbasic_frag:vSt,meshlambert_vert:TSt,meshlambert_frag:xSt,meshmatcap_vert:CSt,meshmatcap_frag:RSt,meshnormal_vert:ASt,meshnormal_frag:wSt,meshphong_vert:OSt,meshphong_frag:NSt,meshphysical_vert:MSt,meshphysical_frag:ISt,meshtoon_vert:DSt,meshtoon_frag:LSt,points_vert:kSt,points_frag:PSt,shadow_vert:USt,shadow_frag:FSt,sprite_vert:BSt,sprite_frag:GSt},ze={common:{diffuse:{value:new ot(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new mt},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new mt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new mt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new mt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new mt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new mt},normalScale:{value:new vt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new mt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new mt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new mt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new mt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ot(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{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 ot(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0},uvTransform:{value:new mt}},sprite:{diffuse:{value:new ot(16777215)},opacity:{value:1},center:{value:new vt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new mt},alphaMap:{value:null},alphaMapTransform:{value:new mt},alphaTest:{value:0}}},yi={basic:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.fog]),vertexShader:ht.meshbasic_vert,fragmentShader:ht.meshbasic_frag},lambert:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,ze.lights,{emissive:{value:new ot(0)}}]),vertexShader:ht.meshlambert_vert,fragmentShader:ht.meshlambert_frag},phong:{uniforms:Cn([ze.common,ze.specularmap,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,ze.lights,{emissive:{value:new ot(0)},specular:{value:new ot(1118481)},shininess:{value:30}}]),vertexShader:ht.meshphong_vert,fragmentShader:ht.meshphong_frag},standard:{uniforms:Cn([ze.common,ze.envmap,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.roughnessmap,ze.metalnessmap,ze.fog,ze.lights,{emissive:{value:new ot(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ht.meshphysical_vert,fragmentShader:ht.meshphysical_frag},toon:{uniforms:Cn([ze.common,ze.aomap,ze.lightmap,ze.emissivemap,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.gradientmap,ze.fog,ze.lights,{emissive:{value:new ot(0)}}]),vertexShader:ht.meshtoon_vert,fragmentShader:ht.meshtoon_frag},matcap:{uniforms:Cn([ze.common,ze.bumpmap,ze.normalmap,ze.displacementmap,ze.fog,{matcap:{value:null}}]),vertexShader:ht.meshmatcap_vert,fragmentShader:ht.meshmatcap_frag},points:{uniforms:Cn([ze.points,ze.fog]),vertexShader:ht.points_vert,fragmentShader:ht.points_frag},dashed:{uniforms:Cn([ze.common,ze.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ht.linedashed_vert,fragmentShader:ht.linedashed_frag},depth:{uniforms:Cn([ze.common,ze.displacementmap]),vertexShader:ht.depth_vert,fragmentShader:ht.depth_frag},normal:{uniforms:Cn([ze.common,ze.bumpmap,ze.normalmap,ze.displacementmap,{opacity:{value:1}}]),vertexShader:ht.meshnormal_vert,fragmentShader:ht.meshnormal_frag},sprite:{uniforms:Cn([ze.sprite,ze.fog]),vertexShader:ht.sprite_vert,fragmentShader:ht.sprite_frag},background:{uniforms:{uvTransform:{value:new mt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ht.background_vert,fragmentShader:ht.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:ht.backgroundCube_vert,fragmentShader:ht.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ht.cube_vert,fragmentShader:ht.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ht.equirect_vert,fragmentShader:ht.equirect_frag},distanceRGBA:{uniforms:Cn([ze.common,ze.displacementmap,{referencePosition:{value:new ue},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ht.distanceRGBA_vert,fragmentShader:ht.distanceRGBA_frag},shadow:{uniforms:Cn([ze.lights,ze.fog,{color:{value:new ot(0)},opacity:{value:1}}]),vertexShader:ht.shadow_vert,fragmentShader:ht.shadow_frag}};yi.physical={uniforms:Cn([yi.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new mt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new mt},clearcoatNormalScale:{value:new vt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new mt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new mt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new mt},sheen:{value:0},sheenColor:{value:new ot(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new mt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new mt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new mt},transmissionSamplerSize:{value:new vt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new mt},attenuationDistance:{value:0},attenuationColor:{value:new ot(0)},specularColor:{value:new ot(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new mt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new mt},anisotropyVector:{value:new vt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new mt}}]),vertexShader:ht.meshphysical_vert,fragmentShader:ht.meshphysical_frag};const Oc={r:0,b:0,g:0};function zSt(n,e,t,i,r,s,o){const a=new ot(0);let l=s===!0?0:1,c,d,u=null,_=0,f=null;function h(g,m){let b=!1,S=m.isScene===!0?m.background:null;S&&S.isTexture&&(S=(m.backgroundBlurriness>0?t:e).get(S)),S===null?E(a,l):S&&S.isColor&&(E(S,1),b=!0);const v=n.xr.getEnvironmentBlendMode();v==="additive"?i.buffers.color.setClear(0,0,0,1,o):v==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,o),(n.autoClear||b)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),S&&(S.isCubeTexture||S.mapping===ou)?(d===void 0&&(d=new An(new $r(1,1,1),new Us({name:"BackgroundCubeMaterial",uniforms:ta(yi.backgroundCube.uniforms),vertexShader:yi.backgroundCube.vertexShader,fragmentShader:yi.backgroundCube.fragmentShader,side:Ln,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),d.geometry.deleteAttribute("uv"),d.onBeforeRender=function(T,C,N){this.matrixWorld.copyPosition(N.matrixWorld)},Object.defineProperty(d.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(d)),d.material.uniforms.envMap.value=S,d.material.uniforms.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,d.material.uniforms.backgroundBlurriness.value=m.backgroundBlurriness,d.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,d.material.toneMapped=Nt.getTransfer(S.colorSpace)!==Gt,(u!==S||_!==S.version||f!==n.toneMapping)&&(d.material.needsUpdate=!0,u=S,_=S.version,f=n.toneMapping),d.layers.enableAll(),g.unshift(d,d.geometry,d.material,0,0,null)):S&&S.isTexture&&(c===void 0&&(c=new An(new zE(2,2),new Us({name:"BackgroundMaterial",uniforms:ta(yi.background.uniforms),vertexShader:yi.background.vertexShader,fragmentShader:yi.background.fragmentShader,side:cr,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=S,c.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,c.material.toneMapped=Nt.getTransfer(S.colorSpace)!==Gt,S.matrixAutoUpdate===!0&&S.updateMatrix(),c.material.uniforms.uvTransform.value.copy(S.matrix),(u!==S||_!==S.version||f!==n.toneMapping)&&(c.material.needsUpdate=!0,u=S,_=S.version,f=n.toneMapping),c.layers.enableAll(),g.unshift(c,c.geometry,c.material,0,0,null))}function E(g,m){g.getRGB(Oc,cO(n)),i.buffers.color.setClear(Oc.r,Oc.g,Oc.b,m,o)}return{getClearColor:function(){return a},setClearColor:function(g,m=1){a.set(g),l=m,E(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(g){l=g,E(a,l)},render:h}}function VSt(n,e,t,i){const r=n.getParameter(n.MAX_VERTEX_ATTRIBS),s=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||s!==null,a={},l=g(null);let c=l,d=!1;function u(I,V,z,D,Y){let K=!1;if(o){const q=E(D,z,V);c!==q&&(c=q,f(c.object)),K=m(I,D,z,Y),K&&b(I,D,z,Y)}else{const q=V.wireframe===!0;(c.geometry!==D.id||c.program!==z.id||c.wireframe!==q)&&(c.geometry=D.id,c.program=z.id,c.wireframe=q,K=!0)}Y!==null&&t.update(Y,n.ELEMENT_ARRAY_BUFFER),(K||d)&&(d=!1,x(I,V,z,D),Y!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(Y).buffer))}function _(){return i.isWebGL2?n.createVertexArray():s.createVertexArrayOES()}function f(I){return i.isWebGL2?n.bindVertexArray(I):s.bindVertexArrayOES(I)}function h(I){return i.isWebGL2?n.deleteVertexArray(I):s.deleteVertexArrayOES(I)}function E(I,V,z){const D=z.wireframe===!0;let Y=a[I.id];Y===void 0&&(Y={},a[I.id]=Y);let K=Y[V.id];K===void 0&&(K={},Y[V.id]=K);let q=K[D];return q===void 0&&(q=g(_()),K[D]=q),q}function g(I){const V=[],z=[],D=[];for(let Y=0;Y=0){const _e=Y[Z];let he=K[Z];if(he===void 0&&(Z==="instanceMatrix"&&I.instanceMatrix&&(he=I.instanceMatrix),Z==="instanceColor"&&I.instanceColor&&(he=I.instanceColor)),_e===void 0||_e.attribute!==he||he&&_e.data!==he.data)return!0;q++}return c.attributesNum!==q||c.index!==D}function b(I,V,z,D){const Y={},K=V.attributes;let q=0;const le=z.getAttributes();for(const Z in le)if(le[Z].location>=0){let _e=K[Z];_e===void 0&&(Z==="instanceMatrix"&&I.instanceMatrix&&(_e=I.instanceMatrix),Z==="instanceColor"&&I.instanceColor&&(_e=I.instanceColor));const he={};he.attribute=_e,_e&&_e.data&&(he.data=_e.data),Y[Z]=he,q++}c.attributes=Y,c.attributesNum=q,c.index=D}function S(){const I=c.newAttributes;for(let V=0,z=I.length;V=0){let J=Y[le];if(J===void 0&&(le==="instanceMatrix"&&I.instanceMatrix&&(J=I.instanceMatrix),le==="instanceColor"&&I.instanceColor&&(J=I.instanceColor)),J!==void 0){const _e=J.normalized,he=J.itemSize,ye=t.get(J);if(ye===void 0)continue;const j=ye.buffer,de=ye.type,Q=ye.bytesPerElement,fe=i.isWebGL2===!0&&(de===n.INT||de===n.UNSIGNED_INT||J.gpuType===Yw);if(J.isInterleavedBufferAttribute){const we=J.data,O=we.stride,F=J.offset;if(we.isInstancedInterleavedBuffer){for(let H=0;H0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";N="mediump"}return N==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&n.constructor.name==="WebGL2RenderingContext";let a=t.precision!==void 0?t.precision:"highp";const l=s(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);const c=o||e.has("WEBGL_draw_buffers"),d=t.logarithmicDepthBuffer===!0,u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),f=n.getParameter(n.MAX_TEXTURE_SIZE),h=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),E=n.getParameter(n.MAX_VERTEX_ATTRIBS),g=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),m=n.getParameter(n.MAX_VARYING_VECTORS),b=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),S=_>0,v=o||e.has("OES_texture_float"),T=S&&v,C=o?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:r,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:d,maxTextures:u,maxVertexTextures:_,maxTextureSize:f,maxCubemapSize:h,maxAttributes:E,maxVertexUniforms:g,maxVaryings:m,maxFragmentUniforms:b,vertexTextures:S,floatFragmentTextures:v,floatVertexTextures:T,maxSamples:C}}function YSt(n){const e=this;let t=null,i=0,r=!1,s=!1;const o=new _s,a=new mt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(u,_){const f=u.length!==0||_||i!==0||r;return r=_,i=u.length,f},this.beginShadows=function(){s=!0,d(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(u,_){t=d(u,_,0)},this.setState=function(u,_,f){const h=u.clippingPlanes,E=u.clipIntersection,g=u.clipShadows,m=n.get(u);if(!r||h===null||h.length===0||s&&!g)s?d(null):c();else{const b=s?0:i,S=b*4;let v=m.clippingState||null;l.value=v,v=d(h,_,S,f);for(let T=0;T!==S;++T)v[T]=t[T];m.clippingState=v,this.numIntersection=E?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function d(u,_,f,h){const E=u!==null?u.length:0;let g=null;if(E!==0){if(g=l.value,h!==!0||g===null){const m=f+E*4,b=_.matrixWorldInverse;a.getNormalMatrix(b),(g===null||g.length0){const c=new rEt(l.height/2);return c.fromEquirectangularTexture(n,o),e.set(o,c),o.addEventListener("dispose",r),t(c.texture,o.mapping)}else return null}}return o}function r(o){const a=o.target;a.removeEventListener("dispose",r);const l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:i,dispose:s}}class VE extends dO{constructor(e=-1,t=1,i=1,r=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=i-e,o=i+e,a=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,d=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,o=s+c*this.view.width,a-=d*this.view.offsetY,l=a-d*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const yo=4,SC=[.125,.215,.35,.446,.526,.582],Ss=20,Xf=new VE,yC=new ot;let Zf=null,Jf=0,em=0;const ps=(1+Math.sqrt(5))/2,fo=1/ps,vC=[new ue(1,1,1),new ue(-1,1,1),new ue(1,1,-1),new ue(-1,1,-1),new ue(0,ps,fo),new ue(0,ps,-fo),new ue(fo,0,ps),new ue(-fo,0,ps),new ue(ps,fo,0),new ue(-ps,fo,0)];class TC{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){Zf=this._renderer.getRenderTarget(),Jf=this._renderer.getActiveCubeFace(),em=this._renderer.getActiveMipmapLevel(),this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,i,r,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=RC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=CC(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?S:0,S,S),d.setRenderTarget(r),E&&d.render(h,a),d.render(e,a)}h.geometry.dispose(),h.material.dispose(),d.toneMapping=_,d.autoClear=u,e.background=g}_textureToCubeUV(e,t){const i=this._renderer,r=e.mapping===jo||e.mapping===Qo;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=RC()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=CC());const s=r?this._cubemapMaterial:this._equirectMaterial,o=new An(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;const l=this._cubeSize;Nc(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(o,Xf)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let r=1;rSs&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Ss}`);const m=[];let b=0;for(let N=0;NS-yo?r-S+yo:0),C=4*(this._cubeSize-v);Nc(t,T,C,3*v,2*v),l.setRenderTarget(t),l.render(u,Xf)}}function WSt(n){const e=[],t=[],i=[];let r=n;const s=n-yo+1+SC.length;for(let o=0;on-yo?l=SC[o-n+yo-1]:o===0&&(l=0),i.push(l);const c=1/(a-2),d=-c,u=1+c,_=[d,d,u,d,u,u,d,d,u,u,d,u],f=6,h=6,E=3,g=2,m=1,b=new Float32Array(E*h*f),S=new Float32Array(g*h*f),v=new Float32Array(m*h*f);for(let C=0;C2?0:-1,y=[N,x,0,N+2/3,x,0,N+2/3,x+1,0,N,x,0,N+2/3,x+1,0,N,x+1,0];b.set(y,E*h*C),S.set(_,g*h*C);const R=[C,C,C,C,C,C];v.set(R,m*h*C)}const T=new Fi;T.setAttribute("position",new wn(b,E)),T.setAttribute("uv",new wn(S,g)),T.setAttribute("faceIndex",new wn(v,m)),e.push(T),r>yo&&r--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function xC(n,e,t){const i=new Ps(n,e,t);return i.texture.mapping=ou,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Nc(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function KSt(n,e,t){const i=new Float32Array(Ss),r=new ue(0,1,0);return new Us({name:"SphericalGaussianBlur",defines:{n:Ss,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:HE(),fragmentShader:` precision mediump float; precision mediump int; @@ -3777,26 +3779,26 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function YSt(n){let e=new WeakMap,t=null;function i(a){if(a&&a.isTexture){const l=a.mapping,c=l===Xm||l===Zm,d=l===jo||l===Qo;if(c||d)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let u=e.get(a);return t===null&&(t=new TC(n)),u=c?t.fromEquirectangular(a,u):t.fromCubemap(a,u),e.set(a,u),u.texture}else{if(e.has(a))return e.get(a).texture;{const u=a.image;if(c&&u&&u.height>0||d&&u&&r(u)){t===null&&(t=new TC(n));const _=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,_),a.addEventListener("dispose",s),_.texture}else return null}}}return a}function r(a){let l=0;const c=6;for(let d=0;de.maxTextureSize&&(P=Math.ceil(R/e.maxTextureSize),R=e.maxTextureSize);const k=new Float32Array(R*P*4*E),W=new rO(k,R,P,E);W.type=tr,W.needsUpdate=!0;const I=y*4;for(let z=0;z0)return n;const r=e*t;let s=AC[r];if(s===void 0&&(s=new Float32Array(r),AC[r]=s),e!==0){i.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(s,a)}return s}function nn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0||d&&u&&r(u)){t===null&&(t=new TC(n));const _=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,_),a.addEventListener("dispose",s),_.texture}else return null}}}return a}function r(a){let l=0;const c=6;for(let d=0;de.maxTextureSize&&(P=Math.ceil(R/e.maxTextureSize),R=e.maxTextureSize);const k=new Float32Array(R*P*4*E),W=new rO(k,R,P,E);W.type=tr,W.needsUpdate=!0;const I=y*4;for(let z=0;z0)return n;const r=e*t;let s=AC[r];if(s===void 0&&(s=new Float32Array(r),AC[r]=s),e!==0){i.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(s,a)}return s}function nn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${a}: ${t[o]}`)}return i.join(` -`)}function Wyt(n){const e=Nt.getPrimaries(Nt.workingColorSpace),t=Nt.getPrimaries(n);let i;switch(e===t?i="":e===Cd&&t===xd?i="LinearDisplayP3ToLinearSRGB":e===xd&&t===Cd&&(i="LinearSRGBToLinearDisplayP3"),n){case hn:case au:return[i,"LinearTransferOETF"];case Kt:case FE:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),[i,"LinearTransferOETF"]}}function LC(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),r=n.getShaderInfoLog(e).trim();if(i&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const o=parseInt(s[1]);return t.toUpperCase()+` +`)}function Xyt(n){const e=Nt.getPrimaries(Nt.workingColorSpace),t=Nt.getPrimaries(n);let i;switch(e===t?i="":e===Cd&&t===xd?i="LinearDisplayP3ToLinearSRGB":e===xd&&t===Cd&&(i="LinearSRGBToLinearDisplayP3"),n){case hn:case au:return[i,"LinearTransferOETF"];case Kt:case FE:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),[i,"LinearTransferOETF"]}}function LC(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),r=n.getShaderInfoLog(e).trim();if(i&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const o=parseInt(s[1]);return t.toUpperCase()+` `+r+` -`+$yt(n.getShaderSource(e),o)}else return r}function Kyt(n,e){const t=Wyt(e);return`vec4 ${n}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function jyt(n,e){let t;switch(e){case Ymt:t="Linear";break;case $mt:t="Reinhard";break;case Wmt:t="OptimizedCineon";break;case Kmt:t="ACESFilmic";break;case jmt:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function Qyt(n){return[n.extensionDerivatives||n.envMapCubeUVHeight||n.bumpMap||n.normalMapTangentSpace||n.clearcoatNormalMap||n.flatShading||n.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(n.extensionFragDepth||n.logarithmicDepthBuffer)&&n.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",n.extensionDrawBuffers&&n.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(n.extensionShaderTextureLOD||n.envMap||n.transmission)&&n.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter($a).join(` -`)}function Xyt(n){const e=[];for(const t in n){const i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` -`)}function Zyt(n,e){const t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function rg(n){return n.replace(Jyt,tvt)}const evt=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function tvt(n,e){let t=ht[e];if(t===void 0){const i=evt.get(e);if(i!==void 0)t=ht[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,i);else throw new Error("Can not resolve #include <"+e+">")}return rg(t)}const nvt=/#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 UC(n){return n.replace(nvt,ivt)}function ivt(n,e,t,i){let r="";for(let s=parseInt(e);s/gm;function rg(n){return n.replace(ivt,svt)}const rvt=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function svt(n,e){let t=ht[e];if(t===void 0){const i=rvt.get(e);if(i!==void 0)t=ht[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,i);else throw new Error("Can not resolve #include <"+e+">")}return rg(t)}const ovt=/#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 UC(n){return n.replace(ovt,avt)}function avt(n,e,t,i){let r="";for(let s=parseInt(e);s0&&(g+=` `),m=[f,"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,h].filter($a).join(` `),m.length>0&&(m+=` `)):(g=[FC(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,h,t.batching?"#define USE_BATCHING":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+d:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors&&t.isWebGL2?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","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","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","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` `].filter($a).join(` -`),m=[f,FC(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,h,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+d:"",t.envMap?"#define "+u:"",_?"#define CUBEUV_TEXEL_WIDTH "+_.texelWidth:"",_?"#define CUBEUV_TEXEL_HEIGHT "+_.texelHeight:"",_?"#define CUBEUV_MAX_MIP "+_.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==qr?"#define TONE_MAPPING":"",t.toneMapping!==qr?ht.tonemapping_pars_fragment:"",t.toneMapping!==qr?jyt("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",ht.colorspace_pars_fragment,Kyt("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`),m=[f,FC(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,h,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+d:"",t.envMap?"#define "+u:"",_?"#define CUBEUV_TEXEL_WIDTH "+_.texelWidth:"",_?"#define CUBEUV_TEXEL_HEIGHT "+_.texelHeight:"",_?"#define CUBEUV_MAX_MIP "+_.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==qr?"#define TONE_MAPPING":"",t.toneMapping!==qr?ht.tonemapping_pars_fragment:"",t.toneMapping!==qr?Jyt("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",ht.colorspace_pars_fragment,Zyt("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` `].filter($a).join(` `)),o=rg(o),o=kC(o,t),o=PC(o,t),a=rg(a),a=kC(a,t),a=PC(a,t),o=UC(o),a=UC(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(b=`#version 300 es `,g=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` @@ -3807,9 +3809,9 @@ precision `+n.precision+" int;";return n.precision==="highp"?e+=` Program Info Log: `+k+` `+D+` -`+Y)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(W===""||I==="")&&(z=!1);z&&(P.diagnostics={runnable:V,programLog:k,vertexShader:{log:W,prefix:g},fragmentShader:{log:I,prefix:m}})}r.deleteShader(T),r.deleteShader(C),x=new Xc(r,E),y=Zyt(r,E)}let x;this.getUniforms=function(){return x===void 0&&N(this),x};let y;this.getAttributes=function(){return y===void 0&&N(this),y};let R=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return R===!1&&(R=r.getProgramParameter(E,qyt)),R},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(E),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Yyt++,this.cacheKey=e,this.usedTimes=1,this.program=E,this.vertexShader=T,this.fragmentShader=C,this}let dvt=0;class uvt{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new _vt(e),t.set(e,i)),i}}class _vt{constructor(e){this.id=dvt++,this.code=e,this.usedTimes=0}}function pvt(n,e,t,i,r,s,o){const a=new sO,l=new uvt,c=[],d=r.isWebGL2,u=r.logarithmicDepthBuffer,_=r.vertexTextures;let f=r.precision;const h={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 E(y){return y===0?"uv":`uv${y}`}function g(y,R,P,k,W){const I=k.fog,V=W.geometry,z=y.isMeshStandardMaterial?k.environment:null,D=(y.isMeshStandardMaterial?t:e).get(y.envMap||z),Y=D&&D.mapping===ou?D.image.height:null,K=h[y.type];y.precision!==null&&(f=r.getMaxPrecision(y.precision),f!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",f,"instead."));const q=V.morphAttributes.position||V.morphAttributes.normal||V.morphAttributes.color,le=q!==void 0?q.length:0;let Z=0;V.morphAttributes.position!==void 0&&(Z=1),V.morphAttributes.normal!==void 0&&(Z=2),V.morphAttributes.color!==void 0&&(Z=3);let J,_e,he,ye;if(K){const tn=yi[K];J=tn.vertexShader,_e=tn.fragmentShader}else J=y.vertexShader,_e=y.fragmentShader,l.update(y),he=l.getVertexShaderID(y),ye=l.getFragmentShaderID(y);const j=n.getRenderTarget(),de=W.isInstancedMesh===!0,Q=W.isBatchedMesh===!0,fe=!!y.map,we=!!y.matcap,O=!!D,F=!!y.aoMap,H=!!y.lightMap,se=!!y.bumpMap,te=!!y.normalMap,be=!!y.displacementMap,xe=!!y.emissiveMap,B=!!y.metalnessMap,ae=!!y.roughnessMap,ne=y.anisotropy>0,re=y.clearcoat>0,w=y.iridescence>0,A=y.sheen>0,G=y.transmission>0,ce=ne&&!!y.anisotropyMap,$=re&&!!y.clearcoatMap,ee=re&&!!y.clearcoatNormalMap,ve=re&&!!y.clearcoatRoughnessMap,Ee=w&&!!y.iridescenceMap,Ie=w&&!!y.iridescenceThicknessMap,Be=A&&!!y.sheenColorMap,et=A&&!!y.sheenRoughnessMap,Me=!!y.specularMap,tt=!!y.specularColorMap,We=!!y.specularIntensityMap,Fe=G&&!!y.transmissionMap,je=G&&!!y.thicknessMap,qe=!!y.gradientMap,lt=!!y.alphaMap,oe=y.alphaTest>0,Ve=!!y.alphaHash,De=!!y.extensions,Re=!!V.attributes.uv1,ke=!!V.attributes.uv2,it=!!V.attributes.uv3;let _t=qr;return y.toneMapped&&(j===null||j.isXRRenderTarget===!0)&&(_t=n.toneMapping),{isWebGL2:d,shaderID:K,shaderType:y.type,shaderName:y.name,vertexShader:J,fragmentShader:_e,defines:y.defines,customVertexShaderID:he,customFragmentShaderID:ye,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:f,batching:Q,instancing:de,instancingColor:de&&W.instanceColor!==null,supportsVertexTextures:_,outputColorSpace:j===null?n.outputColorSpace:j.isXRRenderTarget===!0?j.texture.colorSpace:hn,map:fe,matcap:we,envMap:O,envMapMode:O&&D.mapping,envMapCubeUVHeight:Y,aoMap:F,lightMap:H,bumpMap:se,normalMap:te,displacementMap:_&&be,emissiveMap:xe,normalMapObjectSpace:te&&y.normalMapType===cgt,normalMapTangentSpace:te&&y.normalMapType===UE,metalnessMap:B,roughnessMap:ae,anisotropy:ne,anisotropyMap:ce,clearcoat:re,clearcoatMap:$,clearcoatNormalMap:ee,clearcoatRoughnessMap:ve,iridescence:w,iridescenceMap:Ee,iridescenceThicknessMap:Ie,sheen:A,sheenColorMap:Be,sheenRoughnessMap:et,specularMap:Me,specularColorMap:tt,specularIntensityMap:We,transmission:G,transmissionMap:Fe,thicknessMap:je,gradientMap:qe,opaque:y.transparent===!1&&y.blending===No,alphaMap:lt,alphaTest:oe,alphaHash:Ve,combine:y.combine,mapUv:fe&&E(y.map.channel),aoMapUv:F&&E(y.aoMap.channel),lightMapUv:H&&E(y.lightMap.channel),bumpMapUv:se&&E(y.bumpMap.channel),normalMapUv:te&&E(y.normalMap.channel),displacementMapUv:be&&E(y.displacementMap.channel),emissiveMapUv:xe&&E(y.emissiveMap.channel),metalnessMapUv:B&&E(y.metalnessMap.channel),roughnessMapUv:ae&&E(y.roughnessMap.channel),anisotropyMapUv:ce&&E(y.anisotropyMap.channel),clearcoatMapUv:$&&E(y.clearcoatMap.channel),clearcoatNormalMapUv:ee&&E(y.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ve&&E(y.clearcoatRoughnessMap.channel),iridescenceMapUv:Ee&&E(y.iridescenceMap.channel),iridescenceThicknessMapUv:Ie&&E(y.iridescenceThicknessMap.channel),sheenColorMapUv:Be&&E(y.sheenColorMap.channel),sheenRoughnessMapUv:et&&E(y.sheenRoughnessMap.channel),specularMapUv:Me&&E(y.specularMap.channel),specularColorMapUv:tt&&E(y.specularColorMap.channel),specularIntensityMapUv:We&&E(y.specularIntensityMap.channel),transmissionMapUv:Fe&&E(y.transmissionMap.channel),thicknessMapUv:je&&E(y.thicknessMap.channel),alphaMapUv:lt&&E(y.alphaMap.channel),vertexTangents:!!V.attributes.tangent&&(te||ne),vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!V.attributes.color&&V.attributes.color.itemSize===4,vertexUv1s:Re,vertexUv2s:ke,vertexUv3s:it,pointsUvs:W.isPoints===!0&&!!V.attributes.uv&&(fe||lt),fog:!!I,useFog:y.fog===!0,fogExp2:I&&I.isFogExp2,flatShading:y.flatShading===!0,sizeAttenuation:y.sizeAttenuation===!0,logarithmicDepthBuffer:u,skinning:W.isSkinnedMesh===!0,morphTargets:V.morphAttributes.position!==void 0,morphNormals:V.morphAttributes.normal!==void 0,morphColors:V.morphAttributes.color!==void 0,morphTargetsCount:le,morphTextureStride:Z,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numSpotLightMaps:R.spotLightMap.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numSpotLightShadowsWithMaps:R.numSpotLightShadowsWithMaps,numLightProbes:R.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:y.dithering,shadowMapEnabled:n.shadowMap.enabled&&P.length>0,shadowMapType:n.shadowMap.type,toneMapping:_t,useLegacyLights:n._useLegacyLights,decodeVideoTexture:fe&&y.map.isVideoTexture===!0&&Nt.getTransfer(y.map.colorSpace)===Gt,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===xi,flipSided:y.side===Ln,useDepthPacking:y.depthPacking>=0,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionDerivatives:De&&y.extensions.derivatives===!0,extensionFragDepth:De&&y.extensions.fragDepth===!0,extensionDrawBuffers:De&&y.extensions.drawBuffers===!0,extensionShaderTextureLOD:De&&y.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:d||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:d||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:d||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:y.customProgramCacheKey()}}function m(y){const R=[];if(y.shaderID?R.push(y.shaderID):(R.push(y.customVertexShaderID),R.push(y.customFragmentShaderID)),y.defines!==void 0)for(const P in y.defines)R.push(P),R.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(b(R,y),S(R,y),R.push(n.outputColorSpace)),R.push(y.customProgramCacheKey),R.join()}function b(y,R){y.push(R.precision),y.push(R.outputColorSpace),y.push(R.envMapMode),y.push(R.envMapCubeUVHeight),y.push(R.mapUv),y.push(R.alphaMapUv),y.push(R.lightMapUv),y.push(R.aoMapUv),y.push(R.bumpMapUv),y.push(R.normalMapUv),y.push(R.displacementMapUv),y.push(R.emissiveMapUv),y.push(R.metalnessMapUv),y.push(R.roughnessMapUv),y.push(R.anisotropyMapUv),y.push(R.clearcoatMapUv),y.push(R.clearcoatNormalMapUv),y.push(R.clearcoatRoughnessMapUv),y.push(R.iridescenceMapUv),y.push(R.iridescenceThicknessMapUv),y.push(R.sheenColorMapUv),y.push(R.sheenRoughnessMapUv),y.push(R.specularMapUv),y.push(R.specularColorMapUv),y.push(R.specularIntensityMapUv),y.push(R.transmissionMapUv),y.push(R.thicknessMapUv),y.push(R.combine),y.push(R.fogExp2),y.push(R.sizeAttenuation),y.push(R.morphTargetsCount),y.push(R.morphAttributeCount),y.push(R.numDirLights),y.push(R.numPointLights),y.push(R.numSpotLights),y.push(R.numSpotLightMaps),y.push(R.numHemiLights),y.push(R.numRectAreaLights),y.push(R.numDirLightShadows),y.push(R.numPointLightShadows),y.push(R.numSpotLightShadows),y.push(R.numSpotLightShadowsWithMaps),y.push(R.numLightProbes),y.push(R.shadowMapType),y.push(R.toneMapping),y.push(R.numClippingPlanes),y.push(R.numClipIntersection),y.push(R.depthPacking)}function S(y,R){a.disableAll(),R.isWebGL2&&a.enable(0),R.supportsVertexTextures&&a.enable(1),R.instancing&&a.enable(2),R.instancingColor&&a.enable(3),R.matcap&&a.enable(4),R.envMap&&a.enable(5),R.normalMapObjectSpace&&a.enable(6),R.normalMapTangentSpace&&a.enable(7),R.clearcoat&&a.enable(8),R.iridescence&&a.enable(9),R.alphaTest&&a.enable(10),R.vertexColors&&a.enable(11),R.vertexAlphas&&a.enable(12),R.vertexUv1s&&a.enable(13),R.vertexUv2s&&a.enable(14),R.vertexUv3s&&a.enable(15),R.vertexTangents&&a.enable(16),R.anisotropy&&a.enable(17),R.alphaHash&&a.enable(18),R.batching&&a.enable(19),y.push(a.mask),a.disableAll(),R.fog&&a.enable(0),R.useFog&&a.enable(1),R.flatShading&&a.enable(2),R.logarithmicDepthBuffer&&a.enable(3),R.skinning&&a.enable(4),R.morphTargets&&a.enable(5),R.morphNormals&&a.enable(6),R.morphColors&&a.enable(7),R.premultipliedAlpha&&a.enable(8),R.shadowMapEnabled&&a.enable(9),R.useLegacyLights&&a.enable(10),R.doubleSided&&a.enable(11),R.flipSided&&a.enable(12),R.useDepthPacking&&a.enable(13),R.dithering&&a.enable(14),R.transmission&&a.enable(15),R.sheen&&a.enable(16),R.opaque&&a.enable(17),R.pointsUvs&&a.enable(18),R.decodeVideoTexture&&a.enable(19),y.push(a.mask)}function v(y){const R=h[y.type];let P;if(R){const k=yi[R];P=Qgt.clone(k.uniforms)}else P=y.uniforms;return P}function T(y,R){let P;for(let k=0,W=c.length;k0?i.push(m):f.transparent===!0?r.push(m):t.push(m)}function l(u,_,f,h,E,g){const m=o(u,_,f,h,E,g);f.transmission>0?i.unshift(m):f.transparent===!0?r.unshift(m):t.unshift(m)}function c(u,_){t.length>1&&t.sort(u||fvt),i.length>1&&i.sort(_||BC),r.length>1&&r.sort(_||BC)}function d(){for(let u=e,_=n.length;u<_;u++){const f=n[u];if(f.id===null)break;f.id=null,f.object=null,f.geometry=null,f.material=null,f.group=null}}return{opaque:t,transmissive:i,transparent:r,init:s,push:a,unshift:l,finish:d,sort:c}}function mvt(){let n=new WeakMap;function e(i,r){const s=n.get(i);let o;return s===void 0?(o=new GC,n.set(i,[o])):r>=s.length?(o=new GC,s.push(o)):o=s[r],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function gvt(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new ue,color:new ot};break;case"SpotLight":t={position:new ue,direction:new ue,color:new ot,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new ue,color:new ot,distance:0,decay:0};break;case"HemisphereLight":t={direction:new ue,skyColor:new ot,groundColor:new ot};break;case"RectAreaLight":t={color:new ot,position:new ue,halfWidth:new ue,halfHeight:new ue};break}return n[e.id]=t,t}}}function Evt(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let bvt=0;function Svt(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function yvt(n,e){const t=new gvt,i=Evt(),r={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 d=0;d<9;d++)r.probe.push(new ue);const s=new ue,o=new gt,a=new gt;function l(d,u){let _=0,f=0,h=0;for(let k=0;k<9;k++)r.probe[k].set(0,0,0);let E=0,g=0,m=0,b=0,S=0,v=0,T=0,C=0,N=0,x=0,y=0;d.sort(Svt);const R=u===!0?Math.PI:1;for(let k=0,W=d.length;k0&&(e.isWebGL2||n.has("OES_texture_float_linear")===!0?(r.rectAreaLTC1=ze.LTC_FLOAT_1,r.rectAreaLTC2=ze.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(r.rectAreaLTC1=ze.LTC_HALF_1,r.rectAreaLTC2=ze.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=_,r.ambient[1]=f,r.ambient[2]=h;const P=r.hash;(P.directionalLength!==E||P.pointLength!==g||P.spotLength!==m||P.rectAreaLength!==b||P.hemiLength!==S||P.numDirectionalShadows!==v||P.numPointShadows!==T||P.numSpotShadows!==C||P.numSpotMaps!==N||P.numLightProbes!==y)&&(r.directional.length=E,r.spot.length=m,r.rectArea.length=b,r.point.length=g,r.hemi.length=S,r.directionalShadow.length=v,r.directionalShadowMap.length=v,r.pointShadow.length=T,r.pointShadowMap.length=T,r.spotShadow.length=C,r.spotShadowMap.length=C,r.directionalShadowMatrix.length=v,r.pointShadowMatrix.length=T,r.spotLightMatrix.length=C+N-x,r.spotLightMap.length=N,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=y,P.directionalLength=E,P.pointLength=g,P.spotLength=m,P.rectAreaLength=b,P.hemiLength=S,P.numDirectionalShadows=v,P.numPointShadows=T,P.numSpotShadows=C,P.numSpotMaps=N,P.numLightProbes=y,r.version=bvt++)}function c(d,u){let _=0,f=0,h=0,E=0,g=0;const m=u.matrixWorldInverse;for(let b=0,S=d.length;b=a.length?(l=new zC(n,e),a.push(l)):l=a[o],l}function r(){t=new WeakMap}return{get:i,dispose:r}}class Tvt extends mi{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=agt,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class xvt extends mi{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const Cvt=`void main() { +`+Y)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(W===""||I==="")&&(z=!1);z&&(P.diagnostics={runnable:V,programLog:k,vertexShader:{log:W,prefix:g},fragmentShader:{log:I,prefix:m}})}r.deleteShader(T),r.deleteShader(C),x=new Xc(r,E),y=nvt(r,E)}let x;this.getUniforms=function(){return x===void 0&&N(this),x};let y;this.getAttributes=function(){return y===void 0&&N(this),y};let R=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return R===!1&&(R=r.getProgramParameter(E,Kyt)),R},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(E),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=jyt++,this.cacheKey=e,this.usedTimes=1,this.program=E,this.vertexShader=T,this.fragmentShader=C,this}let hvt=0;class fvt{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new mvt(e),t.set(e,i)),i}}class mvt{constructor(e){this.id=hvt++,this.code=e,this.usedTimes=0}}function gvt(n,e,t,i,r,s,o){const a=new sO,l=new fvt,c=[],d=r.isWebGL2,u=r.logarithmicDepthBuffer,_=r.vertexTextures;let f=r.precision;const h={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 E(y){return y===0?"uv":`uv${y}`}function g(y,R,P,k,W){const I=k.fog,V=W.geometry,z=y.isMeshStandardMaterial?k.environment:null,D=(y.isMeshStandardMaterial?t:e).get(y.envMap||z),Y=D&&D.mapping===ou?D.image.height:null,K=h[y.type];y.precision!==null&&(f=r.getMaxPrecision(y.precision),f!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",f,"instead."));const q=V.morphAttributes.position||V.morphAttributes.normal||V.morphAttributes.color,le=q!==void 0?q.length:0;let Z=0;V.morphAttributes.position!==void 0&&(Z=1),V.morphAttributes.normal!==void 0&&(Z=2),V.morphAttributes.color!==void 0&&(Z=3);let J,_e,he,ye;if(K){const tn=yi[K];J=tn.vertexShader,_e=tn.fragmentShader}else J=y.vertexShader,_e=y.fragmentShader,l.update(y),he=l.getVertexShaderID(y),ye=l.getFragmentShaderID(y);const j=n.getRenderTarget(),de=W.isInstancedMesh===!0,Q=W.isBatchedMesh===!0,fe=!!y.map,we=!!y.matcap,O=!!D,F=!!y.aoMap,H=!!y.lightMap,se=!!y.bumpMap,te=!!y.normalMap,be=!!y.displacementMap,xe=!!y.emissiveMap,B=!!y.metalnessMap,ae=!!y.roughnessMap,ne=y.anisotropy>0,re=y.clearcoat>0,w=y.iridescence>0,A=y.sheen>0,G=y.transmission>0,ce=ne&&!!y.anisotropyMap,$=re&&!!y.clearcoatMap,ee=re&&!!y.clearcoatNormalMap,ve=re&&!!y.clearcoatRoughnessMap,Ee=w&&!!y.iridescenceMap,Ie=w&&!!y.iridescenceThicknessMap,Be=A&&!!y.sheenColorMap,et=A&&!!y.sheenRoughnessMap,Me=!!y.specularMap,tt=!!y.specularColorMap,We=!!y.specularIntensityMap,Fe=G&&!!y.transmissionMap,je=G&&!!y.thicknessMap,qe=!!y.gradientMap,lt=!!y.alphaMap,oe=y.alphaTest>0,Ve=!!y.alphaHash,De=!!y.extensions,Re=!!V.attributes.uv1,ke=!!V.attributes.uv2,it=!!V.attributes.uv3;let _t=qr;return y.toneMapped&&(j===null||j.isXRRenderTarget===!0)&&(_t=n.toneMapping),{isWebGL2:d,shaderID:K,shaderType:y.type,shaderName:y.name,vertexShader:J,fragmentShader:_e,defines:y.defines,customVertexShaderID:he,customFragmentShaderID:ye,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:f,batching:Q,instancing:de,instancingColor:de&&W.instanceColor!==null,supportsVertexTextures:_,outputColorSpace:j===null?n.outputColorSpace:j.isXRRenderTarget===!0?j.texture.colorSpace:hn,map:fe,matcap:we,envMap:O,envMapMode:O&&D.mapping,envMapCubeUVHeight:Y,aoMap:F,lightMap:H,bumpMap:se,normalMap:te,displacementMap:_&&be,emissiveMap:xe,normalMapObjectSpace:te&&y.normalMapType===pgt,normalMapTangentSpace:te&&y.normalMapType===UE,metalnessMap:B,roughnessMap:ae,anisotropy:ne,anisotropyMap:ce,clearcoat:re,clearcoatMap:$,clearcoatNormalMap:ee,clearcoatRoughnessMap:ve,iridescence:w,iridescenceMap:Ee,iridescenceThicknessMap:Ie,sheen:A,sheenColorMap:Be,sheenRoughnessMap:et,specularMap:Me,specularColorMap:tt,specularIntensityMap:We,transmission:G,transmissionMap:Fe,thicknessMap:je,gradientMap:qe,opaque:y.transparent===!1&&y.blending===No,alphaMap:lt,alphaTest:oe,alphaHash:Ve,combine:y.combine,mapUv:fe&&E(y.map.channel),aoMapUv:F&&E(y.aoMap.channel),lightMapUv:H&&E(y.lightMap.channel),bumpMapUv:se&&E(y.bumpMap.channel),normalMapUv:te&&E(y.normalMap.channel),displacementMapUv:be&&E(y.displacementMap.channel),emissiveMapUv:xe&&E(y.emissiveMap.channel),metalnessMapUv:B&&E(y.metalnessMap.channel),roughnessMapUv:ae&&E(y.roughnessMap.channel),anisotropyMapUv:ce&&E(y.anisotropyMap.channel),clearcoatMapUv:$&&E(y.clearcoatMap.channel),clearcoatNormalMapUv:ee&&E(y.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ve&&E(y.clearcoatRoughnessMap.channel),iridescenceMapUv:Ee&&E(y.iridescenceMap.channel),iridescenceThicknessMapUv:Ie&&E(y.iridescenceThicknessMap.channel),sheenColorMapUv:Be&&E(y.sheenColorMap.channel),sheenRoughnessMapUv:et&&E(y.sheenRoughnessMap.channel),specularMapUv:Me&&E(y.specularMap.channel),specularColorMapUv:tt&&E(y.specularColorMap.channel),specularIntensityMapUv:We&&E(y.specularIntensityMap.channel),transmissionMapUv:Fe&&E(y.transmissionMap.channel),thicknessMapUv:je&&E(y.thicknessMap.channel),alphaMapUv:lt&&E(y.alphaMap.channel),vertexTangents:!!V.attributes.tangent&&(te||ne),vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!V.attributes.color&&V.attributes.color.itemSize===4,vertexUv1s:Re,vertexUv2s:ke,vertexUv3s:it,pointsUvs:W.isPoints===!0&&!!V.attributes.uv&&(fe||lt),fog:!!I,useFog:y.fog===!0,fogExp2:I&&I.isFogExp2,flatShading:y.flatShading===!0,sizeAttenuation:y.sizeAttenuation===!0,logarithmicDepthBuffer:u,skinning:W.isSkinnedMesh===!0,morphTargets:V.morphAttributes.position!==void 0,morphNormals:V.morphAttributes.normal!==void 0,morphColors:V.morphAttributes.color!==void 0,morphTargetsCount:le,morphTextureStride:Z,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numSpotLightMaps:R.spotLightMap.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numSpotLightShadowsWithMaps:R.numSpotLightShadowsWithMaps,numLightProbes:R.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:y.dithering,shadowMapEnabled:n.shadowMap.enabled&&P.length>0,shadowMapType:n.shadowMap.type,toneMapping:_t,useLegacyLights:n._useLegacyLights,decodeVideoTexture:fe&&y.map.isVideoTexture===!0&&Nt.getTransfer(y.map.colorSpace)===Gt,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===xi,flipSided:y.side===Ln,useDepthPacking:y.depthPacking>=0,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionDerivatives:De&&y.extensions.derivatives===!0,extensionFragDepth:De&&y.extensions.fragDepth===!0,extensionDrawBuffers:De&&y.extensions.drawBuffers===!0,extensionShaderTextureLOD:De&&y.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:d||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:d||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:d||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:y.customProgramCacheKey()}}function m(y){const R=[];if(y.shaderID?R.push(y.shaderID):(R.push(y.customVertexShaderID),R.push(y.customFragmentShaderID)),y.defines!==void 0)for(const P in y.defines)R.push(P),R.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(b(R,y),S(R,y),R.push(n.outputColorSpace)),R.push(y.customProgramCacheKey),R.join()}function b(y,R){y.push(R.precision),y.push(R.outputColorSpace),y.push(R.envMapMode),y.push(R.envMapCubeUVHeight),y.push(R.mapUv),y.push(R.alphaMapUv),y.push(R.lightMapUv),y.push(R.aoMapUv),y.push(R.bumpMapUv),y.push(R.normalMapUv),y.push(R.displacementMapUv),y.push(R.emissiveMapUv),y.push(R.metalnessMapUv),y.push(R.roughnessMapUv),y.push(R.anisotropyMapUv),y.push(R.clearcoatMapUv),y.push(R.clearcoatNormalMapUv),y.push(R.clearcoatRoughnessMapUv),y.push(R.iridescenceMapUv),y.push(R.iridescenceThicknessMapUv),y.push(R.sheenColorMapUv),y.push(R.sheenRoughnessMapUv),y.push(R.specularMapUv),y.push(R.specularColorMapUv),y.push(R.specularIntensityMapUv),y.push(R.transmissionMapUv),y.push(R.thicknessMapUv),y.push(R.combine),y.push(R.fogExp2),y.push(R.sizeAttenuation),y.push(R.morphTargetsCount),y.push(R.morphAttributeCount),y.push(R.numDirLights),y.push(R.numPointLights),y.push(R.numSpotLights),y.push(R.numSpotLightMaps),y.push(R.numHemiLights),y.push(R.numRectAreaLights),y.push(R.numDirLightShadows),y.push(R.numPointLightShadows),y.push(R.numSpotLightShadows),y.push(R.numSpotLightShadowsWithMaps),y.push(R.numLightProbes),y.push(R.shadowMapType),y.push(R.toneMapping),y.push(R.numClippingPlanes),y.push(R.numClipIntersection),y.push(R.depthPacking)}function S(y,R){a.disableAll(),R.isWebGL2&&a.enable(0),R.supportsVertexTextures&&a.enable(1),R.instancing&&a.enable(2),R.instancingColor&&a.enable(3),R.matcap&&a.enable(4),R.envMap&&a.enable(5),R.normalMapObjectSpace&&a.enable(6),R.normalMapTangentSpace&&a.enable(7),R.clearcoat&&a.enable(8),R.iridescence&&a.enable(9),R.alphaTest&&a.enable(10),R.vertexColors&&a.enable(11),R.vertexAlphas&&a.enable(12),R.vertexUv1s&&a.enable(13),R.vertexUv2s&&a.enable(14),R.vertexUv3s&&a.enable(15),R.vertexTangents&&a.enable(16),R.anisotropy&&a.enable(17),R.alphaHash&&a.enable(18),R.batching&&a.enable(19),y.push(a.mask),a.disableAll(),R.fog&&a.enable(0),R.useFog&&a.enable(1),R.flatShading&&a.enable(2),R.logarithmicDepthBuffer&&a.enable(3),R.skinning&&a.enable(4),R.morphTargets&&a.enable(5),R.morphNormals&&a.enable(6),R.morphColors&&a.enable(7),R.premultipliedAlpha&&a.enable(8),R.shadowMapEnabled&&a.enable(9),R.useLegacyLights&&a.enable(10),R.doubleSided&&a.enable(11),R.flipSided&&a.enable(12),R.useDepthPacking&&a.enable(13),R.dithering&&a.enable(14),R.transmission&&a.enable(15),R.sheen&&a.enable(16),R.opaque&&a.enable(17),R.pointsUvs&&a.enable(18),R.decodeVideoTexture&&a.enable(19),y.push(a.mask)}function v(y){const R=h[y.type];let P;if(R){const k=yi[R];P=eEt.clone(k.uniforms)}else P=y.uniforms;return P}function T(y,R){let P;for(let k=0,W=c.length;k0?i.push(m):f.transparent===!0?r.push(m):t.push(m)}function l(u,_,f,h,E,g){const m=o(u,_,f,h,E,g);f.transmission>0?i.unshift(m):f.transparent===!0?r.unshift(m):t.unshift(m)}function c(u,_){t.length>1&&t.sort(u||bvt),i.length>1&&i.sort(_||BC),r.length>1&&r.sort(_||BC)}function d(){for(let u=e,_=n.length;u<_;u++){const f=n[u];if(f.id===null)break;f.id=null,f.object=null,f.geometry=null,f.material=null,f.group=null}}return{opaque:t,transmissive:i,transparent:r,init:s,push:a,unshift:l,finish:d,sort:c}}function Svt(){let n=new WeakMap;function e(i,r){const s=n.get(i);let o;return s===void 0?(o=new GC,n.set(i,[o])):r>=s.length?(o=new GC,s.push(o)):o=s[r],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function yvt(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new ue,color:new ot};break;case"SpotLight":t={position:new ue,direction:new ue,color:new ot,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new ue,color:new ot,distance:0,decay:0};break;case"HemisphereLight":t={direction:new ue,skyColor:new ot,groundColor:new ot};break;case"RectAreaLight":t={color:new ot,position:new ue,halfWidth:new ue,halfHeight:new ue};break}return n[e.id]=t,t}}}function vvt(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new vt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let Tvt=0;function xvt(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function Cvt(n,e){const t=new yvt,i=vvt(),r={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 d=0;d<9;d++)r.probe.push(new ue);const s=new ue,o=new gt,a=new gt;function l(d,u){let _=0,f=0,h=0;for(let k=0;k<9;k++)r.probe[k].set(0,0,0);let E=0,g=0,m=0,b=0,S=0,v=0,T=0,C=0,N=0,x=0,y=0;d.sort(xvt);const R=u===!0?Math.PI:1;for(let k=0,W=d.length;k0&&(e.isWebGL2||n.has("OES_texture_float_linear")===!0?(r.rectAreaLTC1=ze.LTC_FLOAT_1,r.rectAreaLTC2=ze.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(r.rectAreaLTC1=ze.LTC_HALF_1,r.rectAreaLTC2=ze.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=_,r.ambient[1]=f,r.ambient[2]=h;const P=r.hash;(P.directionalLength!==E||P.pointLength!==g||P.spotLength!==m||P.rectAreaLength!==b||P.hemiLength!==S||P.numDirectionalShadows!==v||P.numPointShadows!==T||P.numSpotShadows!==C||P.numSpotMaps!==N||P.numLightProbes!==y)&&(r.directional.length=E,r.spot.length=m,r.rectArea.length=b,r.point.length=g,r.hemi.length=S,r.directionalShadow.length=v,r.directionalShadowMap.length=v,r.pointShadow.length=T,r.pointShadowMap.length=T,r.spotShadow.length=C,r.spotShadowMap.length=C,r.directionalShadowMatrix.length=v,r.pointShadowMatrix.length=T,r.spotLightMatrix.length=C+N-x,r.spotLightMap.length=N,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=y,P.directionalLength=E,P.pointLength=g,P.spotLength=m,P.rectAreaLength=b,P.hemiLength=S,P.numDirectionalShadows=v,P.numPointShadows=T,P.numSpotShadows=C,P.numSpotMaps=N,P.numLightProbes=y,r.version=Tvt++)}function c(d,u){let _=0,f=0,h=0,E=0,g=0;const m=u.matrixWorldInverse;for(let b=0,S=d.length;b=a.length?(l=new zC(n,e),a.push(l)):l=a[o],l}function r(){t=new WeakMap}return{get:i,dispose:r}}class Avt extends mi{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=ugt,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class wvt extends mi{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const Ovt=`void main() { gl_Position = vec4( position, 1.0 ); -}`,Rvt=`uniform sampler2D shadow_pass; +}`,Nvt=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3835,4 +3837,4 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function Avt(n,e,t){let i=new GE;const r=new vt,s=new vt,o=new Pt,a=new Tvt({depthPacking:lgt}),l=new xvt,c={},d=t.maxTextureSize,u={[cr]:Ln,[Ln]:cr,[xi]:xi},_=new Us({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new vt},radius:{value:4}},vertexShader:Cvt,fragmentShader:Rvt}),f=_.clone();f.defines.HORIZONTAL_PASS=1;const h=new Fi;h.setAttribute("position",new wn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const E=new An(h,_),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vw;let m=this.type;this.render=function(T,C,N){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||T.length===0)return;const x=n.getRenderTarget(),y=n.getActiveCubeFace(),R=n.getActiveMipmapLevel(),P=n.state;P.setBlending(Hr),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);const k=m!==Zi&&this.type===Zi,W=m===Zi&&this.type!==Zi;for(let I=0,V=T.length;Id||r.y>d)&&(r.x>d&&(s.x=Math.floor(d/Y.x),r.x=s.x*Y.x,D.mapSize.x=s.x),r.y>d&&(s.y=Math.floor(d/Y.y),r.y=s.y*Y.y,D.mapSize.y=s.y)),D.map===null||k===!0||W===!0){const q=this.type!==Zi?{minFilter:an,magFilter:an}:{};D.map!==null&&D.map.dispose(),D.map=new Ps(r.x,r.y,q),D.map.texture.name=z.name+".shadowMap",D.camera.updateProjectionMatrix()}n.setRenderTarget(D.map),n.clear();const K=D.getViewportCount();for(let q=0;q0||C.map&&C.alphaTest>0){const P=y.uuid,k=C.uuid;let W=c[P];W===void 0&&(W={},c[P]=W);let I=W[k];I===void 0&&(I=y.clone(),W[k]=I),y=I}if(y.visible=C.visible,y.wireframe=C.wireframe,x===Zi?y.side=C.shadowSide!==null?C.shadowSide:C.side:y.side=C.shadowSide!==null?C.shadowSide:u[C.side],y.alphaMap=C.alphaMap,y.alphaTest=C.alphaTest,y.map=C.map,y.clipShadows=C.clipShadows,y.clippingPlanes=C.clippingPlanes,y.clipIntersection=C.clipIntersection,y.displacementMap=C.displacementMap,y.displacementScale=C.displacementScale,y.displacementBias=C.displacementBias,y.wireframeLinewidth=C.wireframeLinewidth,y.linewidth=C.linewidth,N.isPointLight===!0&&y.isMeshDistanceMaterial===!0){const P=n.properties.get(y);P.light=N}return y}function v(T,C,N,x,y){if(T.visible===!1)return;if(T.layers.test(C.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&y===Zi)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(N.matrixWorldInverse,T.matrixWorld);const k=e.update(T),W=T.material;if(Array.isArray(W)){const I=k.groups;for(let V=0,z=I.length;V=1):q.indexOf("OpenGL ES")!==-1&&(K=parseFloat(/^OpenGL ES (\d)/.exec(q)[1]),Y=K>=2);let le=null,Z={};const J=n.getParameter(n.SCISSOR_BOX),_e=n.getParameter(n.VIEWPORT),he=new Pt().fromArray(J),ye=new Pt().fromArray(_e);function j(oe,Ve,De,Re){const ke=new Uint8Array(4),it=n.createTexture();n.bindTexture(oe,it),n.texParameteri(oe,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(oe,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let _t=0;_t"u"?!1:/OculusBrowser/g.test(navigator.userAgent),h=new WeakMap;let E;const g=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function b(w,A){return m?new OffscreenCanvas(w,A):xl("canvas")}function S(w,A,G,ce){let $=1;if((w.width>ce||w.height>ce)&&($=ce/Math.max(w.width,w.height)),$<1||A===!0)if(typeof HTMLImageElement<"u"&&w instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&w instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&w instanceof ImageBitmap){const ee=A?Ad:Math.floor,ve=ee($*w.width),Ee=ee($*w.height);E===void 0&&(E=b(ve,Ee));const Ie=G?b(ve,Ee):E;return Ie.width=ve,Ie.height=Ee,Ie.getContext("2d").drawImage(w,0,0,ve,Ee),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+w.width+"x"+w.height+") to ("+ve+"x"+Ee+")."),Ie}else return"data"in w&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+w.width+"x"+w.height+")."),w;return w}function v(w){return ig(w.width)&&ig(w.height)}function T(w){return a?!1:w.wrapS!==Kn||w.wrapT!==Kn||w.minFilter!==an&&w.minFilter!==Mn}function C(w,A){return w.generateMipmaps&&A&&w.minFilter!==an&&w.minFilter!==Mn}function N(w){n.generateMipmap(w)}function x(w,A,G,ce,$=!1){if(a===!1)return A;if(w!==null){if(n[w]!==void 0)return n[w];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+w+"'")}let ee=A;if(A===n.RED&&(G===n.FLOAT&&(ee=n.R32F),G===n.HALF_FLOAT&&(ee=n.R16F),G===n.UNSIGNED_BYTE&&(ee=n.R8)),A===n.RED_INTEGER&&(G===n.UNSIGNED_BYTE&&(ee=n.R8UI),G===n.UNSIGNED_SHORT&&(ee=n.R16UI),G===n.UNSIGNED_INT&&(ee=n.R32UI),G===n.BYTE&&(ee=n.R8I),G===n.SHORT&&(ee=n.R16I),G===n.INT&&(ee=n.R32I)),A===n.RG&&(G===n.FLOAT&&(ee=n.RG32F),G===n.HALF_FLOAT&&(ee=n.RG16F),G===n.UNSIGNED_BYTE&&(ee=n.RG8)),A===n.RGBA){const ve=$?Td:Nt.getTransfer(ce);G===n.FLOAT&&(ee=n.RGBA32F),G===n.HALF_FLOAT&&(ee=n.RGBA16F),G===n.UNSIGNED_BYTE&&(ee=ve===Gt?n.SRGB8_ALPHA8:n.RGBA8),G===n.UNSIGNED_SHORT_4_4_4_4&&(ee=n.RGBA4),G===n.UNSIGNED_SHORT_5_5_5_1&&(ee=n.RGB5_A1)}return(ee===n.R16F||ee===n.R32F||ee===n.RG16F||ee===n.RG32F||ee===n.RGBA16F||ee===n.RGBA32F)&&e.get("EXT_color_buffer_float"),ee}function y(w,A,G){return C(w,G)===!0||w.isFramebufferTexture&&w.minFilter!==an&&w.minFilter!==Mn?Math.log2(Math.max(A.width,A.height))+1:w.mipmaps!==void 0&&w.mipmaps.length>0?w.mipmaps.length:w.isCompressedTexture&&Array.isArray(w.image)?A.mipmaps.length:1}function R(w){return w===an||w===Jm||w===Qc?n.NEAREST:n.LINEAR}function P(w){const A=w.target;A.removeEventListener("dispose",P),W(A),A.isVideoTexture&&h.delete(A)}function k(w){const A=w.target;A.removeEventListener("dispose",k),V(A)}function W(w){const A=i.get(w);if(A.__webglInit===void 0)return;const G=w.source,ce=g.get(G);if(ce){const $=ce[A.__cacheKey];$.usedTimes--,$.usedTimes===0&&I(w),Object.keys(ce).length===0&&g.delete(G)}i.remove(w)}function I(w){const A=i.get(w);n.deleteTexture(A.__webglTexture);const G=w.source,ce=g.get(G);delete ce[A.__cacheKey],o.memory.textures--}function V(w){const A=w.texture,G=i.get(w),ce=i.get(A);if(ce.__webglTexture!==void 0&&(n.deleteTexture(ce.__webglTexture),o.memory.textures--),w.depthTexture&&w.depthTexture.dispose(),w.isWebGLCubeRenderTarget)for(let $=0;$<6;$++){if(Array.isArray(G.__webglFramebuffer[$]))for(let ee=0;ee=l&&console.warn("THREE.WebGLTextures: Trying to use "+w+" texture units while this GPU supports only "+l),z+=1,w}function K(w){const A=[];return A.push(w.wrapS),A.push(w.wrapT),A.push(w.wrapR||0),A.push(w.magFilter),A.push(w.minFilter),A.push(w.anisotropy),A.push(w.internalFormat),A.push(w.format),A.push(w.type),A.push(w.generateMipmaps),A.push(w.premultiplyAlpha),A.push(w.flipY),A.push(w.unpackAlignment),A.push(w.colorSpace),A.join()}function q(w,A){const G=i.get(w);if(w.isVideoTexture&&ne(w),w.isRenderTargetTexture===!1&&w.version>0&&G.__version!==w.version){const ce=w.image;if(ce===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(ce.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Q(G,w,A);return}}t.bindTexture(n.TEXTURE_2D,G.__webglTexture,n.TEXTURE0+A)}function le(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){Q(G,w,A);return}t.bindTexture(n.TEXTURE_2D_ARRAY,G.__webglTexture,n.TEXTURE0+A)}function Z(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){Q(G,w,A);return}t.bindTexture(n.TEXTURE_3D,G.__webglTexture,n.TEXTURE0+A)}function J(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){fe(G,w,A);return}t.bindTexture(n.TEXTURE_CUBE_MAP,G.__webglTexture,n.TEXTURE0+A)}const _e={[Xo]:n.REPEAT,[Kn]:n.CLAMP_TO_EDGE,[vd]:n.MIRRORED_REPEAT},he={[an]:n.NEAREST,[Jm]:n.NEAREST_MIPMAP_NEAREST,[Qc]:n.NEAREST_MIPMAP_LINEAR,[Mn]:n.LINEAR,[qw]:n.LINEAR_MIPMAP_NEAREST,[ks]:n.LINEAR_MIPMAP_LINEAR},ye={[dgt]:n.NEVER,[mgt]:n.ALWAYS,[ugt]:n.LESS,[eO]:n.LEQUAL,[_gt]:n.EQUAL,[fgt]:n.GEQUAL,[pgt]:n.GREATER,[hgt]:n.NOTEQUAL};function j(w,A,G){if(G?(n.texParameteri(w,n.TEXTURE_WRAP_S,_e[A.wrapS]),n.texParameteri(w,n.TEXTURE_WRAP_T,_e[A.wrapT]),(w===n.TEXTURE_3D||w===n.TEXTURE_2D_ARRAY)&&n.texParameteri(w,n.TEXTURE_WRAP_R,_e[A.wrapR]),n.texParameteri(w,n.TEXTURE_MAG_FILTER,he[A.magFilter]),n.texParameteri(w,n.TEXTURE_MIN_FILTER,he[A.minFilter])):(n.texParameteri(w,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(w,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(w===n.TEXTURE_3D||w===n.TEXTURE_2D_ARRAY)&&n.texParameteri(w,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(A.wrapS!==Kn||A.wrapT!==Kn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(w,n.TEXTURE_MAG_FILTER,R(A.magFilter)),n.texParameteri(w,n.TEXTURE_MIN_FILTER,R(A.minFilter)),A.minFilter!==an&&A.minFilter!==Mn&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),A.compareFunction&&(n.texParameteri(w,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(w,n.TEXTURE_COMPARE_FUNC,ye[A.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){const ce=e.get("EXT_texture_filter_anisotropic");if(A.magFilter===an||A.minFilter!==Qc&&A.minFilter!==ks||A.type===tr&&e.has("OES_texture_float_linear")===!1||a===!1&&A.type===vl&&e.has("OES_texture_half_float_linear")===!1)return;(A.anisotropy>1||i.get(A).__currentAnisotropy)&&(n.texParameterf(w,ce.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(A.anisotropy,r.getMaxAnisotropy())),i.get(A).__currentAnisotropy=A.anisotropy)}}function de(w,A){let G=!1;w.__webglInit===void 0&&(w.__webglInit=!0,A.addEventListener("dispose",P));const ce=A.source;let $=g.get(ce);$===void 0&&($={},g.set(ce,$));const ee=K(A);if(ee!==w.__cacheKey){$[ee]===void 0&&($[ee]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,G=!0),$[ee].usedTimes++;const ve=$[w.__cacheKey];ve!==void 0&&($[w.__cacheKey].usedTimes--,ve.usedTimes===0&&I(A)),w.__cacheKey=ee,w.__webglTexture=$[ee].texture}return G}function Q(w,A,G){let ce=n.TEXTURE_2D;(A.isDataArrayTexture||A.isCompressedArrayTexture)&&(ce=n.TEXTURE_2D_ARRAY),A.isData3DTexture&&(ce=n.TEXTURE_3D);const $=de(w,A),ee=A.source;t.bindTexture(ce,w.__webglTexture,n.TEXTURE0+G);const ve=i.get(ee);if(ee.version!==ve.__version||$===!0){t.activeTexture(n.TEXTURE0+G);const Ee=Nt.getPrimaries(Nt.workingColorSpace),Ie=A.colorSpace===Qn?null:Nt.getPrimaries(A.colorSpace),Be=A.colorSpace===Qn||Ee===Ie?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,A.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,A.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Be);const et=T(A)&&v(A.image)===!1;let Me=S(A.image,et,!1,d);Me=re(A,Me);const tt=v(Me)||a,We=s.convert(A.format,A.colorSpace);let Fe=s.convert(A.type),je=x(A.internalFormat,We,Fe,A.colorSpace,A.isVideoTexture);j(ce,A,tt);let qe;const lt=A.mipmaps,oe=a&&A.isVideoTexture!==!0&&je!==Xw,Ve=ve.__version===void 0||$===!0,De=y(A,Me,tt);if(A.isDepthTexture)je=n.DEPTH_COMPONENT,a?A.type===tr?je=n.DEPTH_COMPONENT32F:A.type===Ur?je=n.DEPTH_COMPONENT24:A.type===ws?je=n.DEPTH24_STENCIL8:je=n.DEPTH_COMPONENT16:A.type===tr&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),A.format===Os&&je===n.DEPTH_COMPONENT&&A.type!==PE&&A.type!==Ur&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),A.type=Ur,Fe=s.convert(A.type)),A.format===Zo&&je===n.DEPTH_COMPONENT&&(je=n.DEPTH_STENCIL,A.type!==ws&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),A.type=ws,Fe=s.convert(A.type))),Ve&&(oe?t.texStorage2D(n.TEXTURE_2D,1,je,Me.width,Me.height):t.texImage2D(n.TEXTURE_2D,0,je,Me.width,Me.height,0,We,Fe,null));else if(A.isDataTexture)if(lt.length>0&&tt){oe&&Ve&&t.texStorage2D(n.TEXTURE_2D,De,je,lt[0].width,lt[0].height);for(let Re=0,ke=lt.length;Re>=1,ke>>=1}}else if(lt.length>0&&tt){oe&&Ve&&t.texStorage2D(n.TEXTURE_2D,De,je,lt[0].width,lt[0].height);for(let Re=0,ke=lt.length;Re0&&Ve++,t.texStorage2D(n.TEXTURE_CUBE_MAP,Ve,qe,Me[0].width,Me[0].height));for(let Re=0;Re<6;Re++)if(et){lt?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,0,0,Me[Re].width,Me[Re].height,Fe,je,Me[Re].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,qe,Me[Re].width,Me[Re].height,0,Fe,je,Me[Re].data);for(let ke=0;ke>ee),Me=Math.max(1,A.height>>ee);$===n.TEXTURE_3D||$===n.TEXTURE_2D_ARRAY?t.texImage3D($,ee,Ie,et,Me,A.depth,0,ve,Ee,null):t.texImage2D($,ee,Ie,et,Me,0,ve,Ee,null)}t.bindFramebuffer(n.FRAMEBUFFER,w),ae(A)?_.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,ce,$,i.get(G).__webglTexture,0,B(A)):($===n.TEXTURE_2D||$>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&$<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,ce,$,i.get(G).__webglTexture,ee),t.bindFramebuffer(n.FRAMEBUFFER,null)}function O(w,A,G){if(n.bindRenderbuffer(n.RENDERBUFFER,w),A.depthBuffer&&!A.stencilBuffer){let ce=a===!0?n.DEPTH_COMPONENT24:n.DEPTH_COMPONENT16;if(G||ae(A)){const $=A.depthTexture;$&&$.isDepthTexture&&($.type===tr?ce=n.DEPTH_COMPONENT32F:$.type===Ur&&(ce=n.DEPTH_COMPONENT24));const ee=B(A);ae(A)?_.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,ee,ce,A.width,A.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,ee,ce,A.width,A.height)}else n.renderbufferStorage(n.RENDERBUFFER,ce,A.width,A.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,w)}else if(A.depthBuffer&&A.stencilBuffer){const ce=B(A);G&&ae(A)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,ce,n.DEPTH24_STENCIL8,A.width,A.height):ae(A)?_.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,ce,n.DEPTH24_STENCIL8,A.width,A.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,A.width,A.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,w)}else{const ce=A.isWebGLMultipleRenderTargets===!0?A.texture:[A.texture];for(let $=0;$0){G.__webglFramebuffer[Ee]=[];for(let Ie=0;Ie0){G.__webglFramebuffer=[];for(let Ee=0;Ee0&&ae(w)===!1){const Ee=ee?A:[A];G.__webglMultisampledFramebuffer=n.createFramebuffer(),G.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,G.__webglMultisampledFramebuffer);for(let Ie=0;Ie0)for(let Ie=0;Ie0)for(let Ie=0;Ie0&&ae(w)===!1){const A=w.isWebGLMultipleRenderTargets?w.texture:[w.texture],G=w.width,ce=w.height;let $=n.COLOR_BUFFER_BIT;const ee=[],ve=w.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ee=i.get(w),Ie=w.isWebGLMultipleRenderTargets===!0;if(Ie)for(let Be=0;Be0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&A.__useRenderToTexture!==!1}function ne(w){const A=o.render.frame;h.get(w)!==A&&(h.set(w,A),w.update())}function re(w,A){const G=w.colorSpace,ce=w.format,$=w.type;return w.isCompressedTexture===!0||w.isVideoTexture===!0||w.format===ng||G!==hn&&G!==Qn&&(Nt.getTransfer(G)===Gt?a===!1?e.has("EXT_sRGB")===!0&&ce===jn?(w.format=ng,w.minFilter=Mn,w.generateMipmaps=!1):A=nO.sRGBToLinear(A):(ce!==jn||$!==Yr)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",G)),A}this.allocateTextureUnit=Y,this.resetTextureUnits=D,this.setTexture2D=q,this.setTexture2DArray=le,this.setTexture3D=Z,this.setTextureCube=J,this.rebindTextures=se,this.setupRenderTarget=te,this.updateRenderTargetMipmap=be,this.updateMultisampleRenderTarget=xe,this.setupDepthRenderbuffer=H,this.setupFrameBufferTexture=we,this.useMultisampledRTT=ae}function Nvt(n,e,t){const i=t.isWebGL2;function r(s,o=Qn){let a;const l=Nt.getTransfer(o);if(s===Yr)return n.UNSIGNED_BYTE;if(s===$w)return n.UNSIGNED_SHORT_4_4_4_4;if(s===Ww)return n.UNSIGNED_SHORT_5_5_5_1;if(s===Xmt)return n.BYTE;if(s===Zmt)return n.SHORT;if(s===PE)return n.UNSIGNED_SHORT;if(s===Yw)return n.INT;if(s===Ur)return n.UNSIGNED_INT;if(s===tr)return n.FLOAT;if(s===vl)return i?n.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===Jmt)return n.ALPHA;if(s===jn)return n.RGBA;if(s===egt)return n.LUMINANCE;if(s===tgt)return n.LUMINANCE_ALPHA;if(s===Os)return n.DEPTH_COMPONENT;if(s===Zo)return n.DEPTH_STENCIL;if(s===ng)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===ngt)return n.RED;if(s===Kw)return n.RED_INTEGER;if(s===igt)return n.RG;if(s===jw)return n.RG_INTEGER;if(s===Qw)return n.RGBA_INTEGER;if(s===wf||s===Of||s===Nf||s===Mf)if(l===Gt)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===wf)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===Of)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===Nf)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===Mf)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===wf)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===Of)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===Nf)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===Mf)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Ax||s===wx||s===Ox||s===Nx)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Ax)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===wx)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Ox)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Nx)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===Xw)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===Mx||s===Ix)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===Mx)return l===Gt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Ix)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Dx||s===Lx||s===kx||s===Px||s===Ux||s===Fx||s===Bx||s===Gx||s===zx||s===Vx||s===Hx||s===qx||s===Yx||s===$x)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Dx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Lx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===kx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Px)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Ux)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Fx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Bx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Gx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===zx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Vx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Hx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===qx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===Yx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===$x)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===If||s===Wx||s===Kx)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===If)return l===Gt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(s===Wx)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(s===Kx)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(s===rgt||s===jx||s===Qx||s===Xx)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(s===If)return a.COMPRESSED_RED_RGTC1_EXT;if(s===jx)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===Qx)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===Xx)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===ws?i?n.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):n[s]!==void 0?n[s]:null}return{convert:r}}class Mvt extends Rn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Ts extends Yt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Ivt={type:"move"};class nm{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ts,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 Ts,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ue,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ue),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ts,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ue,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ue),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,o=null;const a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(const E of e.hand.values()){const g=t.getJointPose(E,i),m=this._getHandJoint(c,E);g!==null&&(m.matrix.fromArray(g.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,m.jointRadius=g.radius),m.visible=g!==null}const d=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],_=d.position.distanceTo(u.position),f=.02,h=.005;c.inputState.pinching&&_>f+h?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&_<=f-h&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.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));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Ivt)))}return a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Ts;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class Dvt extends fa{constructor(e,t){super();const i=this;let r=null,s=1,o=null,a="local-floor",l=1,c=null,d=null,u=null,_=null,f=null,h=null;const E=t.getContextAttributes();let g=null,m=null;const b=[],S=[],v=new vt;let T=null;const C=new Rn;C.layers.enable(1),C.viewport=new Pt;const N=new Rn;N.layers.enable(2),N.viewport=new Pt;const x=[C,N],y=new Mvt;y.layers.enable(1),y.layers.enable(2);let R=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getTargetRaySpace()},this.getControllerGrip=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getGripSpace()},this.getHand=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getHandSpace()};function k(J){const _e=S.indexOf(J.inputSource);if(_e===-1)return;const he=b[_e];he!==void 0&&(he.update(J.inputSource,J.frame,c||o),he.dispatchEvent({type:J.type,data:J.inputSource}))}function W(){r.removeEventListener("select",k),r.removeEventListener("selectstart",k),r.removeEventListener("selectend",k),r.removeEventListener("squeeze",k),r.removeEventListener("squeezestart",k),r.removeEventListener("squeezeend",k),r.removeEventListener("end",W),r.removeEventListener("inputsourceschange",I);for(let J=0;J=0&&(S[ye]=null,b[ye].disconnect(he))}for(let _e=0;_e=S.length){S.push(he),ye=de;break}else if(S[de]===null){S[de]=he,ye=de;break}if(ye===-1)break}const j=b[ye];j&&j.connect(he)}}const V=new ue,z=new ue;function D(J,_e,he){V.setFromMatrixPosition(_e.matrixWorld),z.setFromMatrixPosition(he.matrixWorld);const ye=V.distanceTo(z),j=_e.projectionMatrix.elements,de=he.projectionMatrix.elements,Q=j[14]/(j[10]-1),fe=j[14]/(j[10]+1),we=(j[9]+1)/j[5],O=(j[9]-1)/j[5],F=(j[8]-1)/j[0],H=(de[8]+1)/de[0],se=Q*F,te=Q*H,be=ye/(-F+H),xe=be*-F;_e.matrixWorld.decompose(J.position,J.quaternion,J.scale),J.translateX(xe),J.translateZ(be),J.matrixWorld.compose(J.position,J.quaternion,J.scale),J.matrixWorldInverse.copy(J.matrixWorld).invert();const B=Q+be,ae=fe+be,ne=se-xe,re=te+(ye-xe),w=we*fe/ae*B,A=O*fe/ae*B;J.projectionMatrix.makePerspective(ne,re,w,A,B,ae),J.projectionMatrixInverse.copy(J.projectionMatrix).invert()}function Y(J,_e){_e===null?J.matrixWorld.copy(J.matrix):J.matrixWorld.multiplyMatrices(_e.matrixWorld,J.matrix),J.matrixWorldInverse.copy(J.matrixWorld).invert()}this.updateCamera=function(J){if(r===null)return;y.near=N.near=C.near=J.near,y.far=N.far=C.far=J.far,(R!==y.near||P!==y.far)&&(r.updateRenderState({depthNear:y.near,depthFar:y.far}),R=y.near,P=y.far);const _e=J.parent,he=y.cameras;Y(y,_e);for(let ye=0;ye0&&(g.alphaTest.value=m.alphaTest);const b=e.get(m).envMap;if(b&&(g.envMap.value=b,g.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=m.reflectivity,g.ior.value=m.ior,g.refractionRatio.value=m.refractionRatio),m.lightMap){g.lightMap.value=m.lightMap;const S=n._useLegacyLights===!0?Math.PI:1;g.lightMapIntensity.value=m.lightMapIntensity*S,t(m.lightMap,g.lightMapTransform)}m.aoMap&&(g.aoMap.value=m.aoMap,g.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,g.aoMapTransform))}function o(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform))}function a(g,m){g.dashSize.value=m.dashSize,g.totalSize.value=m.dashSize+m.gapSize,g.scale.value=m.scale}function l(g,m,b,S){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.size.value=m.size*b,g.scale.value=S*.5,m.map&&(g.map.value=m.map,t(m.map,g.uvTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function c(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.rotation.value=m.rotation,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function d(g,m){g.specular.value.copy(m.specular),g.shininess.value=Math.max(m.shininess,1e-4)}function u(g,m){m.gradientMap&&(g.gradientMap.value=m.gradientMap)}function _(g,m){g.metalness.value=m.metalness,m.metalnessMap&&(g.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,g.metalnessMapTransform)),g.roughness.value=m.roughness,m.roughnessMap&&(g.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,g.roughnessMapTransform)),e.get(m).envMap&&(g.envMapIntensity.value=m.envMapIntensity)}function f(g,m,b){g.ior.value=m.ior,m.sheen>0&&(g.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),g.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(g.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,g.sheenColorMapTransform)),m.sheenRoughnessMap&&(g.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,g.sheenRoughnessMapTransform))),m.clearcoat>0&&(g.clearcoat.value=m.clearcoat,g.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(g.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,g.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(g.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===Ln&&g.clearcoatNormalScale.value.negate())),m.iridescence>0&&(g.iridescence.value=m.iridescence,g.iridescenceIOR.value=m.iridescenceIOR,g.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(g.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,g.iridescenceMapTransform)),m.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),m.transmission>0&&(g.transmission.value=m.transmission,g.transmissionSamplerMap.value=b.texture,g.transmissionSamplerSize.value.set(b.width,b.height),m.transmissionMap&&(g.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,g.transmissionMapTransform)),g.thickness.value=m.thickness,m.thicknessMap&&(g.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=m.attenuationDistance,g.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(g.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(g.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=m.specularIntensity,g.specularColor.value.copy(m.specularColor),m.specularColorMap&&(g.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,g.specularColorMapTransform)),m.specularIntensityMap&&(g.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,g.specularIntensityMapTransform))}function h(g,m){m.matcap&&(g.matcap.value=m.matcap)}function E(g,m){const b=e.get(m).light;g.referencePosition.value.setFromMatrixPosition(b.matrixWorld),g.nearDistance.value=b.shadow.camera.near,g.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function kvt(n,e,t,i){let r={},s={},o=[];const a=t.isWebGL2?n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(b,S){const v=S.program;i.uniformBlockBinding(b,v)}function c(b,S){let v=r[b.id];v===void 0&&(h(b),v=d(b),r[b.id]=v,b.addEventListener("dispose",g));const T=S.program;i.updateUBOMapping(b,T);const C=e.render.frame;s[b.id]!==C&&(_(b),s[b.id]=C)}function d(b){const S=u();b.__bindingPointIndex=S;const v=n.createBuffer(),T=b.__size,C=b.usage;return n.bindBuffer(n.UNIFORM_BUFFER,v),n.bufferData(n.UNIFORM_BUFFER,T,C),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,S,v),v}function u(){for(let b=0;b0){C=v%T;const k=T-C;C!==0&&k-R.boundary<0&&(v+=T-C,y.__offset=v)}v+=R.storage}return C=v%T,C>0&&(v+=T-C),b.__size=v,b.__cache={},this}function E(b){const S={boundary:0,storage:0};return typeof b=="number"?(S.boundary=4,S.storage=4):b.isVector2?(S.boundary=8,S.storage=8):b.isVector3||b.isColor?(S.boundary=16,S.storage=12):b.isVector4?(S.boundary=16,S.storage=16):b.isMatrix3?(S.boundary=48,S.storage=48):b.isMatrix4?(S.boundary=64,S.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),S}function g(b){const S=b.target;S.removeEventListener("dispose",g);const v=o.indexOf(S.__bindingPointIndex);o.splice(v,1),n.deleteBuffer(r[S.id]),delete r[S.id],delete s[S.id]}function m(){for(const b in r)n.deleteBuffer(r[b]);o=[],r={},s={}}return{bind:l,update:c,dispose:m}}class bO{constructor(e={}){const{canvas:t=Igt(),context:i=null,depth:r=!0,stencil:s=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:u=!1}=e;this.isWebGLRenderer=!0;let _;i!==null?_=i.getContextAttributes().alpha:_=o;const f=new Uint32Array(4),h=new Int32Array(4);let E=null,g=null;const m=[],b=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Kt,this._useLegacyLights=!1,this.toneMapping=qr,this.toneMappingExposure=1;const S=this;let v=!1,T=0,C=0,N=null,x=-1,y=null;const R=new Pt,P=new Pt;let k=null;const W=new ot(0);let I=0,V=t.width,z=t.height,D=1,Y=null,K=null;const q=new Pt(0,0,V,z),le=new Pt(0,0,V,z);let Z=!1;const J=new GE;let _e=!1,he=!1,ye=null;const j=new gt,de=new vt,Q=new ue,fe={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function we(){return N===null?D:1}let O=i;function F(U,pe){for(let Se=0;Se{function Ye(){if(Te.forEach(function(Qe){xe.get(Qe).currentProgram.isReady()&&Te.delete(Qe)}),Te.size===0){ge(U);return}setTimeout(Ye,10)}H.get("KHR_parallel_shader_compile")!==null?Ye():setTimeout(Ye,10)})};let _t=null;function Wt(U){_t&&_t(U)}function tn(){Ht.stop()}function Ot(){Ht.start()}const Ht=new _O;Ht.setAnimationLoop(Wt),typeof self<"u"&&Ht.setContext(self),this.setAnimationLoop=function(U){_t=U,qe.setAnimationLoop(U),U===null?Ht.stop():Ht.start()},qe.addEventListener("sessionstart",tn),qe.addEventListener("sessionend",Ot),this.render=function(U,pe){if(pe!==void 0&&pe.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(v===!0)return;U.matrixWorldAutoUpdate===!0&&U.updateMatrixWorld(),pe.parent===null&&pe.matrixWorldAutoUpdate===!0&&pe.updateMatrixWorld(),qe.enabled===!0&&qe.isPresenting===!0&&(qe.cameraAutoUpdate===!0&&qe.updateCamera(pe),pe=qe.getCamera()),U.isScene===!0&&U.onBeforeRender(S,U,pe,N),g=ee.get(U,b.length),g.init(),b.push(g),j.multiplyMatrices(pe.projectionMatrix,pe.matrixWorldInverse),J.setFromProjectionMatrix(j),he=this.localClippingEnabled,_e=ve.init(this.clippingPlanes,he),E=$.get(U,m.length),E.init(),m.push(E),On(U,pe,0,S.sortObjects),E.finish(),S.sortObjects===!0&&E.sort(Y,K),this.info.render.frame++,_e===!0&&ve.beginShadows();const Se=g.state.shadowsArray;if(Ee.render(Se,U,pe),_e===!0&&ve.endShadows(),this.info.autoReset===!0&&this.info.reset(),Ie.render(E,U),g.setupLights(S._useLegacyLights),pe.isArrayCamera){const Te=pe.cameras;for(let ge=0,Ye=Te.length;ge0?g=b[b.length-1]:g=null,m.pop(),m.length>0?E=m[m.length-1]:E=null};function On(U,pe,Se,Te){if(U.visible===!1)return;if(U.layers.test(pe.layers)){if(U.isGroup)Se=U.renderOrder;else if(U.isLOD)U.autoUpdate===!0&&U.update(pe);else if(U.isLight)g.pushLight(U),U.castShadow&&g.pushShadow(U);else if(U.isSprite){if(!U.frustumCulled||J.intersectsSprite(U)){Te&&Q.setFromMatrixPosition(U.matrixWorld).applyMatrix4(j);const Qe=A.update(U),nt=U.material;nt.visible&&E.push(U,Qe,nt,Se,Q.z,null)}}else if((U.isMesh||U.isLine||U.isPoints)&&(!U.frustumCulled||J.intersectsObject(U))){const Qe=A.update(U),nt=U.material;if(Te&&(U.boundingSphere!==void 0?(U.boundingSphere===null&&U.computeBoundingSphere(),Q.copy(U.boundingSphere.center)):(Qe.boundingSphere===null&&Qe.computeBoundingSphere(),Q.copy(Qe.boundingSphere.center)),Q.applyMatrix4(U.matrixWorld).applyMatrix4(j)),Array.isArray(nt)){const rt=Qe.groups;for(let ct=0,st=rt.length;ct0&&Sa(ge,Ye,pe,Se),Te&&te.viewport(R.copy(Te)),ge.length>0&&Gi(ge,pe,Se),Ye.length>0&&Gi(Ye,pe,Se),Qe.length>0&&Gi(Qe,pe,Se),te.buffers.depth.setTest(!0),te.buffers.depth.setMask(!0),te.buffers.color.setMask(!0),te.setPolygonOffset(!1)}function Sa(U,pe,Se,Te){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;const Ye=se.isWebGL2;ye===null&&(ye=new Ps(1,1,{generateMipmaps:!0,type:H.has("EXT_color_buffer_half_float")?vl:Yr,minFilter:ks,samples:Ye?4:0})),S.getDrawingBufferSize(de),Ye?ye.setSize(de.x,de.y):ye.setSize(Ad(de.x),Ad(de.y));const Qe=S.getRenderTarget();S.setRenderTarget(ye),S.getClearColor(W),I=S.getClearAlpha(),I<1&&S.setClearColor(16777215,.5),S.clear();const nt=S.toneMapping;S.toneMapping=qr,Gi(U,Se,Te),B.updateMultisampleRenderTarget(ye),B.updateRenderTargetMipmap(ye);let rt=!1;for(let ct=0,st=pe.length;ct0),at=!!Se.morphAttributes.position,Ft=!!Se.morphAttributes.normal,cn=!!Se.morphAttributes.color;let qt=qr;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(qt=S.toneMapping);const fn=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Bt=fn!==void 0?fn.length:0,pt=xe.get(Te),va=g.state.lights;if(_e===!0&&(he===!0||U!==y)){const Nn=U===y&&Te.id===x;ve.setState(Te,U,Nn)}let Vt=!1;Te.version===pt.__version?(pt.needsLights&&pt.lightsStateVersion!==va.state.version||pt.outputColorSpace!==nt||ge.isBatchedMesh&&pt.batching===!1||!ge.isBatchedMesh&&pt.batching===!0||ge.isInstancedMesh&&pt.instancing===!1||!ge.isInstancedMesh&&pt.instancing===!0||ge.isSkinnedMesh&&pt.skinning===!1||!ge.isSkinnedMesh&&pt.skinning===!0||ge.isInstancedMesh&&pt.instancingColor===!0&&ge.instanceColor===null||ge.isInstancedMesh&&pt.instancingColor===!1&&ge.instanceColor!==null||pt.envMap!==rt||Te.fog===!0&&pt.fog!==Ye||pt.numClippingPlanes!==void 0&&(pt.numClippingPlanes!==ve.numPlanes||pt.numIntersection!==ve.numIntersection)||pt.vertexAlphas!==ct||pt.vertexTangents!==st||pt.morphTargets!==at||pt.morphNormals!==Ft||pt.morphColors!==cn||pt.toneMapping!==qt||se.isWebGL2===!0&&pt.morphTargetsCount!==Bt)&&(Vt=!0):(Vt=!0,pt.__version=Te.version);let Vi=pt.currentProgram;Vt===!0&&(Vi=zi(Te,pe,ge));let Gl=!1,ts=!1,Ta=!1;const sn=Vi.getUniforms(),Hi=pt.uniforms;if(te.useProgram(Vi.program)&&(Gl=!0,ts=!0,Ta=!0),Te.id!==x&&(x=Te.id,ts=!0),Gl||y!==U){sn.setValue(O,"projectionMatrix",U.projectionMatrix),sn.setValue(O,"viewMatrix",U.matrixWorldInverse);const Nn=sn.map.cameraPosition;Nn!==void 0&&Nn.setValue(O,Q.setFromMatrixPosition(U.matrixWorld)),se.logarithmicDepthBuffer&&sn.setValue(O,"logDepthBufFC",2/(Math.log(U.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&sn.setValue(O,"isOrthographic",U.isOrthographicCamera===!0),y!==U&&(y=U,ts=!0,Ta=!0)}if(ge.isSkinnedMesh){sn.setOptional(O,ge,"bindMatrix"),sn.setOptional(O,ge,"bindMatrixInverse");const Nn=ge.skeleton;Nn&&(se.floatVertexTextures?(Nn.boneTexture===null&&Nn.computeBoneTexture(),sn.setValue(O,"boneTexture",Nn.boneTexture,B)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}ge.isBatchedMesh&&(sn.setOptional(O,ge,"batchingTexture"),sn.setValue(O,"batchingTexture",ge._matricesTexture,B));const xa=Se.morphAttributes;if((xa.position!==void 0||xa.normal!==void 0||xa.color!==void 0&&se.isWebGL2===!0)&&Be.update(ge,Se,Vi),(ts||pt.receiveShadow!==ge.receiveShadow)&&(pt.receiveShadow=ge.receiveShadow,sn.setValue(O,"receiveShadow",ge.receiveShadow)),Te.isMeshGouraudMaterial&&Te.envMap!==null&&(Hi.envMap.value=rt,Hi.flipEnvMap.value=rt.isCubeTexture&&rt.isRenderTargetTexture===!1?-1:1),ts&&(sn.setValue(O,"toneMappingExposure",S.toneMappingExposure),pt.needsLights&&es(Hi,Ta),Ye&&Te.fog===!0&&ce.refreshFogUniforms(Hi,Ye),ce.refreshMaterialUniforms(Hi,Te,D,z,ye),Xc.upload(O,Jr(pt),Hi,B)),Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(Xc.upload(O,Jr(pt),Hi,B),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&sn.setValue(O,"center",ge.center),sn.setValue(O,"modelViewMatrix",ge.modelViewMatrix),sn.setValue(O,"normalMatrix",ge.normalMatrix),sn.setValue(O,"modelMatrix",ge.matrixWorld),Te.isShaderMaterial||Te.isRawShaderMaterial){const Nn=Te.uniformsGroups;for(let Ca=0,pu=Nn.length;Ca0&&B.useMultisampledRTT(U)===!1?ge=xe.get(U).__webglMultisampledFramebuffer:Array.isArray(st)?ge=st[Se]:ge=st,R.copy(U.viewport),P.copy(U.scissor),k=U.scissorTest}else R.copy(q).multiplyScalar(D).floor(),P.copy(le).multiplyScalar(D).floor(),k=Z;if(te.bindFramebuffer(O.FRAMEBUFFER,ge)&&se.drawBuffers&&Te&&te.drawBuffers(U,ge),te.viewport(R),te.scissor(P),te.setScissorTest(k),Ye){const rt=xe.get(U.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_CUBE_MAP_POSITIVE_X+pe,rt.__webglTexture,Se)}else if(Qe){const rt=xe.get(U.texture),ct=pe||0;O.framebufferTextureLayer(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,rt.__webglTexture,Se||0,ct)}x=-1},this.readRenderTargetPixels=function(U,pe,Se,Te,ge,Ye,Qe){if(!(U&&U.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let nt=xe.get(U).__webglFramebuffer;if(U.isWebGLCubeRenderTarget&&Qe!==void 0&&(nt=nt[Qe]),nt){te.bindFramebuffer(O.FRAMEBUFFER,nt);try{const rt=U.texture,ct=rt.format,st=rt.type;if(ct!==jn&&tt.convert(ct)!==O.getParameter(O.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const at=st===vl&&(H.has("EXT_color_buffer_half_float")||se.isWebGL2&&H.has("EXT_color_buffer_float"));if(st!==Yr&&tt.convert(st)!==O.getParameter(O.IMPLEMENTATION_COLOR_READ_TYPE)&&!(st===tr&&(se.isWebGL2||H.has("OES_texture_float")||H.has("WEBGL_color_buffer_float")))&&!at){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}pe>=0&&pe<=U.width-Te&&Se>=0&&Se<=U.height-ge&&O.readPixels(pe,Se,Te,ge,tt.convert(ct),tt.convert(st),Ye)}finally{const rt=N!==null?xe.get(N).__webglFramebuffer:null;te.bindFramebuffer(O.FRAMEBUFFER,rt)}}},this.copyFramebufferToTexture=function(U,pe,Se=0){const Te=Math.pow(2,-Se),ge=Math.floor(pe.image.width*Te),Ye=Math.floor(pe.image.height*Te);B.setTexture2D(pe,0),O.copyTexSubImage2D(O.TEXTURE_2D,Se,0,0,U.x,U.y,ge,Ye),te.unbindTexture()},this.copyTextureToTexture=function(U,pe,Se,Te=0){const ge=pe.image.width,Ye=pe.image.height,Qe=tt.convert(Se.format),nt=tt.convert(Se.type);B.setTexture2D(Se,0),O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,Se.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Se.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,Se.unpackAlignment),pe.isDataTexture?O.texSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,ge,Ye,Qe,nt,pe.image.data):pe.isCompressedTexture?O.compressedTexSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,pe.mipmaps[0].width,pe.mipmaps[0].height,Qe,pe.mipmaps[0].data):O.texSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,Qe,nt,pe.image),Te===0&&Se.generateMipmaps&&O.generateMipmap(O.TEXTURE_2D),te.unbindTexture()},this.copyTextureToTexture3D=function(U,pe,Se,Te,ge=0){if(S.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const Ye=U.max.x-U.min.x+1,Qe=U.max.y-U.min.y+1,nt=U.max.z-U.min.z+1,rt=tt.convert(Te.format),ct=tt.convert(Te.type);let st;if(Te.isData3DTexture)B.setTexture3D(Te,0),st=O.TEXTURE_3D;else if(Te.isDataArrayTexture)B.setTexture2DArray(Te,0),st=O.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,Te.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Te.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,Te.unpackAlignment);const at=O.getParameter(O.UNPACK_ROW_LENGTH),Ft=O.getParameter(O.UNPACK_IMAGE_HEIGHT),cn=O.getParameter(O.UNPACK_SKIP_PIXELS),qt=O.getParameter(O.UNPACK_SKIP_ROWS),fn=O.getParameter(O.UNPACK_SKIP_IMAGES),Bt=Se.isCompressedTexture?Se.mipmaps[0]:Se.image;O.pixelStorei(O.UNPACK_ROW_LENGTH,Bt.width),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Bt.height),O.pixelStorei(O.UNPACK_SKIP_PIXELS,U.min.x),O.pixelStorei(O.UNPACK_SKIP_ROWS,U.min.y),O.pixelStorei(O.UNPACK_SKIP_IMAGES,U.min.z),Se.isDataTexture||Se.isData3DTexture?O.texSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,ct,Bt.data):Se.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),O.compressedTexSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,Bt.data)):O.texSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,ct,Bt),O.pixelStorei(O.UNPACK_ROW_LENGTH,at),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Ft),O.pixelStorei(O.UNPACK_SKIP_PIXELS,cn),O.pixelStorei(O.UNPACK_SKIP_ROWS,qt),O.pixelStorei(O.UNPACK_SKIP_IMAGES,fn),ge===0&&Te.generateMipmaps&&O.generateMipmap(st),te.unbindTexture()},this.initTexture=function(U){U.isCubeTexture?B.setTextureCube(U,0):U.isData3DTexture?B.setTexture3D(U,0):U.isDataArrayTexture||U.isCompressedArrayTexture?B.setTexture2DArray(U,0):B.setTexture2D(U,0),te.unbindTexture()},this.resetState=function(){T=0,C=0,N=null,te.reset(),We.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return nr}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===FE?"display-p3":"srgb",t.unpackColorSpace=Nt.workingColorSpace===au?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Kt?Ns:Jw}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Ns?Kt:hn}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}}class Pvt extends bO{}Pvt.prototype.isWebGL1Renderer=!0;class Uvt extends Yt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t}}class Fvt{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=tg,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=fi()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.InterleavedBuffer: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;rl)continue;_.applyMatrix4(this.matrixWorld);const x=e.ray.origin.distanceTo(_);xe.far||t.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:S,face:null,faceIndex:null,object:this})}}else{const m=Math.max(0,o.start),b=Math.min(g.count,o.start+o.count);for(let S=m,v=b-1;Sl)continue;_.applyMatrix4(this.matrixWorld);const C=e.ray.origin.distanceTo(_);Ce.far||t.push({distance:C,point:u.clone().applyMatrix4(this.matrixWorld),index:S,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;sr.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}class WE extends mi{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new ot(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 ot(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=UE,this.normalScale=new vt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class fr extends WE{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new vt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return En(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ot(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ot(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ot(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class iR extends mi{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ot(16777215),this.specular=new ot(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ot(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=UE,this.normalScale=new vt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=kE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}function Pc(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function Kvt(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function jvt(n){function e(r,s){return n[r]-n[s]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function rR(n,e,t){const i=n.length,r=new n.constructor(i);for(let s=0,o=0;o!==i;++s){const a=t[s]*e;for(let l=0;l!==e;++l)r[o++]=n[a+l]}return r}function TO(n,e,t,i){let r=1,s=n[0];for(;s!==void 0&&s[i]===void 0;)s=n[r++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=n[r++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=n[r++];while(s!==void 0);else do o=s[i],o!==void 0&&(e.push(s.time),t.push(o)),s=n[r++];while(s!==void 0)}class Bl{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let o;n:{i:if(!(e=s)){const a=t[1];e=s)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);const a=this.getValueSize();this.times=i.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){const l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(r!==void 0&&Kvt(r))for(let a=0,l=r.length;a!==l;++a){const c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===Df,s=e.length-1;let o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Bi.prototype.TimeBufferType=Float32Array;Bi.prototype.ValueBufferType=Float32Array;Bi.prototype.DefaultInterpolation=Jo;class ga extends Bi{}ga.prototype.ValueTypeName="bool";ga.prototype.ValueBufferType=Array;ga.prototype.DefaultInterpolation=Tl;ga.prototype.InterpolantFactoryMethodLinear=void 0;ga.prototype.InterpolantFactoryMethodSmooth=void 0;class xO extends Bi{}xO.prototype.ValueTypeName="color";class na extends Bi{}na.prototype.ValueTypeName="number";class Jvt extends Bl{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(r-t);let c=e*a;for(let d=c+a;c!==d;c+=4)Xr.slerpFlat(s,0,o,c-a,o,c,l);return s}}class Fs extends Bi{InterpolantFactoryMethodLinear(e){return new Jvt(this.times,this.values,this.getValueSize(),e)}}Fs.prototype.ValueTypeName="quaternion";Fs.prototype.DefaultInterpolation=Jo;Fs.prototype.InterpolantFactoryMethodSmooth=void 0;class Ea extends Bi{}Ea.prototype.ValueTypeName="string";Ea.prototype.ValueBufferType=Array;Ea.prototype.DefaultInterpolation=Tl;Ea.prototype.InterpolantFactoryMethodLinear=void 0;Ea.prototype.InterpolantFactoryMethodSmooth=void 0;class ia extends Bi{}ia.prototype.ValueTypeName="vector";class eTt{constructor(e,t=-1,i,r=sgt){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=fi(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(nTt(i[o]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=i.length;s!==o;++s)t.push(Bi.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const s=t.length,o=[];for(let a=0;a1){const u=d[1];let _=r[u];_||(r[u]=_=[]),_.push(c)}}const o=[];for(const a in r)o.push(this.CreateFromMorphTargetSequence(a,r[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(u,_,f,h,E){if(f.length!==0){const g=[],m=[];TO(f,g,m,h),g.length!==0&&E.push(new u(_,g,m))}},r=[],s=e.name||"default",o=e.fps||30,a=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let u=0;u{t&&t(s),this.manager.itemEnd(e)},0),s;if(Qi[e]!==void 0){Qi[e].push({onLoad:t,onProgress:i,onError:r});return}Qi[e]=[],Qi[e].push({onLoad:t,onProgress:i,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const d=Qi[e],u=c.body.getReader(),_=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),f=_?parseInt(_):0,h=f!==0;let E=0;const g=new ReadableStream({start(m){b();function b(){u.read().then(({done:S,value:v})=>{if(S)m.close();else{E+=v.byteLength;const T=new ProgressEvent("progress",{lengthComputable:h,loaded:E,total:f});for(let C=0,N=d.length;C{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(d=>new DOMParser().parseFromString(d,a));case"json":return c.json();default:if(a===void 0)return c.text();{const u=/charset="?([^;"\s]*)"?/i.exec(a),_=u&&u[1]?u[1].toLowerCase():void 0,f=new TextDecoder(_);return c.arrayBuffer().then(h=>f.decode(h))}}}).then(c=>{ra.add(e,c);const d=Qi[e];delete Qi[e];for(let u=0,_=d.length;u<_;u++){const f=d[u];f.onLoad&&f.onLoad(c)}}).catch(c=>{const d=Qi[e];if(d===void 0)throw this.manager.itemError(e),c;delete Qi[e];for(let u=0,_=d.length;u<_;u++){const f=d[u];f.onError&&f.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class oTt extends ba{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=ra.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const a=xl("img");function l(){d(),ra.add(e,this),t&&t(this),s.manager.itemEnd(e)}function c(u){d(),r&&r(u),s.manager.itemError(e),s.manager.itemEnd(e)}function d(){a.removeEventListener("load",l,!1),a.removeEventListener("error",c,!1)}return a.addEventListener("load",l,!1),a.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(a.crossOrigin=this.crossOrigin),s.manager.itemStart(e),a.src=e,a}}class RO extends ba{constructor(e){super(e)}load(e,t,i,r){const s=new pn,o=new oTt(this.manager);return o.setCrossOrigin(this.crossOrigin),o.setPath(this.path),o.load(e,function(a){s.image=a,s.needsUpdate=!0,t!==void 0&&t(s)},i,r),s}}class uu extends Yt{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ot(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}}const om=new gt,sR=new ue,oR=new ue;class KE{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new vt(512,512),this.map=null,this.mapPass=null,this.matrix=new gt,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new GE,this._frameExtents=new vt(1,1),this._viewportCount=1,this._viewports=[new Pt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,i=this.matrix;sR.setFromMatrixPosition(e.matrixWorld),t.position.copy(sR),oR.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(oR),t.updateMatrixWorld(),om.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(om),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(om)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class aTt extends KE{constructor(){super(new Rn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const t=this.camera,i=ea*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(i!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=i,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class lTt extends uu{constructor(e,t,i=0,r=Math.PI/3,s=0,o=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(Yt.DEFAULT_UP),this.updateMatrix(),this.target=new Yt,this.distance=i,this.angle=r,this.penumbra=s,this.decay=o,this.map=null,this.shadow=new aTt}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const aR=new gt,Ga=new ue,am=new ue;class cTt extends KE{constructor(){super(new Rn(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new vt(4,2),this._viewportCount=6,this._viewports=[new Pt(2,1,1,1),new Pt(0,1,1,1),new Pt(3,1,1,1),new Pt(1,1,1,1),new Pt(3,0,1,1),new Pt(1,0,1,1)],this._cubeDirections=[new ue(1,0,0),new ue(-1,0,0),new ue(0,0,1),new ue(0,0,-1),new ue(0,1,0),new ue(0,-1,0)],this._cubeUps=[new ue(0,1,0),new ue(0,1,0),new ue(0,1,0),new ue(0,1,0),new ue(0,0,1),new ue(0,0,-1)]}updateMatrices(e,t=0){const i=this.camera,r=this.matrix,s=e.distance||i.far;s!==i.far&&(i.far=s,i.updateProjectionMatrix()),Ga.setFromMatrixPosition(e.matrixWorld),i.position.copy(Ga),am.copy(i.position),am.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(am),i.updateMatrixWorld(),r.makeTranslation(-Ga.x,-Ga.y,-Ga.z),aR.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(aR)}}class dTt extends uu{constructor(e,t,i=0,r=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=r,this.shadow=new cTt}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class uTt extends KE{constructor(){super(new VE(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class AO extends uu{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Yt.DEFAULT_UP),this.updateMatrix(),this.target=new Yt,this.shadow=new uTt}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class _Tt extends uu{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class rl{static decodeText(e){if(typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,r=e.length;i"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=ra.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(l){ra.add(e,l),t&&t(l),s.manager.itemEnd(e)}).catch(function(l){r&&r(l),s.manager.itemError(e),s.manager.itemEnd(e)}),s.manager.itemStart(e)}}const jE="\\[\\]\\.:\\/",hTt=new RegExp("["+jE+"]","g"),QE="[^"+jE+"]",fTt="[^"+jE.replace("\\.","")+"]",mTt=/((?:WC+[\/:])*)/.source.replace("WC",QE),gTt=/(WCOD+)?/.source.replace("WCOD",fTt),ETt=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",QE),bTt=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",QE),STt=new RegExp("^"+mTt+gTt+ETt+bTt+"$"),yTt=["material","materials","bones","map"];class vTt{constructor(e,t,i){const r=i||Dt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class Dt{constructor(e,t,i){this.path=t,this.parsedPath=i||Dt.parseTrackName(t),this.node=Dt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Dt.Composite(e,t,i):new Dt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(hTt,"")}static parseTrackName(e){const t=STt.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=i.nodeName.substring(r+1);yTt.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(s){for(let o=0;o=2.0 are supported."));return}const c=new t0t(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d=0&&a[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}}function xTt(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const yt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class CTt{constructor(e){this.parser=e,this.name=yt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,o)}}class FTt{constructor(e){this.parser=e,this.name=yt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let l=i.textureLoader;if(a.uri){const c=i.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return i.loadTextureImage(e,o.source,l);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class BTt{constructor(e){this.parser=e,this.name=yt.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let l=i.textureLoader;if(a.uri){const c=i.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return i.loadTextureImage(e,o.source,l);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class GTt{constructor(e){this.name=yt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const l=r.byteOffset||0,c=r.byteLength||0,d=r.count,u=r.byteStride,_=new Uint8Array(a,l,c);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(d,u,_,r.mode,r.filter).then(function(f){return f.buffer}):o.ready.then(function(){const f=new ArrayBuffer(d*u);return o.decodeGltfBuffer(new Uint8Array(f),d,u,_,r.mode,r.filter),f})})}else return null}}class zTt{constructor(e){this.name=yt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const c of r.primitives)if(c.mode!==Yn.TRIANGLES&&c.mode!==Yn.TRIANGLE_STRIP&&c.mode!==Yn.TRIANGLE_FAN&&c.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],l={};for(const c in o)a.push(this.parser.getDependency("accessor",o[c]).then(d=>(l[c]=d,l[c])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(c=>{const d=c.pop(),u=d.isGroup?d.children:[d],_=c[0].count,f=[];for(const h of u){const E=new gt,g=new ue,m=new Xr,b=new ue(1,1,1),S=new qvt(h.geometry,h.material,_);for(let v=0;v<_;v++)l.TRANSLATION&&g.fromBufferAttribute(l.TRANSLATION,v),l.ROTATION&&m.fromBufferAttribute(l.ROTATION,v),l.SCALE&&b.fromBufferAttribute(l.SCALE,v),S.setMatrixAt(v,E.compose(g,m,b));for(const v in l)if(v==="_COLOR_0"){const T=l[v];S.instanceColor=new sg(T.array,T.itemSize,T.normalized)}else v!=="TRANSLATION"&&v!=="ROTATION"&&v!=="SCALE"&&h.geometry.setAttribute(v,l[v]);Yt.prototype.copy.call(S,h),this.parser.assignFinalMaterial(S),f.push(S)}return d.isGroup?(d.clear(),d.add(...f),d):f[0]}))}}const wO="glTF",za=12,cR={JSON:1313821514,BIN:5130562};class VTt{constructor(e){this.name=yt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,za),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==wO)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-za,s=new DataView(e,za);let o=0;for(;o0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const e0t=new gt;class t0t{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new xTt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,s=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,r=navigator.userAgent.indexOf("Firefox")>-1,s=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||r&&s<98?this.textureLoader=new RO(this.options.manager):this.textureLoader=new pTt(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new CO(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};return ds(s,a,r),Lr(a,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{const l=this.associations.get(o);l!=null&&this.associations.set(a,l);for(const[c,d]of o.children.entries())s(d,a.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&g.setY(y,C[N*l+1]),l>=3&&g.setZ(y,C[N*l+2]),l>=4&&g.setW(y,C[N*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return g})}loadTexture(e){const t=this.json,i=this.options,s=t.textures[e].source,o=t.images[s];let a=this.textureLoader;if(o.uri){const l=i.manager.getHandler(o.uri);l!==null&&(a=l)}return this.loadTextureImage(e,s,a)}loadTextureImage(e,t,i){const r=this,s=this.json,o=s.textures[e],a=s.images[t],l=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];const c=this.loadImageSource(t,i).then(function(d){d.flipY=!1,d.name=o.name||a.name||"",d.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(d.name=a.uri);const _=(s.samplers||{})[o.sampler]||{};return d.magFilter=dR[_.magFilter]||Mn,d.minFilter=dR[_.minFilter]||ks,d.wrapS=uR[_.wrapS]||Xo,d.wrapT=uR[_.wrapT]||Xo,r.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){const i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const o=r.images[e],a=self.URL||self.webkitURL;let l=o.uri||"",c=!1;if(o.bufferView!==void 0)l=i.getDependency("bufferView",o.bufferView).then(function(u){c=!0;const _=new Blob([u],{type:o.mimeType});return l=a.createObjectURL(_),l});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(l).then(function(u){return new Promise(function(_,f){let h=_;t.isImageBitmapLoader===!0&&(h=function(E){const g=new pn(E);g.needsUpdate=!0,_(g)}),t.load(rl.resolveURL(u,s.path),h,void 0,f)})}).then(function(u){return c===!0&&a.revokeObjectURL(l),u.userData.mimeType=o.mimeType||JTt(o.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),u});return this.sourceCache[e]=d,d}assignTexture(e,t,i,r){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[yt.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[yt.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const l=s.associations.get(o);o=s.extensions[yt.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,l)}}return r!==void 0&&(o.colorSpace=r),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let l=this.cache.get(a);l||(l=new vO,mi.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(a,l)),i=l}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let l=this.cache.get(a);l||(l=new yO,mi.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(a,l)),i=l}if(r||s||o){let a="ClonedMaterial:"+i.uuid+":";r&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let l=this.cache.get(a);l||(l=i.clone(),s&&(l.vertexColors=!0),o&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(a,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return WE}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const a={},l=s.extensions||{},c=[];if(l[yt.KHR_MATERIALS_UNLIT]){const u=r[yt.KHR_MATERIALS_UNLIT];o=u.getMaterialType(),c.push(u.extendParams(a,s,t))}else{const u=s.pbrMetallicRoughness||{};if(a.color=new ot(1,1,1),a.opacity=1,Array.isArray(u.baseColorFactor)){const _=u.baseColorFactor;a.color.setRGB(_[0],_[1],_[2],hn),a.opacity=_[3]}u.baseColorTexture!==void 0&&c.push(t.assignTexture(a,"map",u.baseColorTexture,Kt)),a.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,a.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(a,"metalnessMap",u.metallicRoughnessTexture)),c.push(t.assignTexture(a,"roughnessMap",u.metallicRoughnessTexture))),o=this._invokeOne(function(_){return _.getMaterialType&&_.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(_){return _.extendMaterialParams&&_.extendMaterialParams(e,a)})))}s.doubleSided===!0&&(a.side=xi);const d=s.alphaMode||cm.OPAQUE;if(d===cm.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,d===cm.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==Fr&&(c.push(t.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new vt(1,1),s.normalTexture.scale!==void 0)){const u=s.normalTexture.scale;a.normalScale.set(u,u)}if(s.occlusionTexture!==void 0&&o!==Fr&&(c.push(t.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==Fr){const u=s.emissiveFactor;a.emissive=new ot().setRGB(u[0],u[1],u[2],hn)}return s.emissiveTexture!==void 0&&o!==Fr&&c.push(t.assignTexture(a,"emissiveMap",s.emissiveTexture,Kt)),Promise.all(c).then(function(){const u=new o(a);return s.name&&(u.name=s.name),Lr(u,s),t.associations.set(u,{materials:e}),s.extensions&&ds(r,u,s),u})}createUniqueName(e){const t=Dt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(a){return i[yt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(l){return _R(l,a,t)})}const o=[];for(let a=0,l=e.length;a0&&XTt(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),Lr(m,s),g.extensions&&ds(r,m,g),t.assignFinalMaterial(m),u.push(m)}for(let f=0,h=u.length;f1?d=new Ts:c.length===1?d=c[0]:d=new Yt,d!==c[0])for(let u=0,_=c.length;u<_;u++)d.add(c[u]);if(s.name&&(d.userData.name=s.name,d.name=o),Lr(d,s),s.extensions&&ds(i,d,s),s.matrix!==void 0){const u=new gt;u.fromArray(s.matrix),d.applyMatrix4(u)}else s.translation!==void 0&&d.position.fromArray(s.translation),s.rotation!==void 0&&d.quaternion.fromArray(s.rotation),s.scale!==void 0&&d.scale.fromArray(s.scale);return r.associations.has(d)||r.associations.set(d,{}),r.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,i=this.json.scenes[e],r=this,s=new Ts;i.name&&(s.name=r.createUniqueName(i.name)),Lr(s,i),i.extensions&&ds(t,s,i);const o=i.nodes||[],a=[];for(let l=0,c=o.length;l{const u=new Map;for(const[_,f]of r.associations)(_ instanceof mi||_ instanceof pn)&&u.set(_,f);return d.traverse(_=>{const f=r.associations.get(_);f!=null&&u.set(_,f)}),u};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){const o=[],a=e.name?e.name:e.uuid,l=[];Cr[s.path]===Cr.weights?e.traverse(function(_){_.morphTargetInfluences&&l.push(_.name?_.name:_.uuid)}):l.push(a);let c;switch(Cr[s.path]){case Cr.weights:c=na;break;case Cr.rotation:c=Fs;break;case Cr.position:case Cr.scale:c=ia;break;default:switch(i.itemSize){case 1:c=na;break;case 2:case 3:default:c=ia;break}break}const d=r.interpolation!==void 0?KTt[r.interpolation]:Jo,u=this._getArrayFromAccessor(i);for(let _=0,f=l.length;_{Ge.replace()})},stopVideoStream(){this.isVideoActive=!1,this.imageData=null,He.emit("stop_webcam_video_stream"),Ue(()=>{Ge.replace()})},startDrag(n){this.isDragging=!0,this.zIndex=5001,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY,document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.stopDrag)},drag(n){if(this.isDragging){const e=n.clientX-this.dragStart.x,t=n.clientY-this.dragStart.y;this.position.bottom-=t,this.position.right-=e,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY}},stopDrag(){this.isDragging=!1,this.zIndex=0,document.removeEventListener("mousemove",this.drag),document.removeEventListener("mouseup",this.stopDrag)}},mounted(){Ge.replace(),He.on("video_stream_image",n=>{if(this.isVideoActive){this.imageDataUrl="data:image/jpeg;base64,"+n,this.frameCount++;const e=Date.now();e-this.lastFrameTime>=1e3&&(this.frameRate=this.frameCount,this.frameCount=0,this.lastFrameTime=e)}})}},r0t=["src"],s0t=["src"],o0t={class:"controls"},a0t=p("i",{"data-feather":"video"},null,-1),l0t=[a0t],c0t=p("i",{"data-feather":"video"},null,-1),d0t=[c0t],u0t={key:2};function _0t(n,e,t,i,r,s){return M(),L("div",{class:"floating-frame bg-white",style:un({bottom:r.position.bottom+"px",right:r.position.right+"px","z-index":r.zIndex}),onMousedown:e[4]||(e[4]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[5]||(e[5]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},[p("div",{class:"handle",onMousedown:e[0]||(e[0]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[1]||(e[1]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},"Drag Me",32),r.isVideoActive&&r.imageDataUrl!=null?(M(),L("img",{key:0,src:r.imageDataUrl,alt:"Webcam Frame",width:"300",height:"300"},null,8,r0t)):X("",!0),r.isVideoActive&&r.imageDataUrl==null?(M(),L("p",{key:1,src:r.imageDataUrl,alt:"Webcam Frame",width:"300",height:"300"},"Loading. Please wait...",8,s0t)):X("",!0),p("div",o0t,[r.isVideoActive?X("",!0):(M(),L("button",{key:0,class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded",onClick:e[2]||(e[2]=(...o)=>s.startVideoStream&&s.startVideoStream(...o))},l0t)),r.isVideoActive?(M(),L("button",{key:1,class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",onClick:e[3]||(e[3]=(...o)=>s.stopVideoStream&&s.stopVideoStream(...o))},d0t)):X("",!0),r.isVideoActive?(M(),L("span",u0t,"FPS: "+me(r.frameRate),1)):X("",!0)])],36)}const p0t=ft(i0t,[["render",_0t]]);const h0t={data(){return{isAudioActive:!1,imageDataUrl:null,isDragging:!1,position:{bottom:0,right:0},dragStart:{x:0,y:0},zIndex:0,frameRate:0,frameCount:0,lastFrameTime:Date.now()}},methods:{startAudioStream(){this.isAudioActive=!0,He.emit("start_audio_stream"),Ue(()=>{Ge.replace()})},stopAudioStream(){this.isAudioActive=!1,this.imageDataUrl=null,He.emit("stop_audio_stream"),Ue(()=>{Ge.replace()})},startDrag(n){this.isDragging=!0,this.zIndex=5001,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY,document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.stopDrag)},drag(n){if(this.isDragging){const e=n.clientX-this.dragStart.x,t=n.clientY-this.dragStart.y;this.position.bottom-=t,this.position.right-=e,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY}},stopDrag(){this.isDragging=!1,this.zIndex=0,document.removeEventListener("mousemove",this.drag),document.removeEventListener("mouseup",this.stopDrag)}},mounted(){Ge.replace(),He.on("update_spectrogram",n=>{if(this.isAudioActive){this.imageDataUrl="data:image/jpeg;base64,"+n,this.frameCount++;const e=Date.now();e-this.lastFrameTime>=1e3&&(this.frameRate=this.frameCount,this.frameCount=0,this.lastFrameTime=e)}})}},f0t=["src"],m0t={class:"controls"},g0t=p("i",{"data-feather":"mic"},null,-1),E0t=[g0t],b0t=p("i",{"data-feather":"mic"},null,-1),S0t=[b0t],y0t={key:2};function v0t(n,e,t,i,r,s){return M(),L("div",{class:"floating-frame bg-white",style:un({bottom:r.position.bottom+"px",right:r.position.right+"px","z-index":r.zIndex}),onMousedown:e[4]||(e[4]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[5]||(e[5]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},[p("div",{class:"handle",onMousedown:e[0]||(e[0]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[1]||(e[1]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},"Drag Me",32),r.isAudioActive&&r.imageDataUrl!=null?(M(),L("img",{key:0,src:r.imageDataUrl,alt:"Spectrogram",width:"300",height:"300"},null,8,f0t)):X("",!0),p("div",m0t,[r.isAudioActive?X("",!0):(M(),L("button",{key:0,class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded",onClick:e[2]||(e[2]=(...o)=>s.startAudioStream&&s.startAudioStream(...o))},E0t)),r.isAudioActive?(M(),L("button",{key:1,class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",onClick:e[3]||(e[3]=(...o)=>s.stopAudioStream&&s.stopAudioStream(...o))},S0t)):X("",!0),r.isAudioActive?(M(),L("span",y0t,"FPS: "+me(r.frameRate),1)):X("",!0)])],36)}const T0t=ft(h0t,[["render",v0t]]);const x0t={data(){return{activePersonality:null}},props:{personality:{type:Object,default:()=>({})}},components:{VideoFrame:p0t,AudioFrame:T0t},computed:{isReady:{get(){return this.$store.state.ready}}},watch:{"$store.state.mountedPersArr":"updatePersonality","$store.state.config.active_personality_id":"updatePersonality"},async mounted(){for(;this.isReady===!1;)await new Promise(n=>setTimeout(n,100));console.log("Personality:",this.personality),this.initWebGLScene(),this.updatePersonality(),Ue(()=>{Ge.replace()}),this.$refs.video_frame.position={bottom:0,right:0},this.$refs.audio_frame.position={bottom:0,right:100}},beforeDestroy(){},methods:{initWebGLScene(){this.scene=new Uvt,this.camera=new Rn(75,window.innerWidth/window.innerHeight,.1,1e3),this.renderer=new bO,this.renderer.setSize(window.innerWidth,window.innerHeight),this.$refs.webglContainer.appendChild(this.renderer.domElement);const n=new $r,e=new iR({color:65280});this.cube=new An(n,e),this.scene.add(this.cube);const t=new _Tt(4210752),i=new AO(16777215,.5);i.position.set(0,1,0),this.scene.add(t),this.scene.add(i),this.camera.position.z=5,this.animate()},updatePersonality(){const{mountedPersArr:n,config:e}=this.$store.state;this.activePersonality=n[e.active_personality_id],this.activePersonality.avatar?this.showBoxWithAvatar(this.activePersonality.avatar):this.showDefaultCube(),this.$emit("update:personality",this.activePersonality)},loadScene(n){new TTt().load(n,t=>{this.scene.remove(this.cube),this.cube=t.scene,this.scene.add(this.cube)})},showBoxWithAvatar(n){this.cube&&this.scene.remove(this.cube);const e=new $r,t=new RO().load(n),i=new Fr({map:t});this.cube=new An(e,i),this.scene.add(this.cube)},showDefaultCube(){this.scene.remove(this.cube);const n=new $r,e=new iR({color:65280});this.cube=new An(n,e),this.scene.add(this.cube)},animate(){requestAnimationFrame(this.animate),this.cube&&(this.cube.rotation.x+=.01,this.cube.rotation.y+=.01),this.renderer.render(this.scene,this.camera)}}},C0t={ref:"webglContainer"},R0t={class:"flex-col y-overflow scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},A0t={key:0,class:"text-center"},w0t={key:1,class:"text-center"},O0t={class:"floating-frame2"},N0t=["innerHTML"];function M0t(n,e,t,i,r,s){const o=St("VideoFrame"),a=St("AudioFrame");return M(),L(Xe,null,[p("div",C0t,null,512),p("div",R0t,[!r.activePersonality||!r.activePersonality.scene_path?(M(),L("div",A0t," Personality does not have a 3d avatar. ")):X("",!0),!r.activePersonality||!r.activePersonality.avatar||r.activePersonality.avatar===""?(M(),L("div",w0t," Personality does not have an avatar. ")):X("",!0),p("div",O0t,[p("div",{innerHTML:n.htmlContent},null,8,N0t)])]),Le(o,{ref:"video_frame"},null,512),Le(a,{ref:"audio_frame"},null,512)],64)}const I0t=ft(x0t,[["render",M0t]]),D0t=oL({history:x2("/"),routes:[{path:"/playground/",name:"playground",component:GQe},{path:"/extensions/",name:"extensions",component:XQe},{path:"/help/",name:"help",component:gXe},{path:"/settings/",name:"settings",component:Xlt},{path:"/training/",name:"training",component:Ect},{path:"/quantizing/",name:"quantizing",component:Act},{path:"/",name:"discussions",component:mmt},{path:"/",name:"interactive",component:I0t}]});const _u=mI(DU);console.log("Loaded main.js");function pR(n){const e={};for(const t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}const L0t=HI({state(){return{yesNoDialog:null,universalForm:null,toast:null,messageBox:null,api_get_req:null,startSpeechRecognition:null,ready:!1,loading_infos:"",loading_progress:0,version:"unknown",settingsChanged:!1,isConnected:!1,isModelOk:!1,isGenerating:!1,config:null,mountedPers:null,mountedPersArr:[],mountedExtensions:[],bindingsZoo:[],modelsArr:[],selectedModel:null,personalities:[],diskUsage:null,ramUsage:null,vramUsage:null,modelsZoo:[],installedModels:[],currentModel:null,extensionsZoo:[],databases:[]}},mutations:{setIsReady(n,e){n.ready=e},setIsConnected(n,e){n.isConnected=e},setIsModelOk(n,e){n.isModelOk=e},setIsGenerating(n,e){n.isGenerating=e},setConfig(n,e){n.config=e},setPersonalities(n,e){n.personalities=e},setMountedPers(n,e){n.mountedPers=e},setMountedPersArr(n,e){n.mountedPersArr=e},setMountedExtensions(n,e){n.mountedExtensions=e},setbindingsZoo(n,e){n.bindingsZoo=e},setModelsArr(n,e){n.modelsArr=e},setselectedModel(n,e){n.selectedModel=e},setDiskUsage(n,e){n.diskUsage=e},setRamUsage(n,e){n.ramUsage=e},setVramUsage(n,e){n.vramUsage=e},setModelsZoo(n,e){n.modelsZoo=e},setCurrentModel(n,e){n.currentModel=e},setExtensionsZoo(n,e){n.extensionsZoo=e},setDatabases(n,e){n.databases=e}},getters:{getIsConnected(n){return n.isConnected},getIsModelOk(n){return n.isModelOk},getIsGenerating(n){return n.isGenerating},getConfig(n){return n.config},getPersonalities(n){return n.personalities},getMountedPersArr(n){return n.mountedPersArr},getmmountedExtensions(n){return n.mountedExtensions},getMountedPers(n){return n.mountedPers},getbindingsZoo(n){return n.bindingsZoo},getModelsArr(n){return n.modelsArr},getDiskUsage(n){return n.diskUsage},getRamUsage(n){return n.ramUsage},getVramUsage(n){return n.vramUsage},getDatabasesList(n){return n.databases},getModelsZoo(n){return n.modelsZoo},getCurrentModel(n){return n.currentModel},getExtensionsZoo(n){return n.extensionsZoo}},actions:{async getVersion(){try{let n=await Pe.get("/get_lollms_webui_version",{});n&&(this.state.version=n.data.version)}catch{console.log("Coudln't get version")}},async refreshConfig({commit:n}){console.log("Fetching configuration");try{const e=await Hn("get_config");e.active_personality_id<0&&(e.active_personality_id=0);let t=e.personalities[e.active_personality_id].split("/");e.personality_category=t[0],e.personality_folder=t[1],e.extensions.length>0?e.extension_category=e.extensions[-1]:e.extension_category="ai_sensors",console.log("Recovered config"),console.log(e),console.log("Committing config"),console.log(e),console.log(this.state.config),n("setConfig",e)}catch(e){console.log(e.message,"refreshConfig")}},async refreshDatabase({commit:n}){let e=await Hn("list_databases");console.log("databases:",e),n("setDatabases",e)},async refreshPersonalitiesZoo({commit:n}){let e=[];const t=await Hn("get_all_personalities"),i=Object.keys(t);console.log("Personalities recovered:"+this.state.config.personalities);for(let r=0;r{let c=!1;for(const u of this.state.config.personalities)if(u.includes(s+"/"+l.folder))if(c=!0,u.includes(":")){const _=u.split(":");l.language=_[1]}else l.language=null;let d={};return d=l,d.category=s,d.full_path=s+"/"+l.folder,d.isMounted=c,d});e.length==0?e=a:e=e.concat(a)}e.sort((r,s)=>r.name.localeCompare(s.name)),n("setPersonalities",e),console.log("Done loading personalities")},refreshMountedPersonalities({commit:n}){this.state.config.active_personality_id<0&&(this.state.config.active_personality_id=0);let e=[];const t=[];for(let i=0;ia.full_path==r||a.full_path==s[0]);if(o>=0){let a=pR(this.state.personalities[o]);s.length>1&&(a.language=s[1]),a?e.push(a):e.push(this.state.personalities[this.state.personalities.findIndex(l=>l.full_path=="generic/lollms")])}else t.push(i),console.log("Couldn't load personality : ",r)}for(let i=t.length-1;i>=0;i--)console.log("Removing personality : ",this.state.config.personalities[t[i]]),this.state.config.personalities.splice(t[i],1),this.state.config.active_personality_id>t[i]&&(this.state.config.active_personality_id-=1);n("setMountedPersArr",e),this.state.mountedPers=this.state.personalities[this.state.personalities.findIndex(i=>i.full_path==this.state.config.personalities[this.state.config.active_personality_id]||i.full_path+":"+i.language==this.state.config.personalities[this.state.config.active_personality_id])]},async refreshBindings({commit:n}){let e=await Hn("list_bindings");n("setbindingsZoo",e)},async refreshModelsZoo({commit:n}){console.log("Fetching models");const e=await Pe.get("/get_available_models");n("setModelsZoo",e.data.filter(t=>t.variants&&t.variants.length>0))},async refreshModelStatus({commit:n}){let e=await Hn("get_model_status");n("setIsModelOk",e.status)},async refreshModels({commit:n}){console.log("Fetching models");let e=await Hn("list_models");console.log(`Found ${e}`);let t=await Hn("get_active_model");console.log("Selected model ",t),t!=null&&n("setselectedModel",t.model),n("setModelsArr",e),console.log("setModelsArr",e),this.state.modelsZoo.map(r=>{r.isInstalled=e.includes(r.name)}),this.state.installedModels=this.state.modelsZoo.filter(r=>r.isInstalled);const i=this.state.modelsZoo.findIndex(r=>r.name==this.state.config.model_name);i!=-1&&n("setCurrentModel",this.state.modelsZoo[i])},async refreshExtensionsZoo({commit:n}){let e=[],t=await Hn("list_extensions");const i=Object.keys(t);console.log("Extensions recovered:"+t);for(let r=0;r{let c=!1;for(const u of this.state.config.extensions)u.includes(s+"/"+l.folder)&&(c=!0);let d={};return d=l,d.category=s,d.full_path=s+"/"+l.folder,d.isMounted=c,d});e.length==0?e=a:e=e.concat(a)}e.sort((r,s)=>r.name.localeCompare(s.name)),console.log("Done loading extensions"),n("setExtensionsZoo",e)},refreshmountedExtensions({commit:n}){console.log("Mounting extensions");let e=[];const t=[];for(let i=0;io.full_path==r);if(s>=0){let o=pR(this.state.config.extensions[s]);o&&e.push(o)}else t.push(i),console.log("Couldn't load extension : ",r)}for(let i=t.length-1;i>=0;i--)console.log("Removing extensions : ",this.state.config.extensions[t[i]]),this.state.config.extensions.splice(t[i],1);n("setMountedExtensions",e)},async refreshDiskUsage({commit:n}){this.state.diskUsage=await Hn("disk_usage")},async refreshRamUsage({commit:n}){this.state.ramUsage=await Hn("ram_usage")},async refreshVramUsage({commit:n}){const e=await Hn("vram_usage"),t=[];if(e.nb_gpus>0){for(let r=0;rd||r.y>d)&&(r.x>d&&(s.x=Math.floor(d/Y.x),r.x=s.x*Y.x,D.mapSize.x=s.x),r.y>d&&(s.y=Math.floor(d/Y.y),r.y=s.y*Y.y,D.mapSize.y=s.y)),D.map===null||k===!0||W===!0){const q=this.type!==Zi?{minFilter:an,magFilter:an}:{};D.map!==null&&D.map.dispose(),D.map=new Ps(r.x,r.y,q),D.map.texture.name=z.name+".shadowMap",D.camera.updateProjectionMatrix()}n.setRenderTarget(D.map),n.clear();const K=D.getViewportCount();for(let q=0;q0||C.map&&C.alphaTest>0){const P=y.uuid,k=C.uuid;let W=c[P];W===void 0&&(W={},c[P]=W);let I=W[k];I===void 0&&(I=y.clone(),W[k]=I),y=I}if(y.visible=C.visible,y.wireframe=C.wireframe,x===Zi?y.side=C.shadowSide!==null?C.shadowSide:C.side:y.side=C.shadowSide!==null?C.shadowSide:u[C.side],y.alphaMap=C.alphaMap,y.alphaTest=C.alphaTest,y.map=C.map,y.clipShadows=C.clipShadows,y.clippingPlanes=C.clippingPlanes,y.clipIntersection=C.clipIntersection,y.displacementMap=C.displacementMap,y.displacementScale=C.displacementScale,y.displacementBias=C.displacementBias,y.wireframeLinewidth=C.wireframeLinewidth,y.linewidth=C.linewidth,N.isPointLight===!0&&y.isMeshDistanceMaterial===!0){const P=n.properties.get(y);P.light=N}return y}function v(T,C,N,x,y){if(T.visible===!1)return;if(T.layers.test(C.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&y===Zi)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(N.matrixWorldInverse,T.matrixWorld);const k=e.update(T),W=T.material;if(Array.isArray(W)){const I=k.groups;for(let V=0,z=I.length;V=1):q.indexOf("OpenGL ES")!==-1&&(K=parseFloat(/^OpenGL ES (\d)/.exec(q)[1]),Y=K>=2);let le=null,Z={};const J=n.getParameter(n.SCISSOR_BOX),_e=n.getParameter(n.VIEWPORT),he=new Pt().fromArray(J),ye=new Pt().fromArray(_e);function j(oe,Ve,De,Re){const ke=new Uint8Array(4),it=n.createTexture();n.bindTexture(oe,it),n.texParameteri(oe,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(oe,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let _t=0;_t"u"?!1:/OculusBrowser/g.test(navigator.userAgent),h=new WeakMap;let E;const g=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function b(w,A){return m?new OffscreenCanvas(w,A):xl("canvas")}function S(w,A,G,ce){let $=1;if((w.width>ce||w.height>ce)&&($=ce/Math.max(w.width,w.height)),$<1||A===!0)if(typeof HTMLImageElement<"u"&&w instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&w instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&w instanceof ImageBitmap){const ee=A?Ad:Math.floor,ve=ee($*w.width),Ee=ee($*w.height);E===void 0&&(E=b(ve,Ee));const Ie=G?b(ve,Ee):E;return Ie.width=ve,Ie.height=Ee,Ie.getContext("2d").drawImage(w,0,0,ve,Ee),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+w.width+"x"+w.height+") to ("+ve+"x"+Ee+")."),Ie}else return"data"in w&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+w.width+"x"+w.height+")."),w;return w}function v(w){return ig(w.width)&&ig(w.height)}function T(w){return a?!1:w.wrapS!==Kn||w.wrapT!==Kn||w.minFilter!==an&&w.minFilter!==Mn}function C(w,A){return w.generateMipmaps&&A&&w.minFilter!==an&&w.minFilter!==Mn}function N(w){n.generateMipmap(w)}function x(w,A,G,ce,$=!1){if(a===!1)return A;if(w!==null){if(n[w]!==void 0)return n[w];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+w+"'")}let ee=A;if(A===n.RED&&(G===n.FLOAT&&(ee=n.R32F),G===n.HALF_FLOAT&&(ee=n.R16F),G===n.UNSIGNED_BYTE&&(ee=n.R8)),A===n.RED_INTEGER&&(G===n.UNSIGNED_BYTE&&(ee=n.R8UI),G===n.UNSIGNED_SHORT&&(ee=n.R16UI),G===n.UNSIGNED_INT&&(ee=n.R32UI),G===n.BYTE&&(ee=n.R8I),G===n.SHORT&&(ee=n.R16I),G===n.INT&&(ee=n.R32I)),A===n.RG&&(G===n.FLOAT&&(ee=n.RG32F),G===n.HALF_FLOAT&&(ee=n.RG16F),G===n.UNSIGNED_BYTE&&(ee=n.RG8)),A===n.RGBA){const ve=$?Td:Nt.getTransfer(ce);G===n.FLOAT&&(ee=n.RGBA32F),G===n.HALF_FLOAT&&(ee=n.RGBA16F),G===n.UNSIGNED_BYTE&&(ee=ve===Gt?n.SRGB8_ALPHA8:n.RGBA8),G===n.UNSIGNED_SHORT_4_4_4_4&&(ee=n.RGBA4),G===n.UNSIGNED_SHORT_5_5_5_1&&(ee=n.RGB5_A1)}return(ee===n.R16F||ee===n.R32F||ee===n.RG16F||ee===n.RG32F||ee===n.RGBA16F||ee===n.RGBA32F)&&e.get("EXT_color_buffer_float"),ee}function y(w,A,G){return C(w,G)===!0||w.isFramebufferTexture&&w.minFilter!==an&&w.minFilter!==Mn?Math.log2(Math.max(A.width,A.height))+1:w.mipmaps!==void 0&&w.mipmaps.length>0?w.mipmaps.length:w.isCompressedTexture&&Array.isArray(w.image)?A.mipmaps.length:1}function R(w){return w===an||w===Jm||w===Qc?n.NEAREST:n.LINEAR}function P(w){const A=w.target;A.removeEventListener("dispose",P),W(A),A.isVideoTexture&&h.delete(A)}function k(w){const A=w.target;A.removeEventListener("dispose",k),V(A)}function W(w){const A=i.get(w);if(A.__webglInit===void 0)return;const G=w.source,ce=g.get(G);if(ce){const $=ce[A.__cacheKey];$.usedTimes--,$.usedTimes===0&&I(w),Object.keys(ce).length===0&&g.delete(G)}i.remove(w)}function I(w){const A=i.get(w);n.deleteTexture(A.__webglTexture);const G=w.source,ce=g.get(G);delete ce[A.__cacheKey],o.memory.textures--}function V(w){const A=w.texture,G=i.get(w),ce=i.get(A);if(ce.__webglTexture!==void 0&&(n.deleteTexture(ce.__webglTexture),o.memory.textures--),w.depthTexture&&w.depthTexture.dispose(),w.isWebGLCubeRenderTarget)for(let $=0;$<6;$++){if(Array.isArray(G.__webglFramebuffer[$]))for(let ee=0;ee=l&&console.warn("THREE.WebGLTextures: Trying to use "+w+" texture units while this GPU supports only "+l),z+=1,w}function K(w){const A=[];return A.push(w.wrapS),A.push(w.wrapT),A.push(w.wrapR||0),A.push(w.magFilter),A.push(w.minFilter),A.push(w.anisotropy),A.push(w.internalFormat),A.push(w.format),A.push(w.type),A.push(w.generateMipmaps),A.push(w.premultiplyAlpha),A.push(w.flipY),A.push(w.unpackAlignment),A.push(w.colorSpace),A.join()}function q(w,A){const G=i.get(w);if(w.isVideoTexture&&ne(w),w.isRenderTargetTexture===!1&&w.version>0&&G.__version!==w.version){const ce=w.image;if(ce===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(ce.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Q(G,w,A);return}}t.bindTexture(n.TEXTURE_2D,G.__webglTexture,n.TEXTURE0+A)}function le(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){Q(G,w,A);return}t.bindTexture(n.TEXTURE_2D_ARRAY,G.__webglTexture,n.TEXTURE0+A)}function Z(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){Q(G,w,A);return}t.bindTexture(n.TEXTURE_3D,G.__webglTexture,n.TEXTURE0+A)}function J(w,A){const G=i.get(w);if(w.version>0&&G.__version!==w.version){fe(G,w,A);return}t.bindTexture(n.TEXTURE_CUBE_MAP,G.__webglTexture,n.TEXTURE0+A)}const _e={[Xo]:n.REPEAT,[Kn]:n.CLAMP_TO_EDGE,[vd]:n.MIRRORED_REPEAT},he={[an]:n.NEAREST,[Jm]:n.NEAREST_MIPMAP_NEAREST,[Qc]:n.NEAREST_MIPMAP_LINEAR,[Mn]:n.LINEAR,[qw]:n.LINEAR_MIPMAP_NEAREST,[ks]:n.LINEAR_MIPMAP_LINEAR},ye={[hgt]:n.NEVER,[Sgt]:n.ALWAYS,[fgt]:n.LESS,[eO]:n.LEQUAL,[mgt]:n.EQUAL,[bgt]:n.GEQUAL,[ggt]:n.GREATER,[Egt]:n.NOTEQUAL};function j(w,A,G){if(G?(n.texParameteri(w,n.TEXTURE_WRAP_S,_e[A.wrapS]),n.texParameteri(w,n.TEXTURE_WRAP_T,_e[A.wrapT]),(w===n.TEXTURE_3D||w===n.TEXTURE_2D_ARRAY)&&n.texParameteri(w,n.TEXTURE_WRAP_R,_e[A.wrapR]),n.texParameteri(w,n.TEXTURE_MAG_FILTER,he[A.magFilter]),n.texParameteri(w,n.TEXTURE_MIN_FILTER,he[A.minFilter])):(n.texParameteri(w,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(w,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(w===n.TEXTURE_3D||w===n.TEXTURE_2D_ARRAY)&&n.texParameteri(w,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(A.wrapS!==Kn||A.wrapT!==Kn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(w,n.TEXTURE_MAG_FILTER,R(A.magFilter)),n.texParameteri(w,n.TEXTURE_MIN_FILTER,R(A.minFilter)),A.minFilter!==an&&A.minFilter!==Mn&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),A.compareFunction&&(n.texParameteri(w,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(w,n.TEXTURE_COMPARE_FUNC,ye[A.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){const ce=e.get("EXT_texture_filter_anisotropic");if(A.magFilter===an||A.minFilter!==Qc&&A.minFilter!==ks||A.type===tr&&e.has("OES_texture_float_linear")===!1||a===!1&&A.type===vl&&e.has("OES_texture_half_float_linear")===!1)return;(A.anisotropy>1||i.get(A).__currentAnisotropy)&&(n.texParameterf(w,ce.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(A.anisotropy,r.getMaxAnisotropy())),i.get(A).__currentAnisotropy=A.anisotropy)}}function de(w,A){let G=!1;w.__webglInit===void 0&&(w.__webglInit=!0,A.addEventListener("dispose",P));const ce=A.source;let $=g.get(ce);$===void 0&&($={},g.set(ce,$));const ee=K(A);if(ee!==w.__cacheKey){$[ee]===void 0&&($[ee]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,G=!0),$[ee].usedTimes++;const ve=$[w.__cacheKey];ve!==void 0&&($[w.__cacheKey].usedTimes--,ve.usedTimes===0&&I(A)),w.__cacheKey=ee,w.__webglTexture=$[ee].texture}return G}function Q(w,A,G){let ce=n.TEXTURE_2D;(A.isDataArrayTexture||A.isCompressedArrayTexture)&&(ce=n.TEXTURE_2D_ARRAY),A.isData3DTexture&&(ce=n.TEXTURE_3D);const $=de(w,A),ee=A.source;t.bindTexture(ce,w.__webglTexture,n.TEXTURE0+G);const ve=i.get(ee);if(ee.version!==ve.__version||$===!0){t.activeTexture(n.TEXTURE0+G);const Ee=Nt.getPrimaries(Nt.workingColorSpace),Ie=A.colorSpace===Qn?null:Nt.getPrimaries(A.colorSpace),Be=A.colorSpace===Qn||Ee===Ie?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,A.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,A.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Be);const et=T(A)&&v(A.image)===!1;let Me=S(A.image,et,!1,d);Me=re(A,Me);const tt=v(Me)||a,We=s.convert(A.format,A.colorSpace);let Fe=s.convert(A.type),je=x(A.internalFormat,We,Fe,A.colorSpace,A.isVideoTexture);j(ce,A,tt);let qe;const lt=A.mipmaps,oe=a&&A.isVideoTexture!==!0&&je!==Xw,Ve=ve.__version===void 0||$===!0,De=y(A,Me,tt);if(A.isDepthTexture)je=n.DEPTH_COMPONENT,a?A.type===tr?je=n.DEPTH_COMPONENT32F:A.type===Ur?je=n.DEPTH_COMPONENT24:A.type===ws?je=n.DEPTH24_STENCIL8:je=n.DEPTH_COMPONENT16:A.type===tr&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),A.format===Os&&je===n.DEPTH_COMPONENT&&A.type!==PE&&A.type!==Ur&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),A.type=Ur,Fe=s.convert(A.type)),A.format===Zo&&je===n.DEPTH_COMPONENT&&(je=n.DEPTH_STENCIL,A.type!==ws&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),A.type=ws,Fe=s.convert(A.type))),Ve&&(oe?t.texStorage2D(n.TEXTURE_2D,1,je,Me.width,Me.height):t.texImage2D(n.TEXTURE_2D,0,je,Me.width,Me.height,0,We,Fe,null));else if(A.isDataTexture)if(lt.length>0&&tt){oe&&Ve&&t.texStorage2D(n.TEXTURE_2D,De,je,lt[0].width,lt[0].height);for(let Re=0,ke=lt.length;Re>=1,ke>>=1}}else if(lt.length>0&&tt){oe&&Ve&&t.texStorage2D(n.TEXTURE_2D,De,je,lt[0].width,lt[0].height);for(let Re=0,ke=lt.length;Re0&&Ve++,t.texStorage2D(n.TEXTURE_CUBE_MAP,Ve,qe,Me[0].width,Me[0].height));for(let Re=0;Re<6;Re++)if(et){lt?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,0,0,Me[Re].width,Me[Re].height,Fe,je,Me[Re].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,qe,Me[Re].width,Me[Re].height,0,Fe,je,Me[Re].data);for(let ke=0;ke>ee),Me=Math.max(1,A.height>>ee);$===n.TEXTURE_3D||$===n.TEXTURE_2D_ARRAY?t.texImage3D($,ee,Ie,et,Me,A.depth,0,ve,Ee,null):t.texImage2D($,ee,Ie,et,Me,0,ve,Ee,null)}t.bindFramebuffer(n.FRAMEBUFFER,w),ae(A)?_.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,ce,$,i.get(G).__webglTexture,0,B(A)):($===n.TEXTURE_2D||$>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&$<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,ce,$,i.get(G).__webglTexture,ee),t.bindFramebuffer(n.FRAMEBUFFER,null)}function O(w,A,G){if(n.bindRenderbuffer(n.RENDERBUFFER,w),A.depthBuffer&&!A.stencilBuffer){let ce=a===!0?n.DEPTH_COMPONENT24:n.DEPTH_COMPONENT16;if(G||ae(A)){const $=A.depthTexture;$&&$.isDepthTexture&&($.type===tr?ce=n.DEPTH_COMPONENT32F:$.type===Ur&&(ce=n.DEPTH_COMPONENT24));const ee=B(A);ae(A)?_.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,ee,ce,A.width,A.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,ee,ce,A.width,A.height)}else n.renderbufferStorage(n.RENDERBUFFER,ce,A.width,A.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,w)}else if(A.depthBuffer&&A.stencilBuffer){const ce=B(A);G&&ae(A)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,ce,n.DEPTH24_STENCIL8,A.width,A.height):ae(A)?_.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,ce,n.DEPTH24_STENCIL8,A.width,A.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,A.width,A.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,w)}else{const ce=A.isWebGLMultipleRenderTargets===!0?A.texture:[A.texture];for(let $=0;$0){G.__webglFramebuffer[Ee]=[];for(let Ie=0;Ie0){G.__webglFramebuffer=[];for(let Ee=0;Ee0&&ae(w)===!1){const Ee=ee?A:[A];G.__webglMultisampledFramebuffer=n.createFramebuffer(),G.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,G.__webglMultisampledFramebuffer);for(let Ie=0;Ie0)for(let Ie=0;Ie0)for(let Ie=0;Ie0&&ae(w)===!1){const A=w.isWebGLMultipleRenderTargets?w.texture:[w.texture],G=w.width,ce=w.height;let $=n.COLOR_BUFFER_BIT;const ee=[],ve=w.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ee=i.get(w),Ie=w.isWebGLMultipleRenderTargets===!0;if(Ie)for(let Be=0;Be0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&A.__useRenderToTexture!==!1}function ne(w){const A=o.render.frame;h.get(w)!==A&&(h.set(w,A),w.update())}function re(w,A){const G=w.colorSpace,ce=w.format,$=w.type;return w.isCompressedTexture===!0||w.isVideoTexture===!0||w.format===ng||G!==hn&&G!==Qn&&(Nt.getTransfer(G)===Gt?a===!1?e.has("EXT_sRGB")===!0&&ce===jn?(w.format=ng,w.minFilter=Mn,w.generateMipmaps=!1):A=nO.sRGBToLinear(A):(ce!==jn||$!==Yr)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",G)),A}this.allocateTextureUnit=Y,this.resetTextureUnits=D,this.setTexture2D=q,this.setTexture2DArray=le,this.setTexture3D=Z,this.setTextureCube=J,this.rebindTextures=se,this.setupRenderTarget=te,this.updateRenderTargetMipmap=be,this.updateMultisampleRenderTarget=xe,this.setupDepthRenderbuffer=H,this.setupFrameBufferTexture=we,this.useMultisampledRTT=ae}function Lvt(n,e,t){const i=t.isWebGL2;function r(s,o=Qn){let a;const l=Nt.getTransfer(o);if(s===Yr)return n.UNSIGNED_BYTE;if(s===$w)return n.UNSIGNED_SHORT_4_4_4_4;if(s===Ww)return n.UNSIGNED_SHORT_5_5_5_1;if(s===tgt)return n.BYTE;if(s===ngt)return n.SHORT;if(s===PE)return n.UNSIGNED_SHORT;if(s===Yw)return n.INT;if(s===Ur)return n.UNSIGNED_INT;if(s===tr)return n.FLOAT;if(s===vl)return i?n.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===igt)return n.ALPHA;if(s===jn)return n.RGBA;if(s===rgt)return n.LUMINANCE;if(s===sgt)return n.LUMINANCE_ALPHA;if(s===Os)return n.DEPTH_COMPONENT;if(s===Zo)return n.DEPTH_STENCIL;if(s===ng)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===ogt)return n.RED;if(s===Kw)return n.RED_INTEGER;if(s===agt)return n.RG;if(s===jw)return n.RG_INTEGER;if(s===Qw)return n.RGBA_INTEGER;if(s===wf||s===Of||s===Nf||s===Mf)if(l===Gt)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===wf)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===Of)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===Nf)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===Mf)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===wf)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===Of)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===Nf)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===Mf)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Ax||s===wx||s===Ox||s===Nx)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Ax)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===wx)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Ox)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Nx)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===Xw)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===Mx||s===Ix)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===Mx)return l===Gt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Ix)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Dx||s===Lx||s===kx||s===Px||s===Ux||s===Fx||s===Bx||s===Gx||s===zx||s===Vx||s===Hx||s===qx||s===Yx||s===$x)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Dx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Lx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===kx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Px)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Ux)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Fx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Bx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Gx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===zx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Vx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===Hx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===qx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===Yx)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===$x)return l===Gt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===If||s===Wx||s===Kx)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===If)return l===Gt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(s===Wx)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(s===Kx)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(s===lgt||s===jx||s===Qx||s===Xx)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(s===If)return a.COMPRESSED_RED_RGTC1_EXT;if(s===jx)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===Qx)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===Xx)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===ws?i?n.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):n[s]!==void 0?n[s]:null}return{convert:r}}class kvt extends Rn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Ts extends Yt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Pvt={type:"move"};class nm{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ts,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 Ts,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ue,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ue),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ts,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ue,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ue),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,o=null;const a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(const E of e.hand.values()){const g=t.getJointPose(E,i),m=this._getHandJoint(c,E);g!==null&&(m.matrix.fromArray(g.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,m.jointRadius=g.radius),m.visible=g!==null}const d=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],_=d.position.distanceTo(u.position),f=.02,h=.005;c.inputState.pinching&&_>f+h?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&_<=f-h&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.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));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Pvt)))}return a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Ts;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class Uvt extends fa{constructor(e,t){super();const i=this;let r=null,s=1,o=null,a="local-floor",l=1,c=null,d=null,u=null,_=null,f=null,h=null;const E=t.getContextAttributes();let g=null,m=null;const b=[],S=[],v=new vt;let T=null;const C=new Rn;C.layers.enable(1),C.viewport=new Pt;const N=new Rn;N.layers.enable(2),N.viewport=new Pt;const x=[C,N],y=new kvt;y.layers.enable(1),y.layers.enable(2);let R=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getTargetRaySpace()},this.getControllerGrip=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getGripSpace()},this.getHand=function(J){let _e=b[J];return _e===void 0&&(_e=new nm,b[J]=_e),_e.getHandSpace()};function k(J){const _e=S.indexOf(J.inputSource);if(_e===-1)return;const he=b[_e];he!==void 0&&(he.update(J.inputSource,J.frame,c||o),he.dispatchEvent({type:J.type,data:J.inputSource}))}function W(){r.removeEventListener("select",k),r.removeEventListener("selectstart",k),r.removeEventListener("selectend",k),r.removeEventListener("squeeze",k),r.removeEventListener("squeezestart",k),r.removeEventListener("squeezeend",k),r.removeEventListener("end",W),r.removeEventListener("inputsourceschange",I);for(let J=0;J=0&&(S[ye]=null,b[ye].disconnect(he))}for(let _e=0;_e=S.length){S.push(he),ye=de;break}else if(S[de]===null){S[de]=he,ye=de;break}if(ye===-1)break}const j=b[ye];j&&j.connect(he)}}const V=new ue,z=new ue;function D(J,_e,he){V.setFromMatrixPosition(_e.matrixWorld),z.setFromMatrixPosition(he.matrixWorld);const ye=V.distanceTo(z),j=_e.projectionMatrix.elements,de=he.projectionMatrix.elements,Q=j[14]/(j[10]-1),fe=j[14]/(j[10]+1),we=(j[9]+1)/j[5],O=(j[9]-1)/j[5],F=(j[8]-1)/j[0],H=(de[8]+1)/de[0],se=Q*F,te=Q*H,be=ye/(-F+H),xe=be*-F;_e.matrixWorld.decompose(J.position,J.quaternion,J.scale),J.translateX(xe),J.translateZ(be),J.matrixWorld.compose(J.position,J.quaternion,J.scale),J.matrixWorldInverse.copy(J.matrixWorld).invert();const B=Q+be,ae=fe+be,ne=se-xe,re=te+(ye-xe),w=we*fe/ae*B,A=O*fe/ae*B;J.projectionMatrix.makePerspective(ne,re,w,A,B,ae),J.projectionMatrixInverse.copy(J.projectionMatrix).invert()}function Y(J,_e){_e===null?J.matrixWorld.copy(J.matrix):J.matrixWorld.multiplyMatrices(_e.matrixWorld,J.matrix),J.matrixWorldInverse.copy(J.matrixWorld).invert()}this.updateCamera=function(J){if(r===null)return;y.near=N.near=C.near=J.near,y.far=N.far=C.far=J.far,(R!==y.near||P!==y.far)&&(r.updateRenderState({depthNear:y.near,depthFar:y.far}),R=y.near,P=y.far);const _e=J.parent,he=y.cameras;Y(y,_e);for(let ye=0;ye0&&(g.alphaTest.value=m.alphaTest);const b=e.get(m).envMap;if(b&&(g.envMap.value=b,g.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=m.reflectivity,g.ior.value=m.ior,g.refractionRatio.value=m.refractionRatio),m.lightMap){g.lightMap.value=m.lightMap;const S=n._useLegacyLights===!0?Math.PI:1;g.lightMapIntensity.value=m.lightMapIntensity*S,t(m.lightMap,g.lightMapTransform)}m.aoMap&&(g.aoMap.value=m.aoMap,g.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,g.aoMapTransform))}function o(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform))}function a(g,m){g.dashSize.value=m.dashSize,g.totalSize.value=m.dashSize+m.gapSize,g.scale.value=m.scale}function l(g,m,b,S){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.size.value=m.size*b,g.scale.value=S*.5,m.map&&(g.map.value=m.map,t(m.map,g.uvTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function c(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.rotation.value=m.rotation,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function d(g,m){g.specular.value.copy(m.specular),g.shininess.value=Math.max(m.shininess,1e-4)}function u(g,m){m.gradientMap&&(g.gradientMap.value=m.gradientMap)}function _(g,m){g.metalness.value=m.metalness,m.metalnessMap&&(g.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,g.metalnessMapTransform)),g.roughness.value=m.roughness,m.roughnessMap&&(g.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,g.roughnessMapTransform)),e.get(m).envMap&&(g.envMapIntensity.value=m.envMapIntensity)}function f(g,m,b){g.ior.value=m.ior,m.sheen>0&&(g.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),g.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(g.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,g.sheenColorMapTransform)),m.sheenRoughnessMap&&(g.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,g.sheenRoughnessMapTransform))),m.clearcoat>0&&(g.clearcoat.value=m.clearcoat,g.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(g.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,g.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(g.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===Ln&&g.clearcoatNormalScale.value.negate())),m.iridescence>0&&(g.iridescence.value=m.iridescence,g.iridescenceIOR.value=m.iridescenceIOR,g.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(g.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,g.iridescenceMapTransform)),m.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),m.transmission>0&&(g.transmission.value=m.transmission,g.transmissionSamplerMap.value=b.texture,g.transmissionSamplerSize.value.set(b.width,b.height),m.transmissionMap&&(g.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,g.transmissionMapTransform)),g.thickness.value=m.thickness,m.thicknessMap&&(g.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=m.attenuationDistance,g.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(g.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(g.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=m.specularIntensity,g.specularColor.value.copy(m.specularColor),m.specularColorMap&&(g.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,g.specularColorMapTransform)),m.specularIntensityMap&&(g.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,g.specularIntensityMapTransform))}function h(g,m){m.matcap&&(g.matcap.value=m.matcap)}function E(g,m){const b=e.get(m).light;g.referencePosition.value.setFromMatrixPosition(b.matrixWorld),g.nearDistance.value=b.shadow.camera.near,g.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function Bvt(n,e,t,i){let r={},s={},o=[];const a=t.isWebGL2?n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(b,S){const v=S.program;i.uniformBlockBinding(b,v)}function c(b,S){let v=r[b.id];v===void 0&&(h(b),v=d(b),r[b.id]=v,b.addEventListener("dispose",g));const T=S.program;i.updateUBOMapping(b,T);const C=e.render.frame;s[b.id]!==C&&(_(b),s[b.id]=C)}function d(b){const S=u();b.__bindingPointIndex=S;const v=n.createBuffer(),T=b.__size,C=b.usage;return n.bindBuffer(n.UNIFORM_BUFFER,v),n.bufferData(n.UNIFORM_BUFFER,T,C),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,S,v),v}function u(){for(let b=0;b0){C=v%T;const k=T-C;C!==0&&k-R.boundary<0&&(v+=T-C,y.__offset=v)}v+=R.storage}return C=v%T,C>0&&(v+=T-C),b.__size=v,b.__cache={},this}function E(b){const S={boundary:0,storage:0};return typeof b=="number"?(S.boundary=4,S.storage=4):b.isVector2?(S.boundary=8,S.storage=8):b.isVector3||b.isColor?(S.boundary=16,S.storage=12):b.isVector4?(S.boundary=16,S.storage=16):b.isMatrix3?(S.boundary=48,S.storage=48):b.isMatrix4?(S.boundary=64,S.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),S}function g(b){const S=b.target;S.removeEventListener("dispose",g);const v=o.indexOf(S.__bindingPointIndex);o.splice(v,1),n.deleteBuffer(r[S.id]),delete r[S.id],delete s[S.id]}function m(){for(const b in r)n.deleteBuffer(r[b]);o=[],r={},s={}}return{bind:l,update:c,dispose:m}}class bO{constructor(e={}){const{canvas:t=Pgt(),context:i=null,depth:r=!0,stencil:s=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:u=!1}=e;this.isWebGLRenderer=!0;let _;i!==null?_=i.getContextAttributes().alpha:_=o;const f=new Uint32Array(4),h=new Int32Array(4);let E=null,g=null;const m=[],b=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Kt,this._useLegacyLights=!1,this.toneMapping=qr,this.toneMappingExposure=1;const S=this;let v=!1,T=0,C=0,N=null,x=-1,y=null;const R=new Pt,P=new Pt;let k=null;const W=new ot(0);let I=0,V=t.width,z=t.height,D=1,Y=null,K=null;const q=new Pt(0,0,V,z),le=new Pt(0,0,V,z);let Z=!1;const J=new GE;let _e=!1,he=!1,ye=null;const j=new gt,de=new vt,Q=new ue,fe={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function we(){return N===null?D:1}let O=i;function F(U,pe){for(let Se=0;Se{function Ye(){if(Te.forEach(function(Qe){xe.get(Qe).currentProgram.isReady()&&Te.delete(Qe)}),Te.size===0){ge(U);return}setTimeout(Ye,10)}H.get("KHR_parallel_shader_compile")!==null?Ye():setTimeout(Ye,10)})};let _t=null;function Wt(U){_t&&_t(U)}function tn(){Ht.stop()}function Ot(){Ht.start()}const Ht=new _O;Ht.setAnimationLoop(Wt),typeof self<"u"&&Ht.setContext(self),this.setAnimationLoop=function(U){_t=U,qe.setAnimationLoop(U),U===null?Ht.stop():Ht.start()},qe.addEventListener("sessionstart",tn),qe.addEventListener("sessionend",Ot),this.render=function(U,pe){if(pe!==void 0&&pe.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(v===!0)return;U.matrixWorldAutoUpdate===!0&&U.updateMatrixWorld(),pe.parent===null&&pe.matrixWorldAutoUpdate===!0&&pe.updateMatrixWorld(),qe.enabled===!0&&qe.isPresenting===!0&&(qe.cameraAutoUpdate===!0&&qe.updateCamera(pe),pe=qe.getCamera()),U.isScene===!0&&U.onBeforeRender(S,U,pe,N),g=ee.get(U,b.length),g.init(),b.push(g),j.multiplyMatrices(pe.projectionMatrix,pe.matrixWorldInverse),J.setFromProjectionMatrix(j),he=this.localClippingEnabled,_e=ve.init(this.clippingPlanes,he),E=$.get(U,m.length),E.init(),m.push(E),On(U,pe,0,S.sortObjects),E.finish(),S.sortObjects===!0&&E.sort(Y,K),this.info.render.frame++,_e===!0&&ve.beginShadows();const Se=g.state.shadowsArray;if(Ee.render(Se,U,pe),_e===!0&&ve.endShadows(),this.info.autoReset===!0&&this.info.reset(),Ie.render(E,U),g.setupLights(S._useLegacyLights),pe.isArrayCamera){const Te=pe.cameras;for(let ge=0,Ye=Te.length;ge0?g=b[b.length-1]:g=null,m.pop(),m.length>0?E=m[m.length-1]:E=null};function On(U,pe,Se,Te){if(U.visible===!1)return;if(U.layers.test(pe.layers)){if(U.isGroup)Se=U.renderOrder;else if(U.isLOD)U.autoUpdate===!0&&U.update(pe);else if(U.isLight)g.pushLight(U),U.castShadow&&g.pushShadow(U);else if(U.isSprite){if(!U.frustumCulled||J.intersectsSprite(U)){Te&&Q.setFromMatrixPosition(U.matrixWorld).applyMatrix4(j);const Qe=A.update(U),nt=U.material;nt.visible&&E.push(U,Qe,nt,Se,Q.z,null)}}else if((U.isMesh||U.isLine||U.isPoints)&&(!U.frustumCulled||J.intersectsObject(U))){const Qe=A.update(U),nt=U.material;if(Te&&(U.boundingSphere!==void 0?(U.boundingSphere===null&&U.computeBoundingSphere(),Q.copy(U.boundingSphere.center)):(Qe.boundingSphere===null&&Qe.computeBoundingSphere(),Q.copy(Qe.boundingSphere.center)),Q.applyMatrix4(U.matrixWorld).applyMatrix4(j)),Array.isArray(nt)){const rt=Qe.groups;for(let ct=0,st=rt.length;ct0&&Sa(ge,Ye,pe,Se),Te&&te.viewport(R.copy(Te)),ge.length>0&&Gi(ge,pe,Se),Ye.length>0&&Gi(Ye,pe,Se),Qe.length>0&&Gi(Qe,pe,Se),te.buffers.depth.setTest(!0),te.buffers.depth.setMask(!0),te.buffers.color.setMask(!0),te.setPolygonOffset(!1)}function Sa(U,pe,Se,Te){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;const Ye=se.isWebGL2;ye===null&&(ye=new Ps(1,1,{generateMipmaps:!0,type:H.has("EXT_color_buffer_half_float")?vl:Yr,minFilter:ks,samples:Ye?4:0})),S.getDrawingBufferSize(de),Ye?ye.setSize(de.x,de.y):ye.setSize(Ad(de.x),Ad(de.y));const Qe=S.getRenderTarget();S.setRenderTarget(ye),S.getClearColor(W),I=S.getClearAlpha(),I<1&&S.setClearColor(16777215,.5),S.clear();const nt=S.toneMapping;S.toneMapping=qr,Gi(U,Se,Te),B.updateMultisampleRenderTarget(ye),B.updateRenderTargetMipmap(ye);let rt=!1;for(let ct=0,st=pe.length;ct0),at=!!Se.morphAttributes.position,Ft=!!Se.morphAttributes.normal,cn=!!Se.morphAttributes.color;let qt=qr;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(qt=S.toneMapping);const fn=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Bt=fn!==void 0?fn.length:0,pt=xe.get(Te),va=g.state.lights;if(_e===!0&&(he===!0||U!==y)){const Nn=U===y&&Te.id===x;ve.setState(Te,U,Nn)}let Vt=!1;Te.version===pt.__version?(pt.needsLights&&pt.lightsStateVersion!==va.state.version||pt.outputColorSpace!==nt||ge.isBatchedMesh&&pt.batching===!1||!ge.isBatchedMesh&&pt.batching===!0||ge.isInstancedMesh&&pt.instancing===!1||!ge.isInstancedMesh&&pt.instancing===!0||ge.isSkinnedMesh&&pt.skinning===!1||!ge.isSkinnedMesh&&pt.skinning===!0||ge.isInstancedMesh&&pt.instancingColor===!0&&ge.instanceColor===null||ge.isInstancedMesh&&pt.instancingColor===!1&&ge.instanceColor!==null||pt.envMap!==rt||Te.fog===!0&&pt.fog!==Ye||pt.numClippingPlanes!==void 0&&(pt.numClippingPlanes!==ve.numPlanes||pt.numIntersection!==ve.numIntersection)||pt.vertexAlphas!==ct||pt.vertexTangents!==st||pt.morphTargets!==at||pt.morphNormals!==Ft||pt.morphColors!==cn||pt.toneMapping!==qt||se.isWebGL2===!0&&pt.morphTargetsCount!==Bt)&&(Vt=!0):(Vt=!0,pt.__version=Te.version);let Vi=pt.currentProgram;Vt===!0&&(Vi=zi(Te,pe,ge));let Gl=!1,ts=!1,Ta=!1;const sn=Vi.getUniforms(),Hi=pt.uniforms;if(te.useProgram(Vi.program)&&(Gl=!0,ts=!0,Ta=!0),Te.id!==x&&(x=Te.id,ts=!0),Gl||y!==U){sn.setValue(O,"projectionMatrix",U.projectionMatrix),sn.setValue(O,"viewMatrix",U.matrixWorldInverse);const Nn=sn.map.cameraPosition;Nn!==void 0&&Nn.setValue(O,Q.setFromMatrixPosition(U.matrixWorld)),se.logarithmicDepthBuffer&&sn.setValue(O,"logDepthBufFC",2/(Math.log(U.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&sn.setValue(O,"isOrthographic",U.isOrthographicCamera===!0),y!==U&&(y=U,ts=!0,Ta=!0)}if(ge.isSkinnedMesh){sn.setOptional(O,ge,"bindMatrix"),sn.setOptional(O,ge,"bindMatrixInverse");const Nn=ge.skeleton;Nn&&(se.floatVertexTextures?(Nn.boneTexture===null&&Nn.computeBoneTexture(),sn.setValue(O,"boneTexture",Nn.boneTexture,B)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}ge.isBatchedMesh&&(sn.setOptional(O,ge,"batchingTexture"),sn.setValue(O,"batchingTexture",ge._matricesTexture,B));const xa=Se.morphAttributes;if((xa.position!==void 0||xa.normal!==void 0||xa.color!==void 0&&se.isWebGL2===!0)&&Be.update(ge,Se,Vi),(ts||pt.receiveShadow!==ge.receiveShadow)&&(pt.receiveShadow=ge.receiveShadow,sn.setValue(O,"receiveShadow",ge.receiveShadow)),Te.isMeshGouraudMaterial&&Te.envMap!==null&&(Hi.envMap.value=rt,Hi.flipEnvMap.value=rt.isCubeTexture&&rt.isRenderTargetTexture===!1?-1:1),ts&&(sn.setValue(O,"toneMappingExposure",S.toneMappingExposure),pt.needsLights&&es(Hi,Ta),Ye&&Te.fog===!0&&ce.refreshFogUniforms(Hi,Ye),ce.refreshMaterialUniforms(Hi,Te,D,z,ye),Xc.upload(O,Jr(pt),Hi,B)),Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(Xc.upload(O,Jr(pt),Hi,B),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&sn.setValue(O,"center",ge.center),sn.setValue(O,"modelViewMatrix",ge.modelViewMatrix),sn.setValue(O,"normalMatrix",ge.normalMatrix),sn.setValue(O,"modelMatrix",ge.matrixWorld),Te.isShaderMaterial||Te.isRawShaderMaterial){const Nn=Te.uniformsGroups;for(let Ca=0,pu=Nn.length;Ca0&&B.useMultisampledRTT(U)===!1?ge=xe.get(U).__webglMultisampledFramebuffer:Array.isArray(st)?ge=st[Se]:ge=st,R.copy(U.viewport),P.copy(U.scissor),k=U.scissorTest}else R.copy(q).multiplyScalar(D).floor(),P.copy(le).multiplyScalar(D).floor(),k=Z;if(te.bindFramebuffer(O.FRAMEBUFFER,ge)&&se.drawBuffers&&Te&&te.drawBuffers(U,ge),te.viewport(R),te.scissor(P),te.setScissorTest(k),Ye){const rt=xe.get(U.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_CUBE_MAP_POSITIVE_X+pe,rt.__webglTexture,Se)}else if(Qe){const rt=xe.get(U.texture),ct=pe||0;O.framebufferTextureLayer(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,rt.__webglTexture,Se||0,ct)}x=-1},this.readRenderTargetPixels=function(U,pe,Se,Te,ge,Ye,Qe){if(!(U&&U.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let nt=xe.get(U).__webglFramebuffer;if(U.isWebGLCubeRenderTarget&&Qe!==void 0&&(nt=nt[Qe]),nt){te.bindFramebuffer(O.FRAMEBUFFER,nt);try{const rt=U.texture,ct=rt.format,st=rt.type;if(ct!==jn&&tt.convert(ct)!==O.getParameter(O.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const at=st===vl&&(H.has("EXT_color_buffer_half_float")||se.isWebGL2&&H.has("EXT_color_buffer_float"));if(st!==Yr&&tt.convert(st)!==O.getParameter(O.IMPLEMENTATION_COLOR_READ_TYPE)&&!(st===tr&&(se.isWebGL2||H.has("OES_texture_float")||H.has("WEBGL_color_buffer_float")))&&!at){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}pe>=0&&pe<=U.width-Te&&Se>=0&&Se<=U.height-ge&&O.readPixels(pe,Se,Te,ge,tt.convert(ct),tt.convert(st),Ye)}finally{const rt=N!==null?xe.get(N).__webglFramebuffer:null;te.bindFramebuffer(O.FRAMEBUFFER,rt)}}},this.copyFramebufferToTexture=function(U,pe,Se=0){const Te=Math.pow(2,-Se),ge=Math.floor(pe.image.width*Te),Ye=Math.floor(pe.image.height*Te);B.setTexture2D(pe,0),O.copyTexSubImage2D(O.TEXTURE_2D,Se,0,0,U.x,U.y,ge,Ye),te.unbindTexture()},this.copyTextureToTexture=function(U,pe,Se,Te=0){const ge=pe.image.width,Ye=pe.image.height,Qe=tt.convert(Se.format),nt=tt.convert(Se.type);B.setTexture2D(Se,0),O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,Se.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Se.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,Se.unpackAlignment),pe.isDataTexture?O.texSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,ge,Ye,Qe,nt,pe.image.data):pe.isCompressedTexture?O.compressedTexSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,pe.mipmaps[0].width,pe.mipmaps[0].height,Qe,pe.mipmaps[0].data):O.texSubImage2D(O.TEXTURE_2D,Te,U.x,U.y,Qe,nt,pe.image),Te===0&&Se.generateMipmaps&&O.generateMipmap(O.TEXTURE_2D),te.unbindTexture()},this.copyTextureToTexture3D=function(U,pe,Se,Te,ge=0){if(S.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const Ye=U.max.x-U.min.x+1,Qe=U.max.y-U.min.y+1,nt=U.max.z-U.min.z+1,rt=tt.convert(Te.format),ct=tt.convert(Te.type);let st;if(Te.isData3DTexture)B.setTexture3D(Te,0),st=O.TEXTURE_3D;else if(Te.isDataArrayTexture)B.setTexture2DArray(Te,0),st=O.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,Te.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Te.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,Te.unpackAlignment);const at=O.getParameter(O.UNPACK_ROW_LENGTH),Ft=O.getParameter(O.UNPACK_IMAGE_HEIGHT),cn=O.getParameter(O.UNPACK_SKIP_PIXELS),qt=O.getParameter(O.UNPACK_SKIP_ROWS),fn=O.getParameter(O.UNPACK_SKIP_IMAGES),Bt=Se.isCompressedTexture?Se.mipmaps[0]:Se.image;O.pixelStorei(O.UNPACK_ROW_LENGTH,Bt.width),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Bt.height),O.pixelStorei(O.UNPACK_SKIP_PIXELS,U.min.x),O.pixelStorei(O.UNPACK_SKIP_ROWS,U.min.y),O.pixelStorei(O.UNPACK_SKIP_IMAGES,U.min.z),Se.isDataTexture||Se.isData3DTexture?O.texSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,ct,Bt.data):Se.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),O.compressedTexSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,Bt.data)):O.texSubImage3D(st,ge,pe.x,pe.y,pe.z,Ye,Qe,nt,rt,ct,Bt),O.pixelStorei(O.UNPACK_ROW_LENGTH,at),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Ft),O.pixelStorei(O.UNPACK_SKIP_PIXELS,cn),O.pixelStorei(O.UNPACK_SKIP_ROWS,qt),O.pixelStorei(O.UNPACK_SKIP_IMAGES,fn),ge===0&&Te.generateMipmaps&&O.generateMipmap(st),te.unbindTexture()},this.initTexture=function(U){U.isCubeTexture?B.setTextureCube(U,0):U.isData3DTexture?B.setTexture3D(U,0):U.isDataArrayTexture||U.isCompressedArrayTexture?B.setTexture2DArray(U,0):B.setTexture2D(U,0),te.unbindTexture()},this.resetState=function(){T=0,C=0,N=null,te.reset(),We.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return nr}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===FE?"display-p3":"srgb",t.unpackColorSpace=Nt.workingColorSpace===au?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Kt?Ns:Jw}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Ns?Kt:hn}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}}class Gvt extends bO{}Gvt.prototype.isWebGL1Renderer=!0;class zvt extends Yt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t}}class Vvt{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=tg,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=fi()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return console.warn('THREE.InterleavedBuffer: "updateRange" is deprecated and removed in r169. Use "addUpdateRange()" instead.'),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;rl)continue;_.applyMatrix4(this.matrixWorld);const x=e.ray.origin.distanceTo(_);xe.far||t.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:S,face:null,faceIndex:null,object:this})}}else{const m=Math.max(0,o.start),b=Math.min(g.count,o.start+o.count);for(let S=m,v=b-1;Sl)continue;_.applyMatrix4(this.matrixWorld);const C=e.ray.origin.distanceTo(_);Ce.far||t.push({distance:C,point:u.clone().applyMatrix4(this.matrixWorld),index:S,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;sr.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}class WE extends mi{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new ot(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 ot(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=UE,this.normalScale=new vt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class fr extends WE{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new vt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return En(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ot(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ot(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ot(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class iR extends mi{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ot(16777215),this.specular=new ot(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ot(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=UE,this.normalScale=new vt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=kE,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}function Pc(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function Zvt(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Jvt(n){function e(r,s){return n[r]-n[s]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function rR(n,e,t){const i=n.length,r=new n.constructor(i);for(let s=0,o=0;o!==i;++s){const a=t[s]*e;for(let l=0;l!==e;++l)r[o++]=n[a+l]}return r}function TO(n,e,t,i){let r=1,s=n[0];for(;s!==void 0&&s[i]===void 0;)s=n[r++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=n[r++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=n[r++];while(s!==void 0);else do o=s[i],o!==void 0&&(e.push(s.time),t.push(o)),s=n[r++];while(s!==void 0)}class Bl{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let o;n:{i:if(!(e=s)){const a=t[1];e=s)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);const a=this.getValueSize();this.times=i.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){const l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(r!==void 0&&Zvt(r))for(let a=0,l=r.length;a!==l;++a){const c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===Df,s=e.length-1;let o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Bi.prototype.TimeBufferType=Float32Array;Bi.prototype.ValueBufferType=Float32Array;Bi.prototype.DefaultInterpolation=Jo;class ga extends Bi{}ga.prototype.ValueTypeName="bool";ga.prototype.ValueBufferType=Array;ga.prototype.DefaultInterpolation=Tl;ga.prototype.InterpolantFactoryMethodLinear=void 0;ga.prototype.InterpolantFactoryMethodSmooth=void 0;class xO extends Bi{}xO.prototype.ValueTypeName="color";class na extends Bi{}na.prototype.ValueTypeName="number";class iTt extends Bl{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(r-t);let c=e*a;for(let d=c+a;c!==d;c+=4)Xr.slerpFlat(s,0,o,c-a,o,c,l);return s}}class Fs extends Bi{InterpolantFactoryMethodLinear(e){return new iTt(this.times,this.values,this.getValueSize(),e)}}Fs.prototype.ValueTypeName="quaternion";Fs.prototype.DefaultInterpolation=Jo;Fs.prototype.InterpolantFactoryMethodSmooth=void 0;class Ea extends Bi{}Ea.prototype.ValueTypeName="string";Ea.prototype.ValueBufferType=Array;Ea.prototype.DefaultInterpolation=Tl;Ea.prototype.InterpolantFactoryMethodLinear=void 0;Ea.prototype.InterpolantFactoryMethodSmooth=void 0;class ia extends Bi{}ia.prototype.ValueTypeName="vector";class rTt{constructor(e,t=-1,i,r=cgt){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=fi(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(oTt(i[o]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=i.length;s!==o;++s)t.push(Bi.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const s=t.length,o=[];for(let a=0;a1){const u=d[1];let _=r[u];_||(r[u]=_=[]),_.push(c)}}const o=[];for(const a in r)o.push(this.CreateFromMorphTargetSequence(a,r[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(u,_,f,h,E){if(f.length!==0){const g=[],m=[];TO(f,g,m,h),g.length!==0&&E.push(new u(_,g,m))}},r=[],s=e.name||"default",o=e.fps||30,a=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let u=0;u{t&&t(s),this.manager.itemEnd(e)},0),s;if(Qi[e]!==void 0){Qi[e].push({onLoad:t,onProgress:i,onError:r});return}Qi[e]=[],Qi[e].push({onLoad:t,onProgress:i,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const d=Qi[e],u=c.body.getReader(),_=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),f=_?parseInt(_):0,h=f!==0;let E=0;const g=new ReadableStream({start(m){b();function b(){u.read().then(({done:S,value:v})=>{if(S)m.close();else{E+=v.byteLength;const T=new ProgressEvent("progress",{lengthComputable:h,loaded:E,total:f});for(let C=0,N=d.length;C{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(d=>new DOMParser().parseFromString(d,a));case"json":return c.json();default:if(a===void 0)return c.text();{const u=/charset="?([^;"\s]*)"?/i.exec(a),_=u&&u[1]?u[1].toLowerCase():void 0,f=new TextDecoder(_);return c.arrayBuffer().then(h=>f.decode(h))}}}).then(c=>{ra.add(e,c);const d=Qi[e];delete Qi[e];for(let u=0,_=d.length;u<_;u++){const f=d[u];f.onLoad&&f.onLoad(c)}}).catch(c=>{const d=Qi[e];if(d===void 0)throw this.manager.itemError(e),c;delete Qi[e];for(let u=0,_=d.length;u<_;u++){const f=d[u];f.onError&&f.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class dTt extends ba{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=ra.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const a=xl("img");function l(){d(),ra.add(e,this),t&&t(this),s.manager.itemEnd(e)}function c(u){d(),r&&r(u),s.manager.itemError(e),s.manager.itemEnd(e)}function d(){a.removeEventListener("load",l,!1),a.removeEventListener("error",c,!1)}return a.addEventListener("load",l,!1),a.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(a.crossOrigin=this.crossOrigin),s.manager.itemStart(e),a.src=e,a}}class RO extends ba{constructor(e){super(e)}load(e,t,i,r){const s=new pn,o=new dTt(this.manager);return o.setCrossOrigin(this.crossOrigin),o.setPath(this.path),o.load(e,function(a){s.image=a,s.needsUpdate=!0,t!==void 0&&t(s)},i,r),s}}class uu extends Yt{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ot(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}}const om=new gt,sR=new ue,oR=new ue;class KE{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new vt(512,512),this.map=null,this.mapPass=null,this.matrix=new gt,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new GE,this._frameExtents=new vt(1,1),this._viewportCount=1,this._viewports=[new Pt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,i=this.matrix;sR.setFromMatrixPosition(e.matrixWorld),t.position.copy(sR),oR.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(oR),t.updateMatrixWorld(),om.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(om),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(om)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class uTt extends KE{constructor(){super(new Rn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const t=this.camera,i=ea*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(i!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=i,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class _Tt extends uu{constructor(e,t,i=0,r=Math.PI/3,s=0,o=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(Yt.DEFAULT_UP),this.updateMatrix(),this.target=new Yt,this.distance=i,this.angle=r,this.penumbra=s,this.decay=o,this.map=null,this.shadow=new uTt}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const aR=new gt,Ga=new ue,am=new ue;class pTt extends KE{constructor(){super(new Rn(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new vt(4,2),this._viewportCount=6,this._viewports=[new Pt(2,1,1,1),new Pt(0,1,1,1),new Pt(3,1,1,1),new Pt(1,1,1,1),new Pt(3,0,1,1),new Pt(1,0,1,1)],this._cubeDirections=[new ue(1,0,0),new ue(-1,0,0),new ue(0,0,1),new ue(0,0,-1),new ue(0,1,0),new ue(0,-1,0)],this._cubeUps=[new ue(0,1,0),new ue(0,1,0),new ue(0,1,0),new ue(0,1,0),new ue(0,0,1),new ue(0,0,-1)]}updateMatrices(e,t=0){const i=this.camera,r=this.matrix,s=e.distance||i.far;s!==i.far&&(i.far=s,i.updateProjectionMatrix()),Ga.setFromMatrixPosition(e.matrixWorld),i.position.copy(Ga),am.copy(i.position),am.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(am),i.updateMatrixWorld(),r.makeTranslation(-Ga.x,-Ga.y,-Ga.z),aR.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(aR)}}class hTt extends uu{constructor(e,t,i=0,r=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=r,this.shadow=new pTt}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class fTt extends KE{constructor(){super(new VE(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class AO extends uu{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Yt.DEFAULT_UP),this.updateMatrix(),this.target=new Yt,this.shadow=new fTt}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class mTt extends uu{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class rl{static decodeText(e){if(typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,r=e.length;i"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=ra.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(l){ra.add(e,l),t&&t(l),s.manager.itemEnd(e)}).catch(function(l){r&&r(l),s.manager.itemError(e),s.manager.itemEnd(e)}),s.manager.itemStart(e)}}const jE="\\[\\]\\.:\\/",ETt=new RegExp("["+jE+"]","g"),QE="[^"+jE+"]",bTt="[^"+jE.replace("\\.","")+"]",STt=/((?:WC+[\/:])*)/.source.replace("WC",QE),yTt=/(WCOD+)?/.source.replace("WCOD",bTt),vTt=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",QE),TTt=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",QE),xTt=new RegExp("^"+STt+yTt+vTt+TTt+"$"),CTt=["material","materials","bones","map"];class RTt{constructor(e,t,i){const r=i||Dt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class Dt{constructor(e,t,i){this.path=t,this.parsedPath=i||Dt.parseTrackName(t),this.node=Dt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Dt.Composite(e,t,i):new Dt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(ETt,"")}static parseTrackName(e){const t=xTt.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=i.nodeName.substring(r+1);CTt.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(s){for(let o=0;o=2.0 are supported."));return}const c=new s0t(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d=0&&a[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}}function wTt(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const yt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class OTt{constructor(e){this.parser=e,this.name=yt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,o)}}class VTt{constructor(e){this.parser=e,this.name=yt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let l=i.textureLoader;if(a.uri){const c=i.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return i.loadTextureImage(e,o.source,l);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class HTt{constructor(e){this.parser=e,this.name=yt.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let l=i.textureLoader;if(a.uri){const c=i.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return i.loadTextureImage(e,o.source,l);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class qTt{constructor(e){this.name=yt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const l=r.byteOffset||0,c=r.byteLength||0,d=r.count,u=r.byteStride,_=new Uint8Array(a,l,c);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(d,u,_,r.mode,r.filter).then(function(f){return f.buffer}):o.ready.then(function(){const f=new ArrayBuffer(d*u);return o.decodeGltfBuffer(new Uint8Array(f),d,u,_,r.mode,r.filter),f})})}else return null}}class YTt{constructor(e){this.name=yt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const c of r.primitives)if(c.mode!==Yn.TRIANGLES&&c.mode!==Yn.TRIANGLE_STRIP&&c.mode!==Yn.TRIANGLE_FAN&&c.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],l={};for(const c in o)a.push(this.parser.getDependency("accessor",o[c]).then(d=>(l[c]=d,l[c])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(c=>{const d=c.pop(),u=d.isGroup?d.children:[d],_=c[0].count,f=[];for(const h of u){const E=new gt,g=new ue,m=new Xr,b=new ue(1,1,1),S=new Kvt(h.geometry,h.material,_);for(let v=0;v<_;v++)l.TRANSLATION&&g.fromBufferAttribute(l.TRANSLATION,v),l.ROTATION&&m.fromBufferAttribute(l.ROTATION,v),l.SCALE&&b.fromBufferAttribute(l.SCALE,v),S.setMatrixAt(v,E.compose(g,m,b));for(const v in l)if(v==="_COLOR_0"){const T=l[v];S.instanceColor=new sg(T.array,T.itemSize,T.normalized)}else v!=="TRANSLATION"&&v!=="ROTATION"&&v!=="SCALE"&&h.geometry.setAttribute(v,l[v]);Yt.prototype.copy.call(S,h),this.parser.assignFinalMaterial(S),f.push(S)}return d.isGroup?(d.clear(),d.add(...f),d):f[0]}))}}const wO="glTF",za=12,cR={JSON:1313821514,BIN:5130562};class $Tt{constructor(e){this.name=yt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,za),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==wO)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-za,s=new DataView(e,za);let o=0;for(;o0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const r0t=new gt;class s0t{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new wTt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,s=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,r=navigator.userAgent.indexOf("Firefox")>-1,s=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||r&&s<98?this.textureLoader=new RO(this.options.manager):this.textureLoader=new gTt(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new CO(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};return ds(s,a,r),Lr(a,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{const l=this.associations.get(o);l!=null&&this.associations.set(a,l);for(const[c,d]of o.children.entries())s(d,a.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&g.setY(y,C[N*l+1]),l>=3&&g.setZ(y,C[N*l+2]),l>=4&&g.setW(y,C[N*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return g})}loadTexture(e){const t=this.json,i=this.options,s=t.textures[e].source,o=t.images[s];let a=this.textureLoader;if(o.uri){const l=i.manager.getHandler(o.uri);l!==null&&(a=l)}return this.loadTextureImage(e,s,a)}loadTextureImage(e,t,i){const r=this,s=this.json,o=s.textures[e],a=s.images[t],l=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];const c=this.loadImageSource(t,i).then(function(d){d.flipY=!1,d.name=o.name||a.name||"",d.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(d.name=a.uri);const _=(s.samplers||{})[o.sampler]||{};return d.magFilter=dR[_.magFilter]||Mn,d.minFilter=dR[_.minFilter]||ks,d.wrapS=uR[_.wrapS]||Xo,d.wrapT=uR[_.wrapT]||Xo,r.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){const i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const o=r.images[e],a=self.URL||self.webkitURL;let l=o.uri||"",c=!1;if(o.bufferView!==void 0)l=i.getDependency("bufferView",o.bufferView).then(function(u){c=!0;const _=new Blob([u],{type:o.mimeType});return l=a.createObjectURL(_),l});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(l).then(function(u){return new Promise(function(_,f){let h=_;t.isImageBitmapLoader===!0&&(h=function(E){const g=new pn(E);g.needsUpdate=!0,_(g)}),t.load(rl.resolveURL(u,s.path),h,void 0,f)})}).then(function(u){return c===!0&&a.revokeObjectURL(l),u.userData.mimeType=o.mimeType||i0t(o.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),u});return this.sourceCache[e]=d,d}assignTexture(e,t,i,r){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[yt.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[yt.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const l=s.associations.get(o);o=s.extensions[yt.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,l)}}return r!==void 0&&(o.colorSpace=r),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let l=this.cache.get(a);l||(l=new vO,mi.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(a,l)),i=l}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let l=this.cache.get(a);l||(l=new yO,mi.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(a,l)),i=l}if(r||s||o){let a="ClonedMaterial:"+i.uuid+":";r&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let l=this.cache.get(a);l||(l=i.clone(),s&&(l.vertexColors=!0),o&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(a,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return WE}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const a={},l=s.extensions||{},c=[];if(l[yt.KHR_MATERIALS_UNLIT]){const u=r[yt.KHR_MATERIALS_UNLIT];o=u.getMaterialType(),c.push(u.extendParams(a,s,t))}else{const u=s.pbrMetallicRoughness||{};if(a.color=new ot(1,1,1),a.opacity=1,Array.isArray(u.baseColorFactor)){const _=u.baseColorFactor;a.color.setRGB(_[0],_[1],_[2],hn),a.opacity=_[3]}u.baseColorTexture!==void 0&&c.push(t.assignTexture(a,"map",u.baseColorTexture,Kt)),a.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,a.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(a,"metalnessMap",u.metallicRoughnessTexture)),c.push(t.assignTexture(a,"roughnessMap",u.metallicRoughnessTexture))),o=this._invokeOne(function(_){return _.getMaterialType&&_.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(_){return _.extendMaterialParams&&_.extendMaterialParams(e,a)})))}s.doubleSided===!0&&(a.side=xi);const d=s.alphaMode||cm.OPAQUE;if(d===cm.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,d===cm.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==Fr&&(c.push(t.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new vt(1,1),s.normalTexture.scale!==void 0)){const u=s.normalTexture.scale;a.normalScale.set(u,u)}if(s.occlusionTexture!==void 0&&o!==Fr&&(c.push(t.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==Fr){const u=s.emissiveFactor;a.emissive=new ot().setRGB(u[0],u[1],u[2],hn)}return s.emissiveTexture!==void 0&&o!==Fr&&c.push(t.assignTexture(a,"emissiveMap",s.emissiveTexture,Kt)),Promise.all(c).then(function(){const u=new o(a);return s.name&&(u.name=s.name),Lr(u,s),t.associations.set(u,{materials:e}),s.extensions&&ds(r,u,s),u})}createUniqueName(e){const t=Dt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(a){return i[yt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(l){return _R(l,a,t)})}const o=[];for(let a=0,l=e.length;a0&&t0t(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),Lr(m,s),g.extensions&&ds(r,m,g),t.assignFinalMaterial(m),u.push(m)}for(let f=0,h=u.length;f1?d=new Ts:c.length===1?d=c[0]:d=new Yt,d!==c[0])for(let u=0,_=c.length;u<_;u++)d.add(c[u]);if(s.name&&(d.userData.name=s.name,d.name=o),Lr(d,s),s.extensions&&ds(i,d,s),s.matrix!==void 0){const u=new gt;u.fromArray(s.matrix),d.applyMatrix4(u)}else s.translation!==void 0&&d.position.fromArray(s.translation),s.rotation!==void 0&&d.quaternion.fromArray(s.rotation),s.scale!==void 0&&d.scale.fromArray(s.scale);return r.associations.has(d)||r.associations.set(d,{}),r.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,i=this.json.scenes[e],r=this,s=new Ts;i.name&&(s.name=r.createUniqueName(i.name)),Lr(s,i),i.extensions&&ds(t,s,i);const o=i.nodes||[],a=[];for(let l=0,c=o.length;l{const u=new Map;for(const[_,f]of r.associations)(_ instanceof mi||_ instanceof pn)&&u.set(_,f);return d.traverse(_=>{const f=r.associations.get(_);f!=null&&u.set(_,f)}),u};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){const o=[],a=e.name?e.name:e.uuid,l=[];Cr[s.path]===Cr.weights?e.traverse(function(_){_.morphTargetInfluences&&l.push(_.name?_.name:_.uuid)}):l.push(a);let c;switch(Cr[s.path]){case Cr.weights:c=na;break;case Cr.rotation:c=Fs;break;case Cr.position:case Cr.scale:c=ia;break;default:switch(i.itemSize){case 1:c=na;break;case 2:case 3:default:c=ia;break}break}const d=r.interpolation!==void 0?ZTt[r.interpolation]:Jo,u=this._getArrayFromAccessor(i);for(let _=0,f=l.length;_{Ge.replace()})},stopVideoStream(){this.isVideoActive=!1,this.imageData=null,He.emit("stop_webcam_video_stream"),Ue(()=>{Ge.replace()})},startDrag(n){this.isDragging=!0,this.zIndex=5001,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY,document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.stopDrag)},drag(n){if(this.isDragging){const e=n.clientX-this.dragStart.x,t=n.clientY-this.dragStart.y;this.position.bottom-=t,this.position.right-=e,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY}},stopDrag(){this.isDragging=!1,this.zIndex=0,document.removeEventListener("mousemove",this.drag),document.removeEventListener("mouseup",this.stopDrag)}},mounted(){Ge.replace(),He.on("video_stream_image",n=>{if(this.isVideoActive){this.imageDataUrl="data:image/jpeg;base64,"+n,this.frameCount++;const e=Date.now();e-this.lastFrameTime>=1e3&&(this.frameRate=this.frameCount,this.frameCount=0,this.lastFrameTime=e)}})}},l0t=["src"],c0t=["src"],d0t={class:"controls"},u0t=p("i",{"data-feather":"video"},null,-1),_0t=[u0t],p0t=p("i",{"data-feather":"video"},null,-1),h0t=[p0t],f0t={key:2};function m0t(n,e,t,i,r,s){return M(),L("div",{class:"floating-frame bg-white",style:un({bottom:r.position.bottom+"px",right:r.position.right+"px","z-index":r.zIndex}),onMousedown:e[4]||(e[4]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[5]||(e[5]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},[p("div",{class:"handle",onMousedown:e[0]||(e[0]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[1]||(e[1]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},"Drag Me",32),r.isVideoActive&&r.imageDataUrl!=null?(M(),L("img",{key:0,src:r.imageDataUrl,alt:"Webcam Frame",width:"300",height:"300"},null,8,l0t)):X("",!0),r.isVideoActive&&r.imageDataUrl==null?(M(),L("p",{key:1,src:r.imageDataUrl,alt:"Webcam Frame",width:"300",height:"300"},"Loading. Please wait...",8,c0t)):X("",!0),p("div",d0t,[r.isVideoActive?X("",!0):(M(),L("button",{key:0,class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded",onClick:e[2]||(e[2]=(...o)=>s.startVideoStream&&s.startVideoStream(...o))},_0t)),r.isVideoActive?(M(),L("button",{key:1,class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",onClick:e[3]||(e[3]=(...o)=>s.stopVideoStream&&s.stopVideoStream(...o))},h0t)):X("",!0),r.isVideoActive?(M(),L("span",f0t,"FPS: "+me(r.frameRate),1)):X("",!0)])],36)}const g0t=ft(a0t,[["render",m0t]]);const E0t={data(){return{isAudioActive:!1,imageDataUrl:null,isDragging:!1,position:{bottom:0,right:0},dragStart:{x:0,y:0},zIndex:0,frameRate:0,frameCount:0,lastFrameTime:Date.now()}},methods:{startAudioStream(){this.isAudioActive=!0,He.emit("start_audio_stream"),Ue(()=>{Ge.replace()})},stopAudioStream(){this.isAudioActive=!1,this.imageDataUrl=null,He.emit("stop_audio_stream"),Ue(()=>{Ge.replace()})},startDrag(n){this.isDragging=!0,this.zIndex=5001,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY,document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.stopDrag)},drag(n){if(this.isDragging){const e=n.clientX-this.dragStart.x,t=n.clientY-this.dragStart.y;this.position.bottom-=t,this.position.right-=e,this.dragStart.x=n.clientX,this.dragStart.y=n.clientY}},stopDrag(){this.isDragging=!1,this.zIndex=0,document.removeEventListener("mousemove",this.drag),document.removeEventListener("mouseup",this.stopDrag)}},mounted(){Ge.replace(),He.on("update_spectrogram",n=>{if(this.isAudioActive){this.imageDataUrl="data:image/jpeg;base64,"+n,this.frameCount++;const e=Date.now();e-this.lastFrameTime>=1e3&&(this.frameRate=this.frameCount,this.frameCount=0,this.lastFrameTime=e)}})}},b0t=["src"],S0t={class:"controls"},y0t=p("i",{"data-feather":"mic"},null,-1),v0t=[y0t],T0t=p("i",{"data-feather":"mic"},null,-1),x0t=[T0t],C0t={key:2};function R0t(n,e,t,i,r,s){return M(),L("div",{class:"floating-frame bg-white",style:un({bottom:r.position.bottom+"px",right:r.position.right+"px","z-index":r.zIndex}),onMousedown:e[4]||(e[4]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[5]||(e[5]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},[p("div",{class:"handle",onMousedown:e[0]||(e[0]=Oe((...o)=>s.startDrag&&s.startDrag(...o),["stop"])),onMouseup:e[1]||(e[1]=Oe((...o)=>s.stopDrag&&s.stopDrag(...o),["stop"]))},"Drag Me",32),r.isAudioActive&&r.imageDataUrl!=null?(M(),L("img",{key:0,src:r.imageDataUrl,alt:"Spectrogram",width:"300",height:"300"},null,8,b0t)):X("",!0),p("div",S0t,[r.isAudioActive?X("",!0):(M(),L("button",{key:0,class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded",onClick:e[2]||(e[2]=(...o)=>s.startAudioStream&&s.startAudioStream(...o))},v0t)),r.isAudioActive?(M(),L("button",{key:1,class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",onClick:e[3]||(e[3]=(...o)=>s.stopAudioStream&&s.stopAudioStream(...o))},x0t)):X("",!0),r.isAudioActive?(M(),L("span",C0t,"FPS: "+me(r.frameRate),1)):X("",!0)])],36)}const A0t=ft(E0t,[["render",R0t]]);const w0t={data(){return{activePersonality:null}},props:{personality:{type:Object,default:()=>({})}},components:{VideoFrame:g0t,AudioFrame:A0t},computed:{isReady:{get(){return this.$store.state.ready}}},watch:{"$store.state.mountedPersArr":"updatePersonality","$store.state.config.active_personality_id":"updatePersonality"},async mounted(){for(;this.isReady===!1;)await new Promise(n=>setTimeout(n,100));console.log("Personality:",this.personality),this.initWebGLScene(),this.updatePersonality(),Ue(()=>{Ge.replace()}),this.$refs.video_frame.position={bottom:0,right:0},this.$refs.audio_frame.position={bottom:0,right:100}},beforeDestroy(){},methods:{initWebGLScene(){this.scene=new zvt,this.camera=new Rn(75,window.innerWidth/window.innerHeight,.1,1e3),this.renderer=new bO,this.renderer.setSize(window.innerWidth,window.innerHeight),this.$refs.webglContainer.appendChild(this.renderer.domElement);const n=new $r,e=new iR({color:65280});this.cube=new An(n,e),this.scene.add(this.cube);const t=new mTt(4210752),i=new AO(16777215,.5);i.position.set(0,1,0),this.scene.add(t),this.scene.add(i),this.camera.position.z=5,this.animate()},updatePersonality(){const{mountedPersArr:n,config:e}=this.$store.state;this.activePersonality=n[e.active_personality_id],this.activePersonality.avatar?this.showBoxWithAvatar(this.activePersonality.avatar):this.showDefaultCube(),this.$emit("update:personality",this.activePersonality)},loadScene(n){new ATt().load(n,t=>{this.scene.remove(this.cube),this.cube=t.scene,this.scene.add(this.cube)})},showBoxWithAvatar(n){this.cube&&this.scene.remove(this.cube);const e=new $r,t=new RO().load(n),i=new Fr({map:t});this.cube=new An(e,i),this.scene.add(this.cube)},showDefaultCube(){this.scene.remove(this.cube);const n=new $r,e=new iR({color:65280});this.cube=new An(n,e),this.scene.add(this.cube)},animate(){requestAnimationFrame(this.animate),this.cube&&(this.cube.rotation.x+=.01,this.cube.rotation.y+=.01),this.renderer.render(this.scene,this.camera)}}},O0t={ref:"webglContainer"},N0t={class:"flex-col y-overflow scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary"},M0t={key:0,class:"text-center"},I0t={key:1,class:"text-center"},D0t={class:"floating-frame2"},L0t=["innerHTML"];function k0t(n,e,t,i,r,s){const o=St("VideoFrame"),a=St("AudioFrame");return M(),L(Xe,null,[p("div",O0t,null,512),p("div",N0t,[!r.activePersonality||!r.activePersonality.scene_path?(M(),L("div",M0t," Personality does not have a 3d avatar. ")):X("",!0),!r.activePersonality||!r.activePersonality.avatar||r.activePersonality.avatar===""?(M(),L("div",I0t," Personality does not have an avatar. ")):X("",!0),p("div",D0t,[p("div",{innerHTML:n.htmlContent},null,8,L0t)])]),Le(o,{ref:"video_frame"},null,512),Le(a,{ref:"audio_frame"},null,512)],64)}const P0t=ft(w0t,[["render",k0t]]),U0t=oL({history:x2("/"),routes:[{path:"/playground/",name:"playground",component:GQe},{path:"/extensions/",name:"extensions",component:XQe},{path:"/help/",name:"help",component:gXe},{path:"/settings/",name:"settings",component:Xlt},{path:"/training/",name:"training",component:Ect},{path:"/quantizing/",name:"quantizing",component:Act},{path:"/",name:"discussions",component:Smt},{path:"/",name:"interactive",component:P0t}]});const _u=mI(DU);console.log("Loaded main.js");function pR(n){const e={};for(const t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}const F0t=HI({state(){return{yesNoDialog:null,universalForm:null,toast:null,messageBox:null,api_get_req:null,startSpeechRecognition:null,ready:!1,loading_infos:"",loading_progress:0,version:"unknown",settingsChanged:!1,isConnected:!1,isModelOk:!1,isGenerating:!1,config:null,mountedPers:null,mountedPersArr:[],mountedExtensions:[],bindingsZoo:[],modelsArr:[],selectedModel:null,personalities:[],diskUsage:null,ramUsage:null,vramUsage:null,modelsZoo:[],installedModels:[],currentModel:null,extensionsZoo:[],databases:[]}},mutations:{setIsReady(n,e){n.ready=e},setIsConnected(n,e){n.isConnected=e},setIsModelOk(n,e){n.isModelOk=e},setIsGenerating(n,e){n.isGenerating=e},setConfig(n,e){n.config=e},setPersonalities(n,e){n.personalities=e},setMountedPers(n,e){n.mountedPers=e},setMountedPersArr(n,e){n.mountedPersArr=e},setMountedExtensions(n,e){n.mountedExtensions=e},setbindingsZoo(n,e){n.bindingsZoo=e},setModelsArr(n,e){n.modelsArr=e},setselectedModel(n,e){n.selectedModel=e},setDiskUsage(n,e){n.diskUsage=e},setRamUsage(n,e){n.ramUsage=e},setVramUsage(n,e){n.vramUsage=e},setModelsZoo(n,e){n.modelsZoo=e},setCurrentModel(n,e){n.currentModel=e},setExtensionsZoo(n,e){n.extensionsZoo=e},setDatabases(n,e){n.databases=e}},getters:{getIsConnected(n){return n.isConnected},getIsModelOk(n){return n.isModelOk},getIsGenerating(n){return n.isGenerating},getConfig(n){return n.config},getPersonalities(n){return n.personalities},getMountedPersArr(n){return n.mountedPersArr},getmmountedExtensions(n){return n.mountedExtensions},getMountedPers(n){return n.mountedPers},getbindingsZoo(n){return n.bindingsZoo},getModelsArr(n){return n.modelsArr},getDiskUsage(n){return n.diskUsage},getRamUsage(n){return n.ramUsage},getVramUsage(n){return n.vramUsage},getDatabasesList(n){return n.databases},getModelsZoo(n){return n.modelsZoo},getCurrentModel(n){return n.currentModel},getExtensionsZoo(n){return n.extensionsZoo}},actions:{async getVersion(){try{let n=await Pe.get("/get_lollms_webui_version",{});n&&(this.state.version=n.data.version)}catch{console.log("Coudln't get version")}},async refreshConfig({commit:n}){console.log("Fetching configuration");try{const e=await Hn("get_config");e.active_personality_id<0&&(e.active_personality_id=0);let t=e.personalities[e.active_personality_id].split("/");e.personality_category=t[0],e.personality_folder=t[1],e.extensions.length>0?e.extension_category=e.extensions[-1]:e.extension_category="ai_sensors",console.log("Recovered config"),console.log(e),console.log("Committing config"),console.log(e),console.log(this.state.config),n("setConfig",e)}catch(e){console.log(e.message,"refreshConfig")}},async refreshDatabase({commit:n}){let e=await Hn("list_databases");console.log("databases:",e),n("setDatabases",e)},async refreshPersonalitiesZoo({commit:n}){let e=[];const t=await Hn("get_all_personalities"),i=Object.keys(t);console.log("Personalities recovered:"+this.state.config.personalities);for(let r=0;r{let c=!1;for(const u of this.state.config.personalities)if(u.includes(s+"/"+l.folder))if(c=!0,u.includes(":")){const _=u.split(":");l.language=_[1]}else l.language=null;let d={};return d=l,d.category=s,d.full_path=s+"/"+l.folder,d.isMounted=c,d});e.length==0?e=a:e=e.concat(a)}e.sort((r,s)=>r.name.localeCompare(s.name)),n("setPersonalities",e),console.log("Done loading personalities")},refreshMountedPersonalities({commit:n}){this.state.config.active_personality_id<0&&(this.state.config.active_personality_id=0);let e=[];const t=[];for(let i=0;ia.full_path==r||a.full_path==s[0]);if(o>=0){let a=pR(this.state.personalities[o]);s.length>1&&(a.language=s[1]),a?e.push(a):e.push(this.state.personalities[this.state.personalities.findIndex(l=>l.full_path=="generic/lollms")])}else t.push(i),console.log("Couldn't load personality : ",r)}for(let i=t.length-1;i>=0;i--)console.log("Removing personality : ",this.state.config.personalities[t[i]]),this.state.config.personalities.splice(t[i],1),this.state.config.active_personality_id>t[i]&&(this.state.config.active_personality_id-=1);n("setMountedPersArr",e),this.state.mountedPers=this.state.personalities[this.state.personalities.findIndex(i=>i.full_path==this.state.config.personalities[this.state.config.active_personality_id]||i.full_path+":"+i.language==this.state.config.personalities[this.state.config.active_personality_id])]},async refreshBindings({commit:n}){let e=await Hn("list_bindings");n("setbindingsZoo",e)},async refreshModelsZoo({commit:n}){console.log("Fetching models");const e=await Pe.get("/get_available_models");n("setModelsZoo",e.data.filter(t=>t.variants&&t.variants.length>0))},async refreshModelStatus({commit:n}){let e=await Hn("get_model_status");n("setIsModelOk",e.status)},async refreshModels({commit:n}){console.log("Fetching models");let e=await Hn("list_models");console.log(`Found ${e}`);let t=await Hn("get_active_model");console.log("Selected model ",t),t!=null&&n("setselectedModel",t.model),n("setModelsArr",e),console.log("setModelsArr",e),this.state.modelsZoo.map(r=>{r.isInstalled=e.includes(r.name)}),this.state.installedModels=this.state.modelsZoo.filter(r=>r.isInstalled);const i=this.state.modelsZoo.findIndex(r=>r.name==this.state.config.model_name);i!=-1&&n("setCurrentModel",this.state.modelsZoo[i])},async refreshExtensionsZoo({commit:n}){let e=[],t=await Hn("list_extensions");const i=Object.keys(t);console.log("Extensions recovered:"+t);for(let r=0;r{let c=!1;for(const u of this.state.config.extensions)u.includes(s+"/"+l.folder)&&(c=!0);let d={};return d=l,d.category=s,d.full_path=s+"/"+l.folder,d.isMounted=c,d});e.length==0?e=a:e=e.concat(a)}e.sort((r,s)=>r.name.localeCompare(s.name)),console.log("Done loading extensions"),n("setExtensionsZoo",e)},refreshmountedExtensions({commit:n}){console.log("Mounting extensions");let e=[];const t=[];for(let i=0;io.full_path==r);if(s>=0){let o=pR(this.state.config.extensions[s]);o&&e.push(o)}else t.push(i),console.log("Couldn't load extension : ",r)}for(let i=t.length-1;i>=0;i--)console.log("Removing extensions : ",this.state.config.extensions[t[i]]),this.state.config.extensions.splice(t[i],1);n("setMountedExtensions",e)},async refreshDiskUsage({commit:n}){this.state.diskUsage=await Hn("disk_usage")},async refreshRamUsage({commit:n}){this.state.ramUsage=await Hn("ram_usage")},async refreshVramUsage({commit:n}){const e=await Hn("vram_usage"),t=[];if(e.nb_gpus>0){for(let r=0;r@Wd%@ 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 literal 0 HcmV?d00001 diff --git a/web/dist/index.html b/web/dist/index.html index 4f562180..c6ef1c6c 100644 --- a/web/dist/index.html +++ b/web/dist/index.html @@ -6,7 +6,7 @@ LoLLMS WebUI - Welcome - + diff --git a/web/src/assets/bash_block.png b/web/src/assets/bash_block.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f639492e47f9c4f30e574db7de8fc18b64e944 GIT binary patch literal 24894 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⪼T$kcV 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 literal 0 HcmV?d00001 diff --git a/web/src/components/Message.vue b/web/src/components/Message.vue index efd97ba9..1765b55c 100644 --- a/web/src/components/Message.vue +++ b/web/src/components/Message.vue @@ -72,6 +72,15 @@ title="Edit message" @click.stop="editMsgMode = true"> +
+ +
+
+ +
+
@@ -133,7 +142,7 @@
-
+
- +
@@ -177,7 +186,7 @@
-