diff --git a/public/aluwdoors-ref/configurator.css?v=mlaxicsg b/public/aluwdoors-ref/configurator.css?v=mlaxicsg new file mode 100644 index 0000000..8485e59 --- /dev/null +++ b/public/aluwdoors-ref/configurator.css?v=mlaxicsg @@ -0,0 +1 @@ +/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-orange-400:oklch(75% .183 55.934);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-green-600:oklch(62.7% .194 149.214);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-600:oklch(51.1% .262 276.966);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-800:oklch(43.8% .218 303.724);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-relaxed:1.625;--leading-loose:2;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background-light:#f0f3f3;--color-primary-green:#b1de6e;--color-secondary-green:#2b3937;--color-tertiary-green:#1c2523;--color-dropdown-open:#3e4b49;--color-popup-input:#3e4b49;--color-button-hover-green:#9fcd5b;--color-button-active-dark:#3e4b49;--color-warning-red:#c40c0c;--color-horizontal-line:#e0e5e5;--color-border-gray:#e0e5e5;--height-headerheight-sm:calc(var(--spacing)*13.5);--height-headerheight-md:calc(var(--spacing)*19.25);--height-headerheight-lg:calc(var(--spacing)*22);--height-tabheight-sm:calc(var(--spacing)*13.5);--height-tabheight-md:calc(var(--spacing)*19.25);--height-tabheight-lg:calc(var(--spacing)*22);--height-buttonheight-sm:calc(var(--spacing)*12.5);--height-buttonheight-md:calc(var(--spacing)*12.5);--height-buttonheight-lg:calc(var(--spacing)*12.5);--width-buttonwidth-sm:calc(var(--spacing)*12.5);--width-buttonwidth-md:calc(var(--spacing)*12.5);--width-buttonwidth-lg:calc(var(--spacing)*12.5)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.visible\!{visibility:visible!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-1\.5{top:calc(var(--spacing)*-1.5)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-full{top:100%}.-right-1\.5{right:calc(var(--spacing)*-1.5)}.right-0{right:calc(var(--spacing)*0)}.right-4{right:calc(var(--spacing)*4)}.right-5{right:calc(var(--spacing)*5)}.right-6{right:calc(var(--spacing)*6)}.right-full{right:100%}.-bottom-1\.5{bottom:calc(var(--spacing)*-1.5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-full{bottom:100%}.-left-1\.5{left:calc(var(--spacing)*-1.5)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-full{left:100%}.z-10{z-index:10}.z-50{z-index:50}.z-99999{z-index:99999}.container{width:100%}@media(min-width:30rem){.container{max-width:30rem}}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:58rem){.container{max-width:58rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-10{margin-inline:calc(var(--spacing)*-10)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing)*4)}.ms-0{margin-inline-start:calc(var(--spacing)*0)}.ms-1{margin-inline-start:calc(var(--spacing)*1)}.ms-2{margin-inline-start:calc(var(--spacing)*2)}.ms-3{margin-inline-start:calc(var(--spacing)*3)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\.5{margin-top:calc(var(--spacing)*2.5)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mr-12{margin-right:calc(var(--spacing)*12)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-\[8px\]{margin-bottom:8px}.mb-\[10px\]{margin-bottom:10px}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[104\/80\]{aspect-ratio:104/80}.aspect-\[104\/124\]{aspect-ratio:104/124}.size-full{width:100%;height:100%}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-8\.5{height:calc(var(--spacing)*8.5)}.h-10{height:calc(var(--spacing)*10)}.h-10\.5{height:calc(var(--spacing)*10.5)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-13{height:calc(var(--spacing)*13)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-50{height:calc(var(--spacing)*50)}.h-56{height:calc(var(--spacing)*56)}.h-72{height:calc(var(--spacing)*72)}.h-100{height:calc(var(--spacing)*100)}.h-\[75px\]{height:75px}.h-\[var\(--content-h\)\]{height:var(--content-h)}.h-buttonheight-sm{height:var(--height-buttonheight-sm)}.h-fit{height:fit-content}.h-full{height:100%}.h-full\!{height:100%!important}.h-headerheight-sm{height:var(--height-headerheight-sm)}.h-max{height:max-content}.h-screen{height:100vh}.h-tabheight-sm{height:var(--height-tabheight-sm)}.max-h-50\!{max-height:calc(var(--spacing)*50)!important}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-100\!{max-height:calc(var(--spacing)*100)!important}.max-h-\[500px\]{max-height:500px}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-8\.5{width:calc(var(--spacing)*8.5)}.w-10{width:calc(var(--spacing)*10)}.w-10\.5{width:calc(var(--spacing)*10.5)}.w-12{width:calc(var(--spacing)*12)}.w-15{width:calc(var(--spacing)*15)}.w-50{width:calc(var(--spacing)*50)}.w-\[50px\]{width:50px}.w-auto{width:auto}.w-buttonwidth-sm{width:var(--width-buttonwidth-sm)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-72{max-width:calc(var(--spacing)*72)}.max-w-\[1200px\]{max-width:1200px}.max-w-\[1450px\]{max-width:1450px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-0{flex:0}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-72{flex-basis:calc(var(--spacing)*72)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-0{rotate:none}.rotate-0\!{rotate:none!important}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-7{row-gap:calc(var(--spacing)*7)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s-sm{border-start-start-radius:var(--radius-sm);border-end-start-radius:var(--radius-sm)}.rounded-e-sm{border-start-end-radius:var(--radius-sm);border-end-end-radius:var(--radius-sm)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t,.border-t-1{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-\[rgba\(0\,0\,0\,0\.4\)\]{border-color:#0006}.border-border-gray{border-color:var(--color-border-gray)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-horizontal-line{border-color:var(--color-horizontal-line)}.border-red-400{border-color:var(--color-red-400)}.border-secondary-green{border-color:var(--color-secondary-green)}.border-white{border-color:var(--color-white)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-\[\#1B2221\]\/94{background-color:#1b2221f0}.bg-\[\#1b2221\]\/95{background-color:#1b2221f2}.bg-\[\#E0E5E5\]{background-color:#e0e5e5}.bg-\[\#e74242\]{background-color:#e74242}.bg-background-light{background-color:var(--color-background-light)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-button-active-dark{background-color:var(--color-button-active-dark)}.bg-dropdown-open{background-color:var(--color-dropdown-open)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-popup-input{background-color:var(--color-popup-input)}.bg-primary-green{background-color:var(--color-primary-green)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary-green{background-color:var(--color-secondary-green)}.bg-tertiary-green{background-color:var(--color-tertiary-green)}.bg-warning-red{background-color:var(--color-warning-red)}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-blue-600{fill:var(--color-blue-600)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-\[10px\]{padding:10px}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-20{padding-block:calc(var(--spacing)*20)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-\[2\]{--tw-leading:2;line-height:2}.leading-loose{--tw-leading:var(--leading-loose);line-height:var(--leading-loose)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-\[\#868c8b\]{color:#868c8b}.text-background-light{color:var(--color-background-light)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-indigo-600{color:var(--color-indigo-600)}.text-orange-400{color:var(--color-orange-400)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-green{color:var(--color-secondary-green)}.text-tertiary-green{color:var(--color-tertiary-green)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.uppercase{text-transform:uppercase}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-secondary-green{--tw-shadow-color:#2b3937}@supports (color:color-mix(in lab,red,red)){.shadow-secondary-green{--tw-shadow-color:color-mix(in oklab,var(--color-secondary-green)var(--tw-shadow-alpha),transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-800{--tw-duration:.8s;transition-duration:.8s}.ease-\[cubic-bezier\(0\.42\,0\,0\.58\,1\)\]{--tw-ease:cubic-bezier(.42,0,.58,1);transition-timing-function:ease-in-out}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:bg-secondary-green:is(:where(.group):hover *){background-color:var(--color-secondary-green)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}}.placeholder\:transition-opacity::placeholder{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.placeholder\:duration-200::placeholder{--tw-duration:.2s;transition-duration:.2s}.placeholder\:ease-out::placeholder{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.hover\:bg-background-light:hover{background-color:var(--color-background-light)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-button-hover-green:hover{background-color:var(--color-button-hover-green)}.hover\:bg-dropdown-open:hover{background-color:var(--color-dropdown-open)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-primary-green:hover{background-color:var(--color-primary-green)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-secondary-green:hover{background-color:var(--color-secondary-green)}.hover\:bg-tertiary-green:hover{background-color:var(--color-tertiary-green)}.hover\:bg-warning-red:hover{background-color:var(--color-warning-red)}.hover\:bg-warning-red\/80:hover{background-color:#c40c0ccc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-warning-red\/80:hover{background-color:color-mix(in oklab,var(--color-warning-red)80%,transparent)}}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-background-light:hover{color:var(--color-background-light)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-red-800:hover{color:var(--color-red-800)}.hover\:text-tertiary-green:hover{color:var(--color-tertiary-green)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-secondary-green:focus{--tw-ring-color:var(--color-secondary-green)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:placeholder\:opacity-0:focus::placeholder{opacity:0}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media not all and (min-width:64rem){.max-lg\:hidden{display:none}}@media not all and (min-width:48rem){.max-md\:hidden{display:none}}@media not all and (min-width:40rem){.max-sm\:hidden{display:none}}@media(min-width:400px){:where(.min-\[400px\]\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}}@media(min-width:450px){.min-\[450px\]\:ml-4{margin-left:calc(var(--spacing)*4)}.min-\[450px\]\:block{display:block}.min-\[450px\]\:px-0{padding-inline:calc(var(--spacing)*0)}.min-\[450px\]\:py-2{padding-block:calc(var(--spacing)*2)}}@media(min-width:650px){.min-\[650px\]\:block{display:block}.min-\[650px\]\:hidden{display:none}}@media(min-width:30rem){.header-add-start\:hidden{display:none}.xs\:flex-row{flex-direction:row}}@media(min-width:40rem){.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:max-h-full\!{max-height:100%!important}.sm\:flex-row{flex-direction:row}.sm\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:48rem){.md\:static{position:static}.md\:top-4{top:calc(var(--spacing)*4)}.md\:mb-0{margin-bottom:calc(var(--spacing)*0)}.md\:mb-\[10px\]{margin-bottom:10px}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline{display:inline}.md\:inline-block{display:inline-block}.md\:h-10{height:calc(var(--spacing)*10)}.md\:h-11{height:calc(var(--spacing)*11)}.md\:h-12{height:calc(var(--spacing)*12)}.md\:h-80{height:calc(var(--spacing)*80)}.md\:h-100{height:calc(var(--spacing)*100)}.md\:h-auto{height:auto}.md\:h-buttonheight-md{height:var(--height-buttonheight-md)}.md\:h-headerheight-md{height:var(--height-headerheight-md)}.md\:h-tabheight-md{height:var(--height-tabheight-md)}.md\:max-h-full\!{max-height:100%!important}.md\:w-10{width:calc(var(--spacing)*10)}.md\:w-12{width:calc(var(--spacing)*12)}.md\:w-48{width:calc(var(--spacing)*48)}.md\:w-\[310px\]{width:310px}.md\:w-\[440px\]{width:440px}.md\:w-\[645px\]{width:645px}.md\:w-auto{width:auto}.md\:w-buttonwidth-md{width:var(--width-buttonwidth-md)}.md\:max-w-60{max-width:calc(var(--spacing)*60)}.md\:max-w-150{max-width:calc(var(--spacing)*150)}.md\:flex-1{flex:1}.md\:shrink-0{flex-shrink:0}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:gap-6{gap:calc(var(--spacing)*6)}.md\:overflow-hidden{overflow:hidden}.md\:p-4{padding:calc(var(--spacing)*4)}.md\:p-6{padding:calc(var(--spacing)*6)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:py-4{padding-block:calc(var(--spacing)*4)}.md\:pr-12{padding-right:calc(var(--spacing)*12)}.md\:pl-4{padding-left:calc(var(--spacing)*4)}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-\[28px\]{font-size:28px}}@media(min-width:58rem){.header-add-end\:block{display:block}}@media(min-width:64rem){.lg\:h-12{height:calc(var(--spacing)*12)}.lg\:h-110{height:calc(var(--spacing)*110)}.lg\:h-120{height:calc(var(--spacing)*120)}.lg\:h-buttonheight-lg{height:var(--height-buttonheight-lg)}.lg\:h-headerheight-lg{height:var(--height-headerheight-lg)}.lg\:h-tabheight-lg{height:var(--height-tabheight-lg)}.lg\:w-15{width:calc(var(--spacing)*15)}.lg\:w-16{width:calc(var(--spacing)*16)}.lg\:w-\[420px\]{width:420px}.lg\:w-buttonwidth-lg{width:var(--width-buttonwidth-lg)}.lg\:max-w-100{max-width:calc(var(--spacing)*100)}.lg\:rounded-xl{border-radius:var(--radius-xl)}.lg\:rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.lg\:rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.lg\:p-5{padding:calc(var(--spacing)*5)}.lg\:p-10{padding:calc(var(--spacing)*10)}.lg\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media(min-width:80rem){.xl\:mt-5{margin-top:calc(var(--spacing)*5)}.xl\:mb-5{margin-bottom:calc(var(--spacing)*5)}.xl\:h-13{height:calc(var(--spacing)*13)}.xl\:text-\[32px\]{font-size:32px}}@media(min-width:96rem){.\32xl\:ml-4{margin-left:calc(var(--spacing)*4)}}@media(prefers-color-scheme:dark){.dark\:text-gray-600{color:var(--color-gray-600)}}@media(max-height:800px){.\[\@media\(max-height\:800px\)\]\:hidden{display:none}}}@font-face{font-family:Satoshi;src:url(data:font/ttf;base64,AAEAAAAUAQAABABAR0RFRn4arosAAOTEAAAB9UdQT1P3T5qFAADmvAAAXphHU1VC7VEp5QABRVQAAAvCSFZBUnkhfXUAAVEYAAAEIk1WQVKb63MUAAFVPAAAADxPUy8yWqPxlQAAAcgAAABgU1RBVHh0aIwAAVV4AAAAHGF2YXKWcYqsAAFVlAAAACJjbWFwI34ocAAACggAAAUkZnZhco/FaZYAAVW4AAAATGdhc3AAAAAQAADkvAAAAAhnbHlmra6S2AAAEyAAALwIZ3Zhcl7sM2sAAVYEAACbuGhlYWQep202AAABTAAAADZoaGVhCbcHBwAAAYQAAAAkaG10eIzHSL0AAAIoAAAH4GxvY2EYgeq4AAAPLAAAA/JtYXhwAgQAsAAAAagAAAAgbmFtZZp1inUAAM8oAAAHNXBvc3Ti9xjUAADWYAAADlwAAQAAAAIAAHM+0QRfDzz1AAMD6AAAAADdF+F7AAAAAN0YR2//M/8ABisEaQABAAYAAgAAAAAAAAABAAAD8v8QAGQGy/8z/zMGKwABAAAAAAAAAAAAAAAAAAAB+AABAAAB+ACHAAcAJwACAAEAAAAAAAAAAAAAAAAAAgABAAQCUAOEAAUAAAKKAlgAAABLAooCWAAAAV4AMgEsAAAAAAAAAAAAAAAAgAAARwAAAAEAAAAAAAAAAElURk8AoAAg+wQD8v8QAGQD8gDwIAAAkwAAAAAB9ALkAAAAIAAMAfQAMgK/AAkCvwAJAr8ACQK/AAkCvwAJAr8ACQK/AAkCvwAJAr8ACQK/AAkCvwAJA8cABAPHAAQCmQBNAwkAJAMJACQDCQAkAwkAJAMJACQDCQAkAvkATQL5AAoC+QBNAvkACgJbAE0CWwBNAlsATQJbAE0CWwBNAlsATQJbAE0CWwBNAlsATQJbAE0CRgBNAyEAJAMhACQDIQAkAyEAJAMhACQC/ABNAvwAAgE8AE0BPABNATz/8QE8/+4BPABMATz/9wE8AA0BPAA5ATz/1wJBABQCQQAUAsUATQLFAE0CLABNAiwATQIsAE0CLABNAiwATQIsABADjwBNAxIATQMSAE0DEgBNAxIATQMSAE0DEgBNAx0AJAMdACQDHQAkAx0AJAMdACQDHQAkAx0AJAMdACQDHQAkAx0AJARfACQCjgBNAo4ATQMdACQCsABNArAATQKwAE0CsABNAmEAGQJhABkCYQAZAmEAGQJhABkCYQAZAm4AFAJuABQCbgAUAm4AFAJuABQC8gBIAvIASALyAEgC8gBIAvIASALyAEgC8gBIAvIASALyAEgC8gBIAuAACgQtAA8ELQAPBC0ADwQtAA8ELQAPAtMAEgKqAAoCqgAKAqoACgKqAAoCqgAKAlEAGQJRABkCUQAZAlEAGQMTACQCNAAlAjQAJQI0ACUCNAAlAjQAJQI0ACUCNAAlAjQAJQI0ACUCNAAlAjQAJQOBACUDgQAlAoAAOgI5AB8COQAfAjkAHwI5AB8COQAfAjkAHwKAAB8CXgAfAoAAHwKAAB8CPwAfAj8AHwI/AB8CPwAfAj8AHwI/AB8CPwAfAj8AHwI/AB8CPwAfAW0ACwJ5AB8CeQAfAnkAHwJ5AB8CeQAfAl4AOgJe//kBDgAuAQ4AOgEO/9sBDv/YAQ4ANgEO/+EBDv/3AQ4AHgEO/8EBDv/KAQ7/ygI8ADoCPAA6AQ4AOgEOADoBDgA6AQ4AOgGgADoBDgAJA5AAOgJeADoCXgA6Al4AOgJeADoCXgA6Al4AOgJlAB8CZQAfAmUAHwJlAB8CZQAfAmUAHwJlAB8CZQAfAmUAHwJlAB8D0gAfAoAAOgKAADoCgAAfAaYAOgGmADoBpgA2AaYAOgHgABYB4AAWAeAAFgHgABYB4AAWAeAAFgJmADoBbgALAW4ACwFuAAsBbgALAW4ACwJaADQCWgA0AloANAJaADQCWgA0AloANAJaADQCWgA0AloANAJaADQCNgAFAz8ACgM/AAoDPwAKAz8ACgM/AAoCJAAKAjUABQI1AAUCNQAFAjUABQI1AAUB6wAkAesAJAHrACQB6wAkAoAAHwI3AAsBeQALAr4ACwPKAAsDyAALAqYACwNoAAsCeAALAnYACwKUAAsCzwALA4EACwKbADcCnAANAs4AJAG1ACICXQAeAjoACAKRABQCYwAhAnYAHgIvAAUCkwAkAnYAHgKUAB4ClABIApQAOQKUADEClAAUApQANQKUAC0ClAA3ApQAJAKUAC0BsgAWARQAFAFwABYBawASAYkAEQFwAA8BigAWAV4AEgGKABYBigAWAXsAIAD3AA4BSgAWATcAEgFXAAwBSgAaAVoAGgEnAA4BVwAcAVoAGgF7ACAA9wAOAUoAFgE3ABIBVwAMAUoAGgFaABoBJwAOAVcAHAFaABoBsAAWARQAFAFwABYBawASAX8AEQFwAA8BigAWAV4AEgGKABYBigAWAL//MwMoAA4DAwAOAxsAEgM1AA4DTQASA2AAGgMVAA4BrgAUA8oAFAG6AAABcABAAdUAQAFIAEgBNAA+A1AAPgFeAFIBXgBSAuoAJQE0AD4CQQAfAkEAHwH6AD4BHgA+AUgASAG6AAACMQA8AYAALQGAAAUBUQBNAVEABQFVACgBVQAABOgARgPwAEYBzgA8AyAAKAMgACgB9AAoAfQAKAILAEACCwBAAgsAQAEvAEABLwBAAS8AQAEJAAACTQApAvwAPAJhABkCUwAMApsAMwKjABgCuAAUApQAUAKUAFAClABWApQAUAKUAFAClABQApQAUAKUAFAClABQApQAUAKUAFAClABQApQAUAKUADYDZwAoA5sAKAHoAB4C0gAyAtQATQJVADIC8wAAAloANAKTAC4D3QAaBZUAGgNsADwDXQA8A/MAPANbADwDawA8A14APAP0ADwDQwA8BJYAPALhADwDfgA8A34APAKYADwDPgA8Az4APAPGADwDxgA8A34APAKsACgDxwAyAwIALgJuABkB7gAcAzcAKAIKACgCCgAoApIAGgFWAB4BYAB1AWAAdQFkABQBZwAUAwsAPAUgAE0CGAA8AMYAJAJnACgByAA0APMAKAE4ADIBOAAoAfYAKAGqACgBqgAoAdQAOQFkACUB0wAjAZoAPADlACgA5QAoARYAHgJIACgBOAAoAdQAOQGqACgBFgAeAaoAKAHIADQA8wAoATgAMgH2ACgBmgA8AQUALQFkACUB0wAjAOQAKADkAAUGywA8AxMAJAMTACQDEwAkAxMAJAMdACQBDgA6AQ7/ygKAAB8CgAAfAoAAHwKAAB8CgAAfAoAAHwKAAB8CgAAfAoAAHwKAAB8CNwALAjcACwI3AAsCNwALAX4ACwF5AAsBeQALAXkACwIsATACgAACASEAFAGeABQDIQAUAXkAFAJI/8QA8wAgAAAAAgAAAAMAAAAUAAMAAQAAABQABAUQAAAAigCAAAYACgAvADkAfgCpAKwAuQEjASsBMQE3AUgBTQFrAX4BkgH/AhsCNwLHAt0DBAMIAwwDEgMnAzUDOAOpA8AehR7zIBQgGiAeICIgJiAwIDIgOiBCIEQgcCB5IIkgrCEXISIhLiFe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AAAAAAEFAAUARgABAAAAAAEGAAcASwABAAAAAAEHAAYAUgABAAAAAAEIAAQAWAABAAAAAAEJAAUAXAADAAEECQAAAHoAYQADAAEECQABACAA2wADAAEECQACAAgA+wADAAEECQADAD4BAwADAAEECQAEACoBQQADAAEECQAFABoBawADAAEECQAGACgBhQADAAEECQAHAGQBrQADAAEECQAIACYCEQADAAEECQAJABgCNwADAAEECQALADoCTwADAAEECQAMAEICiQADAAEECQANAdwCywADAAEECQAOADYEpwADAAEECQEAAD4E3QADAAEECQEBABYFGwADAAEECQECABYFMQADAAEECQEDABYFRwADAAEECQEEAAwFXQADAAEECQEFAAoFaQADAAEECQEGAA4FcwADAAEECQEHAAwFgQADAAEECQEIAAgA+wADAAEECQEJAAoFjUFsdGVybmF0ZSBHLCBhLCByZWdpc3RlcmVkIHNpZ25BbHRlcm5hdGUgZ0FsdGVybmF0ZSB0QWx0ZXJuYXRlIFFXZWlnaHRMaWdodFJlZ3VsYXJNZWRpdW1Cb2xkQmxhY2sAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQA3AC0AMgAwADIAMQAgAEkAbgBkAGkAYQBuACAAVAB5AHAAZQAgAEYAbwB1AG4AZAByAHkALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBTAGEAdABvAHMAaABpACAAVgBhAHIAaQBhAGIAbABlAEIAbwBsAGQAMgAuADAAMAAwADsASQBUAEYATwA7AFMAYQB0AG8AcwBoAGkAVgBhAHIAaQBhAGIAbABlAC0AQgBvAGwAZABTAGEAdABvAHMAaABpACAAVgBhAHIAaQBhAGIAbABlACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAwAFMAYQB0AG8AcwBoAGkAVgBhAHIAaQBhAGIAbABlAC0AQgBvAGwAZABTAGEAdABvAHMAaABpACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAAdABoAGUAIABJAG4AZABpAGEAbgAgAFQAeQBwAGUAIABGAG8AdQBuAGQAcgB5AC4ASQBuAGQAaQBhAG4AIABUAHkAcABlACAARgBvAHUAbgBkAHIAeQBEAGUAbgBpACAAQQBuAGcAZwBhAHIAYQBoAHQAdABwAHMAOgAvAC8AaQBuAGQAaQBhAG4AdAB5AHAAZQBmAG8AdQBuAGQAcgB5AC4AYwBvAG0AaAB0AHQAcABzADoALwAvAHcAdwB3AC4AaQBuAGQAaQBhAG4AdAB5AHAAZQBmAG8AdQBuAGQAcgB5AC4AYwBvAG0AVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABwAHIAbwB0AGUAYwB0AGUAZAAgAHUAbgBkAGUAcgAgAGQAbwBtAGUAcwB0AGkAYwAgAGEAbgBkACAAaQBuAHQAZQByAG4AYQB0AGkAbwBuAGEAbAAgAHQAcgBhAGQAZQBtAGEAcgBrACAAYQBuAGQAIABjAG8AcAB5AHIAaQBnAGgAdAAgAGwAYQB3AC4AIABZAG8AdQAgAGEAZwByAGUAZQAgAHQAbwAgAGkAZABlAG4AdABpAGYAeQAgAHQAaABlACAASQBUAEYAIABmAG8AbgB0AHMAIABiAHkAIABuAGEAbQBlACAAYQBuAGQAIABjAHIAZQBkAGkAdAAgAHQAaABlACAASQBUAEYAJwBzACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQAgAHQAcgBhAGQAZQBtAGEAcgBrAHMAIABhAG4AZAAgAGMAbwBwAHkAcgBpAGcAaAB0AHMAIABpAG4AIABhAG4AeQAgAGQAZQBzAGkAZwBuACAAbwByACAAcAByAG8AZAB1AGMAdABpAG8AbgAgAGMAcgBlAGQAaQB0AHMALgBoAHQAdABwAHMAOgAvAC8AZgBvAG4AdABzAGgAYQByAGUALgBjAG8AbQAvAHQAZQByAG0AcwBBAGwAdABlAHIAbgBhAHQAZQAgAEcALAAgAGEALAAgAHIAZQBnAGkAcwB0AGUAcgBlAGQAIABzAGkAZwBuAEEAbAB0AGUAcgBuAGEAdABlACAAZwBBAGwAdABlAHIAbgBhAHQAZQAgAHQAQQBsAHQAZQByAG4AYQB0AGUAIABRAFcAZQBpAGcAaAB0AEwAaQBnAGgAdABSAGUAZwB1AGwAYQByAE0AZQBkAGkAdQBtAEIAbABhAGMAawAAAAACAAAAAAAA/z0AUAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAkAMkBAgDHAGIArQEDAQQAYwEFAK4AkAEGACUAJgD9AP8AZAEHAQgAJwDpAQkBCgAoAGUBCwEMAMgAygENAMsBDgEPACkAKgD4ARABEQESACsBEwAsAMwAzQDOAPoAzwEUARUBFgAtARcALgEYAC8BGQEaARsBHADiADAAMQEdAR4BHwEgAGYAMgDQANEAZwDTASEBIgCRASMArwCwADMA7QA0ADUBJAElASYANgEnAOQA+wEoASkANwEqASsBLAEtADgA1ADVAGgA1gEuAS8BMAExATIAOQA6ATMBNAE1ATYAOwA8AOsBNwC7ATgAPQE5AOYBOgE7AEQAaQE8AGsAbABqAT0BPgBuAT8AbQCgAUAARQBGAP4BAABvAUEBQgBHAOoBQwEBAEgAcAFEAUUAcgBzAUYAcQFHAUgASQBKAPkBSQFKAUsASwFMAEwAdAB2AHcBTQB1AU4BTwFQAE0BUQBOAVIATwFTAVQBVQFWAOMAUABRAVcBWAFZAVoAeABSAHkAewB8AHoBWwFcAKEBXQB9ALEAUwDuAFQAVQFeAV8BYABWAWEA5QD8AWIBYwCJAFcBZAFlAWYBZwBYAH4AgACBAH8BaAFpAWoBawFsAFkAWgFtAW4BbwFwAFsAXADsAXEAugFyAF0BcwDnAXQBdQF2AXcBeAF5AXoBewF8AMAAwQF9AX4BfwCfAJsAEwAUABUAFgAXABgAGQAaABsAHAGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagA8QDyAPMBqQGqAasBrAGtAa4AvAD0APUA9gGvAbABsQGyAA0BswA/AMMAhwAdAA8AqwAEAKMABgARACIAogAFAAoAHgASAEIAXgBgAD4AQAALAAwAswCyABAAqQCqAL4AvwDFALQAtQC2ALcAxAADAIQAvQAHAbQApgCFAJYADgDvAPAAuAAgAI8AIQAfAJUAlACTAKcAYQCkAbUAkgCcAbYAmgCZAKUBtwCYAAgAxgG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwC5AcQBxQHGAccByAHJACMACQCIAIYAiwCKAcoAjACDAF8A6ACCAMIBywHMAEEBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAI0A2wDhAN4A2ACOANwAQwDfANoA4ADdANkB3gHfAeAB4QHiAeMB5AHlANcB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgAGQWJyZXZlB0FtYWNyb24HQW9nb25lawpBcmluZ2FjdXRlB0FFYWN1dGULQ2NpcmN1bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRGNyb2F0BkVicmV2ZQZFY2Fyb24KRWRvdGFjY2VudAdFbWFjcm9uB0VvZ29uZWsLR2NpcmN1bWZsZXgMR2NvbW1hYWNjZW50Ckdkb3RhY2NlbnQESGJhcgdJbWFjcm9uB0lvZ29uZWsGSXRpbGRlC0pjaXJjdW1mbGV4DEtjb21tYWFjY2VudAZMYWN1dGUGTGNhcm9uDExjb21tYWFjY2VudARMZG90Bk5hY3V0ZQZOY2Fyb24MTmNvbW1hYWNjZW50A0VuZw1PaHVuZ2FydW1sYXV0B09tYWNyb24LT3NsYXNoYWN1dGUGUmFjdXRlBlJjYXJvbgxSY29tbWFhY2NlbnQGU2FjdXRlC1NjaXJjdW1mbGV4DFNjb21tYWFjY2VudARUYmFyBlRjYXJvbghUY2VkaWxsYQxUY29tbWFhY2NlbnQNVWh1bmdhcnVtbGF1dAdVbWFjcm9uB1VvZ29uZWsFVXJpbmcGVXRpbGRlBldhY3V0ZQtXY2lyY3VtZmxleAlXZGllcmVzaXMGV2dyYXZlC1ljaXJjdW1mbGV4BllncmF2ZQZaYWN1dGUKWmRvdGFjY2VudAZHLnNzMDEGYWJyZXZlB2FtYWNyb24HYW9nb25lawphcmluZ2FjdXRlB2FlYWN1dGULY2NpcmN1bWZsZXgKY2RvdGFjY2VudAZkY2Fyb24GZWJyZXZlBmVjYXJvbgplZG90YWNjZW50B2VtYWNyb24HZW9nb25lawtnY2lyY3VtZmxleAxnY29tbWFhY2NlbnQKZ2RvdGFjY2VudARoYmFyCmlkb3RhY2NlbnQHaW1hY3Jvbgdpb2dvbmVrBml0aWxkZQtqY2lyY3VtZmxleAxrY29tbWFhY2NlbnQGbGFjdXRlBmxjYXJvbgxsY29tbWFhY2NlbnQEbGRvdAZuYWN1dGUGbmNhcm9uDG5jb21tYWFjY2VudANlbmcNb2h1bmdhcnVtbGF1dAdvbWFjcm9uC29zbGFzaGFjdXRlBnJhY3V0ZQZyY2Fyb24McmNvbW1hYWNjZW50BnNhY3V0ZQtzY2lyY3VtZmxleAxzY29tbWFhY2NlbnQEdGJhcgZ0Y2Fyb24IdGNlZGlsbGEMdGNvbW1hYWNjZW50DXVodW5nYXJ1bWxhdXQHdW1hY3Jvbgd1b2dvbmVrBXVyaW5nBnV0aWxkZQZ3YWN1dGULd2NpcmN1bWZsZXgJd2RpZXJlc2lzBndncmF2ZQt5Y2lyY3VtZmxleAZ5Z3JhdmUGemFjdXRlCnpkb3RhY2NlbnQGYS5zczAxBmcuc3MwMgZ0LnNzMDMDZl9mBWZfZl9pBWZfZl9sA2ZfdANmX3kDdF9pA3RfdAN0X3kHemVyby50ZgZvbmUudGYGdHdvLnRmCHRocmVlLnRmB2ZvdXIudGYHZml2ZS50ZgZzaXgudGYIc2V2ZW4udGYIZWlnaHQudGYHbmluZS50Zg16ZXJvLmluZmVyaW9yDG9uZS5pbmZlcmlvcgx0d28uaW5mZXJpb3IOdGhyZWUuaW5mZXJpb3INZm91ci5pbmZlcmlvcg1maXZlLmluZmVyaW9yDHNpeC5pbmZlcmlvcg5zZXZlbi5pbmZlcmlvcg5laWdodC5pbmZlcmlvcg1uaW5lLmluZmVyaW9yCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQlmaXZlLmRub20Ic2l4LmRub20Kc2V2ZW4uZG5vbQplaWdodC5kbm9tCW5pbmUuZG5vbQl6ZXJvLm51bXIIb25lLm51bXIIdHdvLm51bXIKdGhyZWUubnVtcglmb3VyLm51bXIJZml2ZS5udW1yCHNpeC5udW1yCnNldmVuLm51bXIKZWlnaHQubnVtcgluaW5lLm51bXINemVyby5zdXBlcmlvcg1mb3VyLnN1cGVyaW9yDWZpdmUuc3VwZXJpb3IMc2l4LnN1cGVyaW9yDnNldmVuLnN1cGVyaW9yDmVpZ2h0LnN1cGVyaW9yDW5pbmUuc3VwZXJpb3IJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMIYXN0ZXJpc20ERXVybwhlbXB0eXNldAlpbmNyZW1lbnQFbWljcm8HYXJyb3d1cAdhcnJvd05FCmFycm93cmlnaHQHYXJyb3dTRQlhcnJvd2Rvd24HYXJyb3dTVwlhcnJvd2xlZnQHYXJyb3dOVwlhcnJvd2JvdGgJYXJyb3d1cGRuC2NpcmNsZWJsYWNrBmNpcmNsZQlmaWxsZWRib3gLc3F1YXJld2hpdGUHdHJpYWd1cA90cmlhbmdsZXVwd2hpdGUFcGVhY2UFY2hlY2sOc291bmRjb3B5cmlnaHQJZXN0aW1hdGVkBm51bWVybwZtaW51dGUPcmVnaXN0ZXJlZC5zczAxDGRpZXJlc2lzY29tYg1kb3RhY2NlbnRjb21iCWdyYXZlY29tYglhY3V0ZWNvbWIQaHVuZ2FydW1sYXV0Y29tYg5jaXJjdW1mbGV4Y29tYgljYXJvbmNvbWIJYnJldmVjb21iCHJpbmdjb21iCXRpbGRlY29tYgptYWNyb25jb21iFGNvbW1hdHVybmVkYWJvdmVjb21iD2NvbW1hYWNjZW50Y29tYgtjZWRpbGxhY29tYg1zbGFzaGxvbmdjb21iE2JyYWNrZXRsZWZ0c3VwZXJpb3IUYnJhY2tldHJpZ2h0c3VwZXJpb3IDSVRGC0dicmV2ZS5zczAxEEdjaXJjdW1mbGV4LnNzMDERR2NvbW1hYWNjZW50LnNzMDEPR2RvdGFjY2VudC5zczAxBlEuc3MwNAhkb3RsZXNzagthYWN1dGUuc3MwMQthYnJldmUuc3MwMRBhY2lyY3VtZmxleC5zczAxDmFkaWVyZXNpcy5zczAxC2FncmF2ZS5zczAxDGFtYWNyb24uc3MwMQxhb2dvbmVrLnNzMDEKYXJpbmcuc3MwMQ9hcmluZ2FjdXRlLnNzMDELYXRpbGRlLnNzMDELZ2JyZXZlLnNzMDIQZ2NpcmN1bWZsZXguc3MwMhFnY29tbWFhY2NlbnQuc3MwMg9nZG90YWNjZW50LnNzMDIJdGJhci5zczAzC3RjYXJvbi5zczAzDXRjZWRpbGxhLnNzMDMRdGNvbW1hYWNjZW50LnNzMDMNY2Fyb25jb21iLmFsdA9zdHJva2VzaG9ydGNvbWIOc2xhc2hzaG9ydGNvbWIUc3Ryb2tlc2hvcnRjb21iLmNhc2UTc3Ryb2tlbG9uZ2NvbWIuY2Fz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AV3/4jVYAWX/2DVSAWb/2DVSAWf/2DVSAWj/7DVSAWr/7DVSAaf/2DVSAd7/5zVMAd//5zVMAeD/5zVMAeH/5zVMAeL/5zVMAeP/5zVMAeT/5zVMAeX/5zVMAeb/5zVMAef/5zVMAej/5wAAAen/5wAAAer/5wAAAev/5wAAAAYAbP/OMpIAcv/iMowA7wAKAAABXf/sMpIBp//YMowBrf/sAAAAZQA0//YyZgA1//YyZgBd/84ybABe/84ybABf/84ybABg/84ybABh/84ybABs/84ybABt/+IybABu/+IybABv/+IybABw/+IybABx/+IybABz/8kycgB0/8kycgB1/8kycgB2/8kycgB3/8kycgCL/+cyZgCM/+cyZgCN/+cyZgCO/+cyZgCP/+cyZgCQ/+cyZgCR/+cyZgCS/+cyZgCT/+cyZgCU/+cyZgCV/+cyZgCW/+cyZgCX/+cyZgCY/+cyZgCZ/+cyZgCa/+cyZgCb/+cyZgCc/+cyZgCd/+cyZgCe/+cyZgDB/+cyZgDC/+cyZgDD/+cyZgDE/+cyZgDF/+cyZgDG/+cyZgDH/+cyZgDI/+cyZgDJ/+cyZgDK/+cyZgDL/+cyZgDO/+cyZgDT//YyZgDU//YyZgDV//YyZgDW//YyZgDX//YyZgDY//YyZgDaABQAAADbABQAAADcABQAAADdABQAAADeABQAAADqAAoAAADrAAoAAADsAAoAAADtAAoAAADuAAoAAADwAAoAAADxAAoAAADyAAoAAADzAAoAAAD0AAoAAAD5/+cyZgD7ABQAAAEDABQAAAEEABQAAAEFABQAAAFS//YyZgFT//YyZgFX//YyZgFl/84ybAFm/84ybAFn/84ybAFo/+IyZgFq/+IyZgGm//YyZgGn/+wyZgGt/+wAAAHe/+cyZgHf/+cyZgHg/+cyZgHh/+cyZgHi/+cyZgHj/+cyZgHk/+cyZgHl/+cyZgHm/+cyZgHn/+cyZgHsABQAAAHtABQAAAHuABQAAAHvABQAAAADAGz/2DAMAaf/9gAAAa3/0wAAAAUAcgAAL/gBWAAUAAABXf/YL/IBp//sAAABrQAeL/IABgBs/9gv2ABy/+Iv0gDvAAoAAAFd/+Iv2AGn/9gv0gGt/+cAAAAKAQsAAC+UAQ//9i+UAVL/4i+gAVP/4i+gAVf/4i+gAV3/8QAA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AUABQQFCAUMB1AHVAAIAAgEIAREAAAFhAWIACgAGAAAAAQAIAAICMAAYABAAGAACACgAKgABAV0AAQABAAIAAgEIAREAAQFdAV0AAgAAABcAMABOAGwAiACkAL4A2ADwAQgBHgE0AUgBXAFuAYABkAGgAa4BvAHIAdQB3gHoAAsAAQABAAEAAQABAAEAAQABAAEAAQACAAEAAAAAAAAAAQALAAEAAQABAAEAAQABAAEAAQABAAEAAgAAAAoAAQABAAEAAQABAAEAAQABAAEAAgABAAAAAAAAAAEACgABAAEAAQABAAEAAQABAAEAAQACAAAACQABAAEAAQABAAEAAQABAAEAAgABAAAAAAAAAAEACQABAAEAAQABAAEAAQABAAEAAgAAAAgAAQABAAEAAQABAAEAAQACAAEAAAAAAAAAAQAIAAEAAQABAAEAAQABAAEAAgAAAAcAAQABAAEAAQABAAEAAgABAAAAAAAAAAEABwABAAEAAQABAAEAAQACAAAABgABAAEAAQABAAEAAgABAAAAAAAAAAEABgABAAEAAQABAAEAAgAAAAUAAQABAAEAAQACAAEAAAAAAAAAAQAFAAEAAQABAAEAAgAAAAQAAQABAAEAAgABAAAAAAAAAAEABAABAAEAAQACAAAAAwABAAEAAgABAAAAAAAAAAEAAwABAAEAAgAAAAIAAQACAAEAAAAAAAAAAQACAAEAAgAAAAEAAgABAAAAAAAAAAEAAQACAAAAAQABAAEAAQABAAEAAAAOAAEAAAABAAgAAQAG/+cAAQABAV0ABgAAAAEACAADAAAAAQQyAAEBYAABAAAAEAAGAAAAAQAIAAMAAAABBBgAAgE8AUYAAQAAABIABgAAAAEACAADAAAAAQP8AAMBIAEgASoAAQAAABQABgAAAAEACAADAAAAAQPeAAQBAgECAQIBDAABAAAAFgAGAAAAAQAIAAMAAAABA74ABQDiAOIA4gDiAOwAAQAAABgABgAAAAEACAADAAAAAQOcAAYAwADAAMAAwADAAMoAAQAAABoABgAAAAEACAADAAAAAQN4AAcAnACcAJwAnACcAJwApgABAAAAHAAGAAAAAQAIAAMAAAABA1IACAB2AHYAdgB2AHYAdgB2AIAAAQAAAB4ABgAAAAEACAADAAAAAQMqAAkATgBOAE4ATgBOAE4ATgBOAFgAAQAAACAABgAAAAEACAADAAAAAQMAAAoAJAAkACQAJAAkACQAJAAkACQALgABAAAAIgACAAEBMAE5AAAAAQABAUQAAQAAAAEACAABAsQAKAAGAAAAAQAIAAMAAQASAAECtgAAAAEAAAAkAAIAAgEmAS8AAAFEAUQACgABAAAAAQAIAAECjAAeAAQAAAABAAgAAQAUAAEACAABAAQBtAADAMEBVwABAAEAPwABAAAAAQAIAAEABv/2AAIAAQESARsAAAABAAAAAQAIAAECRAAKAAQAAAABAAgAAQAuAAIACgAUAAEABAEAAAIA8AADAAgADgAUAQMAAgCnAQQAAgDaAQUAAgDwAAEAAgCfANoABAAAAAEACAABAD4AAQAIAAYADgAWAB4AJAAqADAA/QADAJ8ApwD+AAMAnwC0APwAAgCfAQEAAgCnAQIAAgC0AP8AAgDaAAEAAQCfAAMAAAABAAgAAQC0AB0AQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwAAEAfAABAdcAAQHYAAEB2QABAdoAAQHbAAEA+QABAd4AAQHfAAEB4AABAeEAAQHiAAEB4wABAeQAAQHlAAEB5gABAecAAQD6AAEB6AABAekAAQHqAAEB6wABAPsAAQHsAAEB7QABAe4AAQHvAAEBtwABAfAAAgAHACQAKAAAAFIAUgAFAH0AhwAGAKAApAARANoA3gAWAasBqwAbAb4BvgAcAAEAAAABAAgAAgAoABEAfAHXAdgB2QHaAPkB3gHfAeAB4QHiAeMB5AHlAeYB5wG3AAIAAwAkACgAAAB9AIcABQGrAasAEAABAAAAAQAIAAIAEAAFAPoB6AHpAeoB6wACAAEAoACkAAAAAQAAAAEACAACABAABQD7AewB7QHuAe8AAgABANoA3gAAAAEAAAABAAgAAQAGAYkAAQABAFIAAQAAAAEACAACAAwAAwH2AfMB9QABAAMBxgHxAfIAAQAAAAEACAABAAYAFAACAAEBCAERAAAAAAABAAAAAAAUAAAAAAAAAAAAAAAAAAEAAAAMAAEAAAAWAAEAAcAAwAAAAAH4AAEAAQAAAAD/t/+3/7f/t/+3/7f/t/+3/7f/t/+3/6f/p//S/8P/w//D/8P/w//D/7v/u/+7/7v/3f/d/93/3f/d/93/3f/d/93/3f/P/7//v/+//7//v/+1/7X/qP+o/6j/qP+o/6j/qP+o/6j/q/+r/4r/iv/E/8T/xP/E/8T/xP+l/6P/o/+j/6P/o/+j/9z/3P/c/9z/3P/c/9z/3P/c/9wALP/N/83/3P/D/8P/w//D/8b/xv/G/8b/xv/G/5T/lP+U/5T/lP+z/7P/s/+z/7P/s/+z/7P/s/+z/4j/jv+O/47/jv+O/3T/eP94/3j/eP94/+//7//v/+//2v/L/8v/y//L/8v/y//L/8v/y//L/8v/5f/l/7n/wv/C/8L/wv/C/8L/uf/e/7n/uf/F/8X/xf/F/8X/xf/F/8X/xf/F/6r/wv/C/8L/wv/C/8j/yP+4/7j/uP+4/7j/uP+4/7j/uP+4/7j/jv+O/8D/wP/A/8D/k//A/6f/yP/I/8j/yP/I/8j/x//H/8f/x//H/8f/x//H/8f/x//g/7n/uf+5/5//n/+f/5//xv/G/8b/xv/G/8b/v/+q/6r/qv+q/6r/wv/C/8L/wv/C/8L/wv/C/8L/wv+b/4//j/+P/4//j/+K/4n/if+J/4n/if/D/8P/w//D/73/0P+4/3r/TP9I/5P/d/99/3n/Yv9h/2D/3v+s/9T/fv/K//3/2v/c/97/u//E/94AAAAAAAAAAAAAAAAAAAAAAAAAAP/p/7f/4f/q/+r/7f/m/93/3//m/9f/vf/F/9T/zP/O/9D/0P/F/9D/1/+9/8X/1P/M/87/0P/Q/8X/0P/r/7f/4f/q//L/7f/m/93/3//m/6L/JP8r/0L/JP87/zX/N//e/4v/iv+K/4r/xv/G/zr/nP+c/6b/xv+y/7L/Ef91/8b/iv/J/4v/i/+Y/5j/kv+S/2v/mv/I/vv++/9f/1//bf9t/23/t/+3/7cAD//O/1T/xgBM/3X/rP99AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+n/6//bP+3/7//r/+z/8L/0f+b/1X/XP/h/4P/4f9T/+H/gv/7/2j/HwAIAAj/tAAAAAAAAAACAAgASP+0/5D/wf/c//j/y//L/+T/nP/M/8z/tv+0AAD/o//A/+H/8P+Q/8f/if+L/y7/ef95/2L/sv+G/7b/x//H/8L/lP+L/2L/ef/C/3n/kP/H/4n/Lv+2/6f/sv+G/+z/7AAA/9r/2v/a/9r/3P+4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)format("truetype")}@font-face{font-family:Satoshi Italic;src:url(data:font/ttf;base64,AAEAAAAUAQAABABAR0RFRmeYUY0AAOm8AAAB+kdQT1NZiHGQAADruAAAYjpHU1VC7VEp5QABTfQAAAvCSFZBUnpMftQAAVm4AAAEIk1WQVL2T+KFAAFd3AAAAEVPUy8yWqPxjQAAAcgAAABgU1RBVHh0aIwAAV4kAAAAHGF2YXKWcYqsAAFeQAAAACJjbWFwI34ocAAACggAAAUkZnZhco/FaZYAAV5kAAAATGdhc3AAAAAQAADptAAAAAhnbHlmeMKFuQAAEyAAAMCMZ3ZhcpQbaBwAAV6wAACcJGhlYWQeyG1nAAABTAAAADZoaGVhCnUK0AAAAYQAAAAkaG10eHvOSAsAAAIoAAAH4GxvY2FhBTIOAAAPLAAAA/JtYXhwAgQAsgAAAagAAAAgbmFtZeThoUIAANOsAAAHrHBvc3Ti7hjUAADbWAAADlwAAQAAAAIAAB6Ti01fDzz1AAMD6AAAAADdF+F7AAAAAN0YR6P/C/8ABnIEZgADAAYAAgAAAAAAAAABAAAD8v8QAGQHEv8L/uoGcgPoAJ7/5AAAAAAAAAAAAAAB+AABAAAB+ACHAAcAKQACAAEAAAAAAAAAAAAAAAAAAgABAAQCRwOEAAUAAAKKAlgAAABLAooCWAAAAV4AMgEsAAAAAAAAAAAAAAAAgAAARwAAAAEAAAAAAAAAAElURk8AoQAg+wQD8v8QAGQD8gDwIAAAkwAAAAAB9ALkAAAAIAAMAfQAMgKw/+ECsP/hArD/4QKw/+ECsP/hArD/4QKw/+ECsP/hArD/4QKw/+ECsP/hA7H/3AOx/9wCjQAmAv4ANQL+ADUC/gA1Av4ANQL+ADUC/gA1AvEAJgLxABYC8QAmAvEAFgJSACYCUgAmAlIAJgJSACYCUgAmAlIAJgJSACYCUgAmAlIAJgJSACYCPAAmAxYANQMWADUDFgA1AxYANQMWADUC7wAmAu8AJgE3ACYBNwAmATcAJgE3ACYBNwAmATcAJgE3ACYBN//+ATcAJgI1AAoCNQAKArcAJgK3ACYCIwAmAiMAJgIjACYCIwAmAiMAJgIjABADfwAmAwQAJgMEACYDBAAmAwQAJgMDACYDBAAmAxEANAMRADQDEQA0AxEANAMRADQDEQA0AxEANAMRAAsDEQALAxEANARLADQCgAAmAn8AJgMRADQCpAAmAqQAJgKkACYCpAAmAlQAEwJUABMCVAATAlQAEwJUABMCVAATAmAASwJgAEsCYABLAmAASwJgAEsC5ABAAuQAQALkAEAC5ABAAuQAQALkAEAC5ABAAuQAQALkAEAC5ABAAs0AVwQUAFwEFABcBBQAXAQUAFwEFABcAsP/6gKYAFgCmABYApgAWAKYAFgCmABYAkb/8gJG//ICRv/yAkb/8gMLADUCKQAUAikAFAIpABQCKQAUAikAFAIpABQCKQAUAikAFAIpABQCKQAUAikAFANuABQDbgAUAnUAEgItABwCLQAcAi0AHAItABwCLQAcAi0AHAJ0AB4CUgAcAnQAHgJ0AB4CMQAcAjEAHAIxABwCMQAcAjEAHAIxABwCMQAcAjEAHAIxABwCMQAcAWQAHwJq//ICav/yAmr/8gJq//ICav/yAlEAEgJRABIBCAASAQgAEgEIAA4BCAASAQgAEgEIABIBCAASAQj/4wEI//0BBv+EAQb/hAIwABMCMAATAQoAEwEKABMBCgATAQr/9QGgABMBCgANA34AEgJSABICUgASAlIAEgJSABICUgASAlIAEgJcABwCXAAcAlwAHAJcABwCXAAcAlwAHAJcABwCXAAIAlwACAJcABwDvwAcAnT/7AJz/+wCdQAeAZwAEgGcABIBnAASAZz/9QHWAAUB1gAFAdYABQHWAAUB1gAFAdYABQJZABIBZQAfAWUAGQFlAB8BZQAfAWUAHwJMACICTAAiAkwAIgJMACICTAAiAkwAIgJMACICTAAiAkwAIgJMACICJwAsAyoAMQMqADEDKgAxAyoAMQMqADECFf/iAiX/xAIl/8QCJf/EAiX/xAIl/8QB4v/9AeL//QHi//0B4v/9AnQAHgIs/84BbwAfAq4AHwOzAB8DswAfApYAHwNTAB8CaQAfAmgAHwKBAB8CvwAfA2sAHwKPABACjQAhAsEAMAGrAFkCTwAGAi8ABwKDAAECWwAgAnkAHgIkADwCgwAbAnkAQQKUAC0ClAAqApQAKAKUADAClAALApQAOAKUACsClAB2ApQAIwKUAE4BrwAAAQ4AFgFo/+YBZf/wAXf/3QFp//ABiP/2AVcAEwGG//MBiAALAXUAEwDpABYBQ//6ATT//gFR//ABTgAGAU4AAgEqABUBUAAFAU8AFAF1AE0A6QBQAUMANAE0ADgBUQAqAU4AQAFOADwBKgBPAVAAPwFPAE4BsAAAARQAFgFoACoBa//wAX//3QFw//ABhwA6AVcAVwGK//MBiABPALD/CwMEABwC4AAcAwMAOAMRABwDNAA4A04AQAMCAA0BqABMA7IACwGvAE4BagBEAcwAQQFCACsBMAAZA0oAIQFYADUBWAArAtsAGgEuACECOABGAjgAGAHzAIMBFwCDAUIAHwGv/9gCJwABAXcAOAF2/80BSwAUAUv/zAFMACMBTf+4BM8APgPdAD4BxgA1Ax0AKAMdAAAB8QAoAfEAAAIHABcCBgByAgYAdgEqAHIBKgB2ASsAFwEEAAACQgA5AvIANQJUABMCSQAJAo3/6gKW//ECqABZApQAWQKUAFkClABQApQAVAKUAEMClABDApQALgKUAEkClAAuApQALQKUAC4ClABSApQAUgKUAD8DVgANA4oALAHc//UCxQAKAsgAJgJLAAsC4gAnAkz/5wKAACsDzQBLBX8ASwNsAGIDSQAhA/wATgPEAH0DawA9A0kAaAP9AEQDrACKBJYAQQMmAGwDiABOA4gATgKYAE0DrwCFA68AhQPGABQDxgAVA4gATgKIACcDtgA2AvMAJAJlAEYB5AAaAycANgIEAFQCAABSAoYAXwFTAFcBXAA/AV0AQAFcAEUBWwArAxQAUgUIACYCDgBUAMIAZQJeAEsBvgCTAO4AhwEwAKIBMgB4AesAeQGgAHsBmQCTAcoApgFdAIgByAB/AZMAkwDhAIoA4v/jARD/1QI7//kBOAB4AdQApgGqAJMBFv/VAaoAewHIAJMA8wCHATgAogH2AHkBmgCTAQD/8gFkAIgB0wB/AOEAIwDhAAAHEgCDAwsANQMLADUDCwA1AwsANQMRADQBCAASAQb/hAJ0AB4CdAAeAnQAHgJ0AB4CdAAeAnQAHgJ0AB4CdAAeAnQAHgJ0AB4CLP/OAiz/zgIs/84CLP/OAXUAEAFvAB8BbwAfAW8AHwIpAV8CdwA2ARoAGwGVAB0DEABAAXIAGQI4/5wA7gCCAAAAAgAAAAMAAAAUAAMAAQAAABQABAUQAAAAigCAAAYACgAvADkAfgCpAKwAuQEjASsBMQE3AUgBTQFrAX4BkgH/AhsCNwLHAt0DBAMIAwwDEgMnAzUDOAOpA8AehR7zIBQgGiAeICIgJiAwIDIgOiBCIEQgcCB5IIkgrCEXISIhLiFe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AGMAMgAuADAAMAAwADsASQBUAEYATwA7AFMAYQB0AG8AcwBoAGkAVgBhAHIAaQBhAGIAbABlAC0AQgBvAGwAZABJAHQAYQBsAGkAYwBTAGEAdABvAHMAaABpACAAVgBhAHIAaQBhAGIAbABlACAAQgBvAGwAZAAgAEkAdABhAGwAaQBjAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAwADAAUwBhAHQAbwBzAGgAaQBWAGEAcgBpAGEAYgBsAGUALQBCAG8AbABkAEkAdABhAGwAaQBjAFMAYQB0AG8AcwBoAGkAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIAB0AGgAZQAgAEkAbgBkAGkAYQBuACAAVAB5AHAAZQAgAEYAbwB1AG4AZAByAHkALgBJAG4AZABpAGEAbgAgAFQAeQBwAGUAIABGAG8AdQBuAGQAcgB5AEQAZQBuAGkAIABBAG4AZwBnAGEAcgBhAGgAdAB0AHAAcwA6AC8ALwBpAG4AZABpAGEAbgB0AHkAcABlAGYAbwB1AG4AZAByAHkALgBjAG8AbQBoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBpAG4AZABpAGEAbgB0AHkAcABlAGYAbwB1AG4AZAByAHkALgBjAG8AbQBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAHAAcgBvAHQAZQBjAHQAZQBkACAAdQBuAGQAZQByACAAZABvAG0AZQBzAHQAaQBjACAAYQBuAGQAIABpAG4AdABlAHIAbgBhAHQAaQBvAG4AYQBsACAAdAByAGEAZABlAG0AYQByAGsAIABhAG4AZAAgAGMAbwBwAHkAcgBpAGcAaAB0ACAAbABhAHcALgAgAFkAbwB1ACAAYQBnAHIAZQBlACAAdABvACAAaQBkAGUAbgB0AGkAZgB5ACAAdABoAGUAIABJAFQARgAgAGYAbwBuAHQAcwAgAGIAeQAgAG4AYQBtAGUAIABhAG4AZAAgAGMAcgBlAGQAaQB0ACAAdABoAGUAIABJAFQARgAnAHMAIABvAHcAbgBlAHIAcwBoAGkAcAAgAG8AZgAgAHQAaABlACAAdAByAGEAZABlAG0AYQByAGsAcwAgAGEAbgBkACAAYwBvAHAAeQByAGkAZwBoAHQAcwAgAGkAbgAgAGEAbgB5ACAAZABlAHMAaQBnAG4AIABvAHIAIABwAHIAbwBkAHUAYwB0AGkAbwBuACAAYwByAGUAZABpAHQAcwAuAGgAdAB0AHAAcwA6AC8ALwBmAG8AbgB0AHMAaABhAHIAZQAuAGMAbwBtAC8AdABlAHIAbQBzAEEAbAB0AGUAcgBuAGEAdABlACAARwAsACAAYQAsACAAcgBlAGcAaQBzAHQAZQByAGUAZAAgAHMAaQBnAG4AQQBsAHQAZQByAG4AYQB0AGUAIABnAEEAbAB0AGUAcgBuAGEAdABlACAAdABBAGwAdABlAHIAbgBhAHQAZQAgAFEAVwBlAGkAZwBoAHQATABpAGcAaAB0ACAASQB0AGEAbABpAGMASQB0AGEAbABpAGMATQBlAGQAaQB1AG0AIABJAHQAYQBsAGkAYwBCAGwAYQBjAGsAIABJAHQAYQBsAGkAYwACAAD/9wAA/z0AUAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAkAMkBAgDHAGIArQEDAQQAYwEFAK4AkAEGACUAJgD9AP8AZAEHAQgAJwDpAQkBCgAoAGUBCwEMAMgAygENAMsBDgEPACkAKgD4ARABEQESACsBEwAsAMwAzQDOAPoAzwEUARUBFgAtARcALgEYAC8BGQEaARsBHADiADAAMQEdAR4BHwEgAGYAMgDQANEAZwDTASEBIgCRASMArwCwADMA7QA0ADUBJAElASYANgEnAOQA+wEoASkANwEqASsBLAEtADgA1ADVAGgA1gEuAS8BMAExATIAOQA6ATMBNAE1ATYAOwA8AOsBNwC7ATgAPQE5AOYBOgE7AEQAaQE8AGsAbABqAT0BPgBuAT8AbQCgAUAARQBGAP4BAABvAUEBQgBHAOoBQwEBAEgAcAFEAUUAcgBzAUYAcQFHAUgASQBKAPkBSQFKAUsASwFMAEwAdAB2AHcBTQB1AU4BTwFQAE0BUQBOAVIATwFTAVQBVQFWAOMAUABRAVcBWAFZAVoAeABSAHkAewB8AHoBWwFcAKEBXQB9ALEAUwDuAFQAVQFeAV8BYABWAWEA5QD8AWIBYwCJAFcBZAFlAWYBZwBYAH4AgACBAH8BaAFpAWoBawFsAFkAWgFtAW4BbwFwAFsAXADsAXEAugFyAF0BcwDnAXQBdQF2AXcBeAF5AXoBewF8AMAAwQF9AX4BfwCfAJsAEwAUABUAFgAXABgAGQAaABsAHAGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagA8QDyAPMBqQGqAasBrAGtAa4AvAD0APUA9gGvAbABsQGyAA0BswA/AMMAhwAdAA8AqwAEAKMABgARACIAogAFAAoAHgASAEIAXgBgAD4AQAALAAwAswCyABAAqQCqAL4AvwDFALQAtQC2ALcAxAADAIQAvQAHAbQApgCFAJYADgDvAPAAuAAgAI8AIQAfAJUAlACTAKcAYQCkAbUAkgCcAbYAmgCZAKUBtwCYAAgAxgG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwC5AcQBxQHGAccByAHJACMACQCIAIYAiwCKAcoAjACDAF8A6ACCAMIBywHMAEEBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAI0A2wDhAN4A2ACOANwAQwDfANoA4ADdANkB3gHfAeAB4QHiAeMB5AHlANcB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgAGQWJyZXZlB0FtYWNyb24HQW9nb25lawpBcmluZ2FjdXRlB0FFYWN1dGULQ2NpcmN1bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRGNyb2F0BkVicmV2ZQZFY2Fyb24KRWRvdGFjY2VudAdFbWFjcm9uB0VvZ29uZWsLR2NpcmN1bWZsZXgMR2NvbW1hYWNjZW50Ckdkb3RhY2NlbnQESGJhcgdJbWFjcm9uB0lvZ29uZWsGSXRpbGRlC0pjaXJjdW1mbGV4DEtjb21tYWFjY2VudAZMYWN1dGUGTGNhcm9uDExjb21tYWFjY2VudARMZG90Bk5hY3V0ZQZOY2Fyb24MTmNvbW1hYWNjZW50A0VuZw1PaHVuZ2FydW1sYXV0B09tYWNyb24LT3NsYXNoYWN1dGUGUmFjdXRlBlJjYXJvbgxSY29tbWFhY2NlbnQGU2FjdXRlC1NjaXJjdW1mbGV4DFNjb21tYWFjY2VudARUYmFyBlRjYXJvbghUY2VkaWxsYQxUY29tbWFhY2NlbnQNVWh1bmdhcnVtbGF1dAdVbWFjcm9uB1VvZ29uZWsFVXJpbmcGVXRpbGRlBldhY3V0ZQtXY2lyY3VtZmxleAlXZGllcmVzaXMGV2dyYXZlC1ljaXJjdW1mbGV4BllncmF2ZQZaYWN1dGUKWmRvdGFjY2VudAZHLnNzMDEGYWJyZXZlB2FtYWNyb24HYW9nb25lawphcmluZ2FjdXRlB2FlYWN1dGULY2NpcmN1bWZsZXgKY2RvdGFjY2VudAZkY2Fyb24GZWJyZXZlBmVjYXJvbgplZG90YWNjZW50B2VtYWNyb24HZW9nb25lawtnY2lyY3VtZmxleAxnY29tbWFhY2NlbnQKZ2RvdGFjY2VudARoYmFyCmlkb3RhY2NlbnQHaW1hY3Jvbgdpb2dvbmVrBml0aWxkZQtqY2lyY3VtZmxleAxrY29tbWFhY2NlbnQGbGFjdXRlBmxjYXJvbgxsY29tbWFhY2NlbnQEbGRvdAZuYWN1dGUGbmNhcm9uDG5jb21tYWFjY2VudANlbmcNb2h1bmdhcnVtbGF1dAdvbWFjcm9uC29zbGFzaGFjdXRlBnJhY3V0ZQZyY2Fyb24McmNvbW1hYWNjZW50BnNhY3V0ZQtzY2lyY3VtZmxleAxzY29tbWFhY2NlbnQEdGJhcgZ0Y2Fyb24IdGNlZGlsbGEMdGNvbW1hYWNjZW50DXVodW5nYXJ1bWxhdXQHdW1hY3Jvbgd1b2dvbmVrBXVyaW5nBnV0aWxkZQZ3YWN1dGULd2NpcmN1bWZsZXgJd2RpZXJlc2lzBndncmF2ZQt5Y2lyY3VtZmxleAZ5Z3JhdmUGemFjdXRlCnpkb3RhY2NlbnQGYS5zczAxBmcuc3MwMgZ0LnNzMDMDZl9mBWZfZl9pBWZfZl9sA2ZfdANmX3kDdF9pA3RfdAN0X3kHemVyby50ZgZvbmUudGYGdHdvLnRmCHRocmVlLnRmB2ZvdXIudGYHZml2ZS50ZgZzaXgudGYIc2V2ZW4udGYIZWlnaHQudGYHbmluZS50Zg16ZXJvLmluZmVyaW9yDG9uZS5pbmZlcmlvcgx0d28uaW5mZXJpb3IOdGhyZWUuaW5mZXJpb3INZm91ci5pbmZlcmlvcg1maXZlLmluZmVyaW9yDHNpeC5pbmZlcmlvcg5zZXZlbi5pbmZlcmlvcg5laWdodC5pbmZlcmlvcg1uaW5lLmluZmVyaW9yCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQlmaXZlLmRub20Ic2l4LmRub20Kc2V2ZW4uZG5vbQplaWdodC5kbm9tCW5pbmUuZG5vbQl6ZXJvLm51bXIIb25lLm51bXIIdHdvLm51bXIKdGhyZWUubnVtcglmb3VyLm51bXIJZml2ZS5udW1yCHNpeC5udW1yCnNldmVuLm51bXIKZWlnaHQubnVtcgluaW5lLm51bXINemVyby5zdXBlcmlvcg1mb3VyLnN1cGVyaW9yDWZpdmUuc3VwZXJpb3IMc2l4LnN1cGVyaW9yDnNldmVuLnN1cGVyaW9yDmVpZ2h0LnN1cGVyaW9yDW5pbmUuc3VwZXJpb3IJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMIYXN0ZXJpc20ERXVybwhlbXB0eXNldAlpbmNyZW1lbnQFbWljcm8HYXJyb3d1cAdhcnJvd05FCmFycm93cmlnaHQHYXJyb3dTRQlhcnJvd2Rvd24HYXJyb3dTVwlhcnJvd2xlZnQHYXJyb3dOVwlhcnJvd2JvdGgJYXJyb3d1cGRuC2NpcmNsZWJsYWNrBmNpcmNsZQlmaWxsZWRib3gLc3F1YXJld2hpdGUHdHJpYWd1cA90cmlhbmdsZXVwd2hpdGUFcGVhY2UFY2hlY2sOc291bmRjb3B5cmlnaHQJZXN0aW1hdGVkBm51bWVybwZtaW51dGUPcmVnaXN0ZXJlZC5zczAxDGRpZXJlc2lzY29tYg1kb3RhY2NlbnRjb21iCWdyYXZlY29tYglhY3V0ZWNvbWIQaHVuZ2FydW1sYXV0Y29tYg5jaXJjdW1mbGV4Y29tYgljYXJvbmNvbWIJYnJldmVjb21iCHJpbmdjb21iCXRpbGRlY29tYgptYWNyb25jb21iFGNvbW1hdHVybmVkYWJvdmVjb21iD2NvbW1hYWNjZW50Y29tYgtjZWRpbGxhY29tYg1zbGFzaGxvbmdjb21iE2JyYWNrZXRsZWZ0c3VwZXJpb3IUYnJhY2tldHJpZ2h0c3VwZXJpb3IDSVRGC0dicmV2ZS5zczAxEEdjaXJjdW1mbGV4LnNzMDERR2NvbW1hYWNjZW50LnNzMDEPR2RvdGFjY2VudC5zczAxBlEuc3MwNAhkb3RsZXNzagthYWN1dGUuc3MwMQthYnJldmUuc3MwMRBhY2lyY3VtZmxleC5zczAxDmFkaWVyZXNpcy5zczAxC2FncmF2ZS5zczAxDGFtYWNyb24uc3MwMQxhb2dvbmVrLnNzMDEKYXJpbmcuc3MwMQ9hcmluZ2FjdXRlLnNzMDELYXRpbGRlLnNzMDELZ2JyZXZlLnNzMDIQZ2NpcmN1bWZsZXguc3MwMhFnY29tbWFhY2NlbnQuc3MwMg9nZG90YWNjZW50LnNzMDIJdGJhci5zczAzC3RjYXJvbi5zczAzDXRjZWRpbGxhLnNzMDMRdGNvbW1hYWNjZW50LnNzMDMNY2Fyb25jb21iLmFsdA9zdHJva2VzaG9ydGNvbWIOc2xhc2hzaG9ydGNvbWIUc3Ryb2tlc2hvcnRjb21iLmNhc2UTc3Ryb2tlbG9uZ2NvbWIuY2FzZRNzbGFzaHNob3J0Y29tYi5jYXNlEnNsYXNobG9uZ2NvbWIuY2FzZQ9kb3RhY2NlbnRjb21iLmkAAQAB//8ADwABAAMAEgAAAAAAAAAAAAABPAACADEAAQABAAEADAAMAAEADgAPAAEAFQAVAAEAGQAZAAEAIwAkAAEAKQApAAEAKwArAAEANAA0AAEANgA2AAEAOAA4AAEAPgA/AAEAQwBDAAEARQBFAAEATABMAAEAUABQAAEAUwBTAAEAVwBXAAEAXQBdAAEAYgBiAAEAbABtAAEAcwBzAAEAeAB4AAEAfAB9AAEAiACIAAEAigCLAAEAkQCRAAEAlQCVAAEAoACgAAEApQClAAEApwCnAAEAsgCyAAEAtAC0AAEAugC7AAEAwQDBAAEAzADMAAEAzgDPAAEA0wDTAAEA2QDaAAEA3wDfAAEA6gDqAAEA7wDwAAEA9QD1AAEA+QD7AAEA/QEFAAEBuAHGAAMByAHTAAMB3AHdAAEB8AH3AAMAAQAAABAAAgAAABoAAACUAAEAAcAAwAAAAAByAAAAAQAAgYSFiY2Pmp+goqOkpaeoqqusrrG0tba6u72+v8DCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3uDh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+fr7/P3+AQIDBAUHCAoODxQVFxkeKDEyNDs8PkRKVFpbABEAAQABAAD/Ef8V/yT/Nf89/1L/Wf9t/3H/eP96/38AjACsALEAsgC9AAAAAQAAAAoAWgB0AAJERkxUAA5sYXRuABIAOAAAADQACEFaRSAANENBVCAANENSVCAANEtBWiAANE1PTCAANFJPTSAANFRBVCAANFRSSyAANAAA//8AAgAAAAEAAmtlcm4ADm1hcmsAFAAAAAEAAQAAAAEAAAACAAYPNAAEAAAAAQAIAAEADAAiAAcArAK+AAIAAwG4AcYAAAHIAdMADwHwAfcAGwABAEMAAQAMAA4ADwAVABkAIwAkACkAKwA0ADYAOAA+AD8AQwBFAEwAUABTAFcAXQBiAGwAbQBzAHgAfAB9AIgAigCLAJEAlQCgAKUApwCyALQAugC7AMEAzADOAM8A0wDZANoA3wDqAO8A8AD1APkA+gD7AP0A/gD/AQABAQECAQMBBAEFAdwB3QAjAAAAjgAAAJgAAACiAAAAsgAAALwAAADMAAAA3AAAAOYAAADwAAAA+gAAAQoAAAEUAAEBHgABAS4AAgE4AAABQgAAAVYAAQFMAAABVgAAAWAAAAFqAAABdAAAAX4AAAGIAAMBkgAAAZwAAAGmAAQBsAAFAcAABgHKAAUB1AAFAd4ABgHuAAUB+AAAAggAAwEtAuMBWmAeAAMAxQLjDCpgFAADASEC4wAKYAoAAAANgAAAAwCsAuMHmF/6AAMA+gLjAApf8AAAABaAAAADAR4C4wAKX+AAAAAYgAAAAwEUAuFf6ApWAAMBPALjCKJfxgADAPsC41/CX7wAAwEzAuMACl+yAAAAHIAAAAMBFwLjX6gLuAADAMYC4wrCX5gAAwBLAAYKFAAKAAAAX4AAAAMARgAACxIAAAADAR8BAF+GX5IAAwDqAuQJ6l9qAAMAbwATDSIHfAADANUC5Ar6X1YAAwDsAuQHPl9MAAMAewLGX0IAAAADANkC5AxaXzgAAwCwAuQMCl8uAAMAzQLkCk4LOgADALYAAAuAAAAAAwCyAuRfFl8QAAMA6gLkC7xfBgADAU8C4wAKXvwAAABVgAAAAwDzAmtfRgigAAMAqAGWBw5fDAADAN0Bcl7qXvwAAwG+AlIACgwWAAAAIYAAAAMA1QGkAAAFUAADAS4BcQW4AAoAAABMgAAAAwDEAuNepF6kAEMDrAO2AAADwAAAAAAAAAPQAAAAAAAAAAAAAAAAA+AD8AAAAAAAAAAAAAAD+gQEAAAAAAAAAAAAAAQOBBgAAAAAAAAEKAAABDIEPAAABEYAAAAAAAAEUARgAAAAAAAAAAAAAARqBHQAAAAAAAAAAAAABH4EiAAAAAAAAASSAAAEnASmAAAEsAAAAAAAAATABMoAAAAAAAAAAAAABNoE5AAAAAAAAAAAAAAE7gT4AAAAAAUCBRIFIgUyBTwAAAAAAAAAAAAABUYFVgAAAAAAAAAAAAAFYAVqAAAAAAAAAAAAAAV6BYQAAAWUAAAFpAAABa4AAAAAAAAAAAAAAAAFuAXIAAAAAAAAAAAAAAXSBeIAAAAAAAAAAAAABewF9gAAAAAAAAAAAAAGAAYKAAAAAAAABhQAAAYkBi4AAAY+BkgAAAAAAAAGWAAAAAAAAAAAAAAGaAZyAAAAAAAAAAAAAAaCBpIAAAAAAAAAAAAABqIGrAAAAAAAAAAAAAAGvAbMAAAAAAAAAAAAAAbWBuAAAAbqAAAAAAAABvQG/gAABw4AAAAAAAAHHgc0AAAAAAAAAAAAAAc+B0gAAAAAAAAAAAAAB1IHYgAAAAAHbAd8AAAHhgeQAAAHmgAAAAAAAAekB64AAAAAAAAAAAAAAAAAAAAAAAAAAAe4AAAAAAfCAAAAAAAAAAAAAAfYB+IAAAAAAAAAAAAAB+wH9gAAAAAIAAgQCCAIKgg0AAAAAAAAAAAAAAhECFQAAAAAAAAAAAAACF4Ibgh+AAAAAAAAAAAIjgieAAAAAAAAAAAAAAioCLgAAAAAAAAAAAAACMgMMgAAAAAAAAAAAAAI0gjiAAAAAAAAAAAAAAAACPIAAAAAAAAAAAAACPwJBgAAAAAJEAkmAAAJMAlAAAAJUAAAAAAAAAlaCWoAAAAAAAAAAAAACXoJigAAAAAAAAAAAAAJmgmqAAAAAAAAAAAAAAm6CcoAAAAAAAAAAAAACdoJ5AAACfQAAAAAAAAJ/goOAAAAAAAAAAAAAAoeCjQAAAAACkQKVAAAAAAKagAAAAAAAAAAAAAKegqQAAAAAAqgAAAAAAq2CsYAAAAACtYK5gAACvYLBgAAAAAAAAAAAAAAAAsWAAAAAAAAAAAAAAsmCzYAAAAAC0YLVgAAC2wLfAAAAAALjAucAAALrAvCAAAAAAvSC+gAAAv4DAgAAAAAAAAMEgAADCIMMgAADEIAAAAAAAAMUgAAAAAAAAAAAAAAAAADAaoC9gJyCLYAAwI1AAAEsgAAAAMCfwAAAAoAAAAAABSAAAADAnwC9gAKCJIAAABJgAAAAwF2AuMACgX0AAAAGoAAAAMBlgAABUoAAAADAc0C9ggiCGgAAwF2AAAFNgAAAAMBmQL2CFRangADASUAAAAKAAAAAABvgAAAAwDWAXIGYlqWAAMBhAL2AUIIMAADAQsAAFqgAAAAAwHyAAAFfgAAAAMBhgL2AAoHJgAAAGOAAAADAUgAAATAAAAAAwHKAvYEtgWEAAMBdgAABWAAAAADAcgC9gfeB+QAAwFQAAAD4AAAAAMBrgJTBEoFzAADAOwC9loQB8YAAwB9AAAGugAAAAMAwgAAAAoAAAAAAAeAAAADAfAC9gFeBS4AAwEHAAAACgAAAAAACYAAAAMBugL2AUQHiAADAT0AAAOEAAAAAwDqAuMFAFmsAAMBEgAAWbQAAAADATcC4wAKWZgAAAAGgAAAAwCYAZ4ACgVMAAEADYAAAAMAzAF8AAAACgAAAFGAAAADAhAC9gRCBzAAAwGaAAAC3gAAAAMB1wL2AAoHHAAAACOAAAADAV8AAAcGAAAAAwG0AsYDwFmOAAMBRAAAAAoAAAAAAD+AAAADAdsC9gRKBHQAAwFiAAAACgAAAAAASoAAAAMDNwAKAAoAAAAAACaAAAADAZ0BcgYCWRoAAwG/AukrPgCKAAMBsAL2AAoFvgAAAE2AAAADAWoAAAOcAAAAAwGJAvYACgQcAAAARYAAAAMBOAAAKCIAAAADAV8C9gRyBAIAAwD/AABY7AAAAAMBgQL2BWAGYgADAQkAAAByAAAAAwFDAWsACljCAAAALYAAAAMBwwL2BjgGPgADAUsAAAAKAAAAAAA4gAAAAwGrAAADlgAAAAMDhwLWAAoAbgABAAKAAAADAZAAAAAKAAAAAQAJgAAAAwJbAvYE+AX6AAMB4wAAAAoAAAAAACWAAAADAZYC9gAKBeAAAAAbgAAAAwFyAAAACgAAAAEACIAAAAMBagL2AeYFwAADAP8AAAAKAAAAAABHgAAAAwHTAvYACgMyAAAANYAAAAMBcgAAAlQAAAADAUkCEALuBYwAAwGHAAAD0AAAAAMBzQAAA1QAAAADAdgCEFfKBW4AAwIHAAAACgAAAAEAEIAAAAMDUP/xAApXvAABAAyAAAADAZACGQAKABAAAQABgAAAAQAOgAAAAwFAAAACFgAAAAMBRwIQAZ4FJAADAPcAAATUAAAAAwJQAhkCEgAKAAEAD4AAAAMA/AAABIAAAAADAooC8gAKAd4AAAAMgAAAAwH9AmwEsALiAAMBOAIQAtgE3AADAOgAAAJ4AAAAAwFYAAABsAAAAAMBRgIQAaYAxAADAOQAAFdGAAAAAwDrAmwC+AKmAAMAVAAAAAoAEAAAAFaAAAAAAFeAAAADAaECFQJmAawAAwDyAAABWAAAAAMA1ALxAdgEcAADAF0AAFakAAAAAwEfAvEACgKwAAAADoAAAAMAmwHWAAoDVgAAAGKAAAADAJoBgwKQAFgAAwHvAhABmgQ4AAMBmgAAAAoAAAAAAGqAAAADAWICEAAKBB4AAAAsgAAAAwEFAABWRgAAAAMBWgIQAAoEBAAAADeAAAADARYAAAAKAAAAAABSgAAAAwEuAPtWHAAKAAAAT4AAAAMBdwIVAAoA9gAAAGeAAAADAUUAAChOAAAAAwD9AhUACgDcAAAAbIAAAAMAqAAAAAoAAAAAAGmAAAADAQoCEAKYA2QAAwELAhEACgFcAAAANIAAAAMAwgAAVdwACgAAAFmAAAADAF8AAAK0AAAAAwDfAhUA2ACIAAMAkgAAVaYAAAADATgC4wAKABAAAAATgAAAAAA+gAAAAwC8ATgBZAL2AAMBYAIQAAoDMgAAAC+AAAADAQwAAAAKAAAAAAA6gAAAAwHrAAAAVAAAAAMBvAIQAAoDCAAAACSAAAADAWsAAAAKAAAAAAAngAAAAwE8AhVVMgAKAAAAbYAAAAMA4AAAAAoAAAAAACiAAAADAUcCEAAKAsgAAAAVgAAAAwB7AAAACgAAAAAAcYAAAAMBHgIQAAoCqAAAADaAAAADAMoAAAAKAAAAAAA9gAAAAwFYAhACggKIAAMByAAAAAoAAAAAACuAAAADAhEAAAHIAAAAAwEtAhAACgJkAAAAVIAAAAMA+QAAAAoAAAAAAFiAAAADAN8CjgAKABAAAAAugAAAAABEgAAAAwDLAAAACgAAAAAAGYAAAAMBMQLkAApUVgAAAAiAAAADAMgBJAAKABAAAABCgAAAAABdgAAAAwLQAAAACgAAAAAAIoAAAAMDigLvAAoAEAABAAaAAAAAADKAAAADAwYAAAAKAAAAAQAHgAAAAwPpAvEACgAQAAEAAIAAAAAAO4AAAAMCWgKqAAoBBgAAAACAAAADAfUAAAAKAAAAAAACgAAAAwN4Am8ACgEMAAEABIAAAAMCHwE4AAoBNgAAABCAAAADAnMCEAAKAWwAAAALgAAAAwGnAAAACgAAAAAAboAAAAMBcwAAAAoAAAAAAECAAAADAkAC8QAKATYAAAADgAAAAwHJAAAACgAAAAAABYAAAAMCxwKUABoACgAAAB6AAAADAgYB1gAKABAAAAAdgAAAAQAFgAAAAwD4AqoACgBQAAAAIIAAAAMBjwAAAAoAAAAAABKAAAADAhcCbwAKAFYAAQALgAAAAwC+ATgACgCAAAAASIAAAAMCWAKqAAoAEAABAAqAAAAAABGAAAADAe0AAAAKAAAAAAABgAAAAwN3Am8ACgAQAAEAA4AAAAAAQ4AAAAMCHQE4AAoANAAAAAqAAAADAowCEAAKAGoAAAAEgAAAAwHAAABSzgAAAAMAvAE4AAoACgAAAE6AAAADALECEAAKAEAAAAAxgAAAAwBdAAAACgAAAAAAOYAAAAMApwAAAAoAAAAAAA+AAAADALACEAAKABAAAAAwgAAAAAAqgAAAAgAIAAIACjLEAAECfABEAAABOQM6AzoDOgM6AzoDOgM6AzoDOgM6AzoJQAlAA2YFHgUeBR4FHgUeBR4FOAU4BTgFOAlACUAJQAlACUAJQAlACUAJQAlABVII0gjSCNII0gjSCPII8gj6CPoJFAkUCRQJFAkUCRQyaDJoMmgyaDJoMmgyaDJoMmgyaAlACU4LzA08DmoOag5qDmoOig6KDooOig6KDooOng6eDp4Ong6eDsoOyg7KDsoOyg7KDsoOyg7KDsoO2BPAE8ATwBPAE8AT5hd+F34Xfhd+F34XpBekF6QXpDJoF74Xvhe+F74Xvhe+F74Xvhe+F74XvhhCGEIYaBfSF9IX0hfSF9IX0hhoGBoYQhhCGEIYQhhCGEIYQhhCGEIYQiAsF/IX8hfyF/IX8hguGC4ygjKCMoIygjKCMoIygjKCMoIygjKCF/oX+hgaGC4YLhguGC4YLhguGC4YaBhoGGgYaBhoGGgYaBhoGGgYaBhCGGgYaBiIGMwYzBjMGMwY8hjyGPIY8hjyGPIZEjKmMqYZ2jKmMqYyijKKMooyijKKMooyijKKMooyihrAHYwdjB2MHYwdjB24IFIgUiBSIFIgUiAYIBggGCAYMooykjKmICwygjKmIFIygjKCMqYgUiB+INQhDCGYIh4ipCL0I0okEiSAJNwk6iTyJPolFCUiJSolSieOJ7oltCW0JVIltCX+JsYnjieOJ7onyCx6LHoseiyOLI4sjizMLNoszCzaLZQtEi1QLRItUC2ULd4t5i3uLfYt/i4MLyIyYDJgMmgyaDJoMmgygjKCMooyijKKMooyijKKMooyijKKMooykjKSMpIykjKmMqYypjKmAAIAHwABACgAAAA0AD0AKABFAJAAMgCSAJMAfgCVALMAgAC2ALYAnwC6AP0AoAD/AQEA5AEDAQUA5wEIAREA6gEZARkA9AEnAScA9QEqASoA9gEtAS0A9wEwATEA+AE3ATcA+gFEAUQA+wFMAUwA/AFRAVMA/QFVAVUBAAFXAV0BAQFfAV8BCAFhAWEBCQFjAWMBCgFlAXMBCwF1AXYBGgF4AXgBHAGmAacBHQGrAawBHwHXAdoBIQHcAe8BJQAHAGz/jU8eAOn/zk82AVj/xE9IAV0AFE8YAab/3QAAAaf/7E82Aa3/pgAAAEkAAf/2AAAAAv/2AAAAA//2AAAABP/2AAAABf/2AAAABv/2AAAAB//2AAAACP/2AAAACf/2AAAACv/2AAAAC//2AAAADP/2AAAADf/2AAAANAAKTxYANQAKTxYAXf/sTxYAXv/sTxYAX//sTxYAYP/sTxYAYf/sTxYAYgAATxYAYwAATxYAZAAATxYAZQAATxYAZgAATxYAZwAATxYAaAAATxYAaQAATxYAagAATxYAawAATxYAbP/nAAAAbf/sAAAAbv/sAAAAb//sAAAAcP/sAAAAcf/sAAAAcv/nTvIAc//dTwoAdP/dTwoAdf/dTwoAdv/dTwoAd//dTwoA6f/2AAAA6v/2AAAA6//2AAAA7P/2AAAA7f/2AAAA7v/2AAAA8P/2AAAA8f/2AAAA8v/2AAAA8//2AAAA9P/2AAAA+gAATxYBTAAUTuwBUv/xAAABU//xAAABV//xAAABWgAUTuwBWwAUTuwBXQAATxYBZf/2AAABZv/2AAABZ//2AAABbQAATxYBbgAATuwBbwAATxYBcAAATuwBrf/nAAAB6AAATxYB6QAATxYB6gAATxYB6wAATxYABABs/9hNWABy//ZNXgFd//FNOgGt/+JNWAAEAGz/xE0+AHL/zk1KAV3/7AAAAa3/zk0+AJUAAf/TAAAAAv/TAAAAA//TAAAABP/TAAAABf/TAAAABv/TAAAAB//TAAAACP/TAAAACf/TAAAACv/TAAAAC//TAAAADP/TAAAADf/TAAAANP/ETSQANf/ETSQAff/YAAAAfv/YAAAAf//YAAAAgP/YAAAAgf/YAAAAgv/YAAAAg//YAAAAhP/YAAAAhf/YAAAAhv/YAAAAh//YAAAAiP/YAAAAif/YAAAAi//aAAAAjP/aAAAAjf/aAAAAjv/aAAAAj//aAAAAkP/aAAAAkf/aAAAAkv/aAAAAk//aAAAAlP/aAAAAlf/aAAAAlv/aAAAAl//aAAAAmP/aAAAAmf/aAAAAmv/aAAAAm//aAAAAnP/aAAAAnf/aAAAAnv/aAAAAoP/iAAAAof/iAAAAov/iAAAAo//iAAAApP/iAAAAuv/iAAAAu//iAAAAvP/iAAAAvf/iAAAAvv/iAAAAv//iAAAAwP/iAAAAwf/aAAAAwv/aAAAAw//aAAAAxP/aAAAAxf/aAAAAxv/aAAAAx//aAAAAyP/aAAAAyf/aAAAAyv/aAAAAy//aAAAAzP/iAAAAzv/aAAAAz//iAAAA0P/iAAAA0f/iAAAA0v/iAAAA0//iTSQA1P/iTSQA1f/iTSQA1v/iTSQA1//iTSQA2P/iTSQA3//iAAAA4P/iAAAA4f/iAAAA4v/iAAAA4//iAAAA5P/iAAAA5f/iAAAA5v/iAAAA5//iAAAA6P/iAAAA6f/iTR4A6v/iTR4A6//iTR4A7P/iTR4A7f/iTR4A7v/iTR4A7//iTR4A8P/iTR4A8f/iTR4A8v/iTR4A8//iTR4A9P/iTR4A9f/sTR4A9v/sTR4A9//sTR4A+P/sTR4A+f/aAAAA+v/YAAABTAAUTQABUv+SAAABU/+SAAABV/+SAAABWgAUTQABWwAUTQABXf/EAAABYAAUTR4BYgAUTR4BZAAUTR4BZf/sAAABZv/sAAABZ//sAAABaP/2AAABav/2AAABbQAUTQABbgAUTR4BbwAUTQABcAAUTR4Bpv/2TR4Bp//iAAABqwAPTPoBrAAPTPoBrQAUTSoB3v/aAAAB3//aAAAB4P/aAAAB4f/aAAAB4v/aAAAB4//aAAAB5P/aAAAB5f/aAAAB5v/aAAAB5//aAAAB6P/YAAAB6f/YAAAB6v/YAAAB6//YAAAABQBs/8lJpAFdAABJsAGmAABJpAGnAABJngGt/9hJsAABAV3/7AAAAAQA6f/ESXwBXQAKAAABpv/OAAABp//OSXYABwBs/6ZJYgDp/9gAAAFY/7pJbgFdAApJYgGm/+IAAAGn//YAAAGt/5wAAAACAOn/4klCAaf/7Ek2AGoAAf/TSSIAAv/TSSIAA//TSSIABP/TSSIABf/TSSIABv/TSSIAB//TSSIACP/TSSIACf/TSSIACv/TSSIAC//TSSIADP/TSSIADf/TSSIANP/ESSIANf/ESSIAff/2SPgAfv/2SPgAf//2SPgAgP/2SPgAgf/2SPgAgv/2SPgAg//2SPgAhP/2SPgAhf/2SPgAhv/2SPgAh//2SPgAiP/2SPgAif/2SPgAi//2SPgAjP/2SPgAjf/2SPgAjv/2SPgAj//2SPgAkP/2SPgAkf/2SPgAkv/2SPgAk//2SPgAlP/2SPgAlf/2SPgAlv/2SPgAl//2SPgAmP/2SPgAmf/2SPgAmv/2SPgAm//2SPgAnP/2SPgAnf/2SPgAnv/2SPgAoP/2SPgAof/2SPgAov/2SPgAo//2SPgApP/2SPgAwf/2SPgAwv/2SPgAw//2SPgAxP/2SPgAxf/2SPgAxv/2SPgAx//2SPgAyP/2SPgAyf/2SPgAyv/2SPgAy//2SPgAzv/2SPgA0wAASSIA1AAASSIA1QAASSIA1gAASSIA1wAASSIA2AAASSIA+f/2SPgA+v/xAAABTAAUAAABUv+ISRABU/+ISRABV/+ISRABWgAUAAABWwAUAAABXf/ESSIBZf/iAAABZv/iAAABZ//iAAABaP/sAAABav/sAAABbv/2SSIBcP/2SSIBpgAKAAABp//iAAABqwAUAAABrAAUAAABrf/sSSgB3v/2SPgB3//2SPgB4P/2SPgB4f/2SPgB4v/2SPgB4//2SPgB5P/2SPgB5f/2SPgB5v/2SPgB5//2SPgB6P/xAAAB6f/xAAAB6v/xAAAB6//xAAAAPQAB/+JGqgAC/+JGqgAD/+JGqgAE/+JGqgAF/+JGqgAG/+JGqgAH/+JGqgAI/+JGqgAJ/+JGqgAK/+JGqgAL/+JGqgAM/+JGqgAN/+JGqgBs/85GpABt/9hGqgBu/9hGqgBv/9hGqgBw/9hGqgBx/9hGqgBy/8RGtgBz/7BGkgB0/7BGkgB1/7BGkgB2/7BGkgB3/7BGkgDTAABGqgDUAABGqgDVAABGqgDWAABGqgDXAABGqgDYAABGqgDpAABGpADqAABGpADrAABGpADsAABGpADtAABGpADuAABGpADvAABGpADwAABGpADxAABGpADyAABGpADzAABGpAD0AABGpAFM/+xGsAFS/8RGpAFT/8RGpAFX/8RGpAFa/+xGsAFb/+xGsAFd/+JGpAFlAAoAAAFmAAoAAAFnAAoAAAFt/9hGpAFu/9hGhgFv/9hGpAFw/9hGhgGn//ZGpAGr//ZGpAGs//ZGpAGt/9hGsAAyAAH/8QAAAAL/8QAAAAP/8QAAAAT/8QAAAAX/8QAAAAb/8QAAAAf/8QAAAAj/8QAAAAn/8QAAAAr/8QAAAAv/8QAAAAz/8QAAAA3/8QAAAF3/5wAAAF7/5wAAAF//5wAAAGD/5wAAAGH/5wAAAGz/zkU0AG3/00UcAG7/00UcAG//00UcAHD/00UcAHH/00UcAHL/3UUcAHP/ukUuAHT/ukUuAHX/ukUuAHb/ukUuAHf/ukUuAHgAAEUWAHkAAEUWAHoAAEUWAHsAAEUWAUz/9gAAAVL/7AAAAVP/7AAAAVf/7AAAAVr/9gAAAVv/9gAAAV3/7EU6AWz/4gAAAW3/4kVAAW7/2AAAAW//4kVAAXD/2AAAAXH/4gAAAav/9kU0Aaz/9kU0Aa3/zkU6AAUAbP/nQ+4A6f/2RAYBpv/2RAYBp//YRAYBrf/iRAYAAwBs/91D4AFdAApD8gGt/+xD7AAHAGwACgAAAOn/zkPYAO//zkPYAV3/sEPYAab/4gAAAaf/2EPSAa0AHgAAAAIBXf/sAAABp//xQ44A0QAB/5dDngAC/5dDngAD/5dDngAE/5dDngAF/5dDngAG/5dDngAH/5dDngAI/5dDngAJ/5dDngAK/5dDngAL/5dDngAM/5dDngAN/5dDngAP/+JDmAAQ/+JDmAAR/+JDmAAS/+JDmAAT/+JDmAAU/+JDmAAk/+JDmAAl/+JDmAAm/+JDmAAn/+JDmAAo/+JDmAA0/6FDngA1/6FDngBF/+JDmABG/+JDmABH/+JDmABI/+JDmABJ/+JDmABK/+JDmABL/+JDmABM/+JDmABN/+JDmABO/+JDmABP/+JDmABS/+JDmABXAABDmABYAABDmABZAABDmABaAABDmABbAABDmABcAABDmABdAAoAAABeAAoAAABfAAoAAABgAAoAAABhAAoAAAB8/+JDmAB9/6ZDngB+/6ZDngB//6ZDngCA/6ZDngCB/6ZDngCC/6ZDngCD/6ZDngCE/6ZDngCF/6ZDngCG/6ZDngCH/6ZDngCI/6ZDngCJ/6ZDngCL/6ZDngCM/6ZDngCN/6ZDngCO/6ZDngCP/6ZDngCQ/6ZDngCR/6ZDngCS/6ZDngCT/6ZDngCU/6ZDngCV/6ZDngCW/6ZDngCX/6ZDngCY/6ZDngCZ/6ZDngCa/6ZDngCb/6ZDngCc/6ZDngCd/6ZDngCe/6ZDngCf/+JDqgCg/6ZDngCh/6ZDngCi/6ZDngCj/6ZDngCk/6ZDngC6/8RDngC7/8RDngC8/8RDngC9/8RDngC+/8RDngC//8RDngDA/8RDngDB/6ZDngDC/6ZDngDD/6ZDngDE/6ZDngDF/6ZDngDG/6ZDngDH/6ZDngDI/6ZDngDJ/6ZDngDK/6ZDngDL/6ZDngDM/8RDngDO/6ZDngDP/8RDngDQ/8RDngDR/8RDngDS/8RDngDT/7VDhgDU/7VDhgDV/7VDhgDW/7VDhgDX/7VDhgDY/7VDhgDa/+xDngDb/+xDngDc/+xDngDd/+xDngDe/+xDngDf/8RDngDg/8RDngDh/8RDngDi/8RDngDj/8RDngDk/8RDngDl/8RDngDm/8RDngDn/8RDngDo/8RDngDp/9hDngDq/85DngDr/85DngDs/85DngDt/85DngDu/85DngDv/85DngDw/9hDngDx/9hDngDy/9hDngDz/9hDngD0/9hDngD1/8RDhgD2/8RDhgD3/8RDhgD4/8RDhgD5/6ZDngD6/6ZDngD7/+xDngD8/+JDqgD9/+JDqgD+/+JDqgD//+JDqgEA/+JDqgEB/+JDqgEC/+JDqgED/+xDngEE/+xDngEF/+xDngFMABQAAAFR/85DngFS/5xDmAFT/5xDmAFX/5xDmAFY/+xDngFaABQAAAFbABQAAAFc/85DngFd/5xDhgFl/7BDngFm/7BDngFn/7BDngFo/7BDngFp/7pDjAFq/7BDngFr/7pDjAFs/7AAAAFx/7AAAAGm/85DngGn/7pDngGr//ZDmAGs//ZDmAHX/+JDmAHY/+JDmAHZ/+JDmAHa/+JDmAHb/+JDmAHe/6ZDngHf/6ZDngHg/6ZDngHh/6ZDngHi/6ZDngHj/6ZDngHk/6ZDngHl/6ZDngHm/6ZDngHn/6ZDngHo/6ZDngHp/6ZDngHq/6ZDngHr/6ZDngHs/+xDngHt/+xDngHu/+xDngHv/+xDngAGAOn/2D62AO//4j62AVj/7D62AV3/uj7CAab/3T6wAaf/xD62AJkAD//YPpAAEP/YPpAAEf/YPpAAEv/YPpAAE//YPpAAFP/YPpAAJP/YPpAAJf/YPpAAJv/YPpAAJ//YPpAAKP/YPpAANP/sPpAANf/sPpAARf/YPpAARv/YPpAAR//YPpAASP/YPpAASf/YPpAASv/YPpAAS//YPpAATP/YPpAATf/YPpAATv/YPpAAT//YPpAAUv/YPpAAfP/YPpAAff/sPpAAfv/sPpAAf//sPpAAgP/sPpAAgf/sPpAAgv/sPpAAg//sPpAAhP/sPpAAhf/sPpAAhv/sPpAAh//sPpAAiP/sPpAAif/sPpAAi//YPpAAjP/YPpAAjf/YPpAAjv/YPpAAj//YPpAAkP/YPpAAkf/YPpAAkv/YPpAAk//YPpAAlP/YPpAAlf/YPpAAlv/YPpAAl//YPpAAmP/YPpAAmf/YPpAAmv/YPpAAm//YPpAAnP/YPpAAnf/YPpAAnv/YPpAAn//sPpAAoP/sAAAAof/sAAAAov/sAAAAo//sAAAApP/sAAAAwf/YPpAAwv/YPpAAw//YPpAAxP/YPpAAxf/YPpAAxv/YPpAAx//YPpAAyP/YPpAAyf/YPpAAyv/YPpAAy//YPpAAzv/YPpAA2v/sPpAA2//sPpAA3P/sPpAA3f/sPpAA3v/sPpAA3//nPooA4P/nPooA4f/nPooA4v/nPooA4//nPooA5P/nPooA5f/nPooA5v/nPooA5//nPooA6P/nPooA6f/iPooA6v/iPooA6//iPooA7P/iPooA7f/iPooA7v/iPooA8P/iPooA8f/iPooA8v/iPooA8//iPooA9P/iPooA+f/YPpAA+//sPpAA/P/sPpAA/f/sPpAA/v/sPpAA///sPpABAP/sPpABAf/sPpABAv/sPpABA//sPpABBP/sPpABBf/sPpABUf/sPpABWP/YPpwBXP/sPpABYAAeAAABYgAeAAABZAAeAAABZf/EPpwBZv/EPpwBZ//EPpwBaP/EPpABav/EPpABbf/sPpABbv/2PooBb//sPpABcP/2PooBpv/YPpABp//YPpwBq//YPpABrP/YPpAB1//YPpAB2P/YPpAB2f/YPpAB2v/YPpAB2//YPpAB3v/YPpAB3//YPpAB4P/YPpAB4f/YPpAB4v/YPpAB4//YPpAB5P/YPpAB5f/YPpAB5v/YPpAB5//YPpAB7P/sPpAB7f/sPpAB7v/sPpAB7//sPpAABgDp/7o7BADv/8k7BAFY/+I68gFd/5w65gGm/7o6+AGn/6s6ngAEAOn/9jrYAV0AFDquAab/9jrYAacAADquAAMAbP+mOrgA6f/iOqwBrf/YAAAABQBs/6Y6sABy/9g6pADp//E6hgDv/+c6ngGt/84AAAABAGz/2AAAAAUAbP/YOmQA7wAUAAABpv/sOnwBp//YOnwBrf/sAAAAAwFUAEY6GgFYAFA6FAGtAHg6JgADAGz/xDpIAOn/8ToYAa3/2AAAAAYAbP+cOkAAcv/YOjQA6f/nOigA7//nOi4BewAeAAABrf/OAAAABQBs/5w6CABy/9g6DgDp/+I6CADv/+c6CAGt/84AAAALAF3/xAAAAF7/xAAAAF//xAAAAGD/xAAAAGH/xAAAAGz/xDnuAG3/zjncAG7/zjncAG//zjncAHD/zjncAHH/zjncAAYAbP/OOZgA6QAPAAAA7wAeAAABXf/YOaoBpgAKAAABp//iAAAABQBs/6E5KgDp/+w5VADv//Y5fgFdABQ5igGt/845hAAhAGz/oTkKAOn/7AAAAOr/9jlqAOv/9jlqAOz/9jlqAO3/9jlqAO7/9jlqAO//9gAAAPD/9jlqAPH/9jlqAPL/9jlqAPP/9jlqAPT/9jlqAPX/9gAAAPb/9gAAAPf/9gAAAPj/9gAAAUz/9jlqAVL/9gAAAVP/9gAAAVf/9gAAAVr/9jlqAVv/9jlqAV0AFDlqAWn/2DlMAWv/2DlMAW3/7DlqAW7/7DlqAW//7DlqAXD/7DlqAav/7DlqAaz/7DlqAa3/4gAAACYAcv/sOJwAigAUOHgApQAUOHgApgAUOHgApwAeOE4AqAAeOE4AqQAeOE4AqgAeOE4AqwAeOE4ArAAeOE4ArQAeOE4ArgAeOE4ArwAeOE4AsAAUOHgAsQAUOHgAsgAUOHgAswAUOHgAtAAUOHgAtQAUOHgAtgAUOHgAtwAUOHgAuAAUOHgAuQAUOHgAzQAUOHgA2QAUOHgA7wAUAAABWAAeOE4BYAAoOE4BYgAoOE4BZAAoOE4BbQAUOHgBbgAUOHgBbwAUOHgBcAAUOHgBpgAKAAABrQA8OGYB3AAeOE4B3QAUOHgAdwAB/9g3tgAC/9g3tgAD/9g3tgAE/9g3tgAF/9g3tgAG/9g3tgAH/9g3tgAI/9g3tgAJ/9g3tgAK/9g3tgAL/9g3tgAM/9g3tgAN/9g3tgA0/+IAAAA1/+IAAABd/843tgBe/843tgBf/843tgBg/843tgBh/843tgBs/9g3tgBt/9g3tgBu/9g3tgBv/9g3tgBw/9g3tgBx/9g3tgBy/+I3sABz/7o3wgB0/7o3wgB1/7o3wgB2/7o3wgB3/7o3wgB4/+w3kgB5/+w3kgB6/+w3kgB7/+w3kgB9/+c3qgB+/+c3qgB//+c3qgCA/+c3qgCB/+c3qgCC/+c3qgCD/+c3qgCE/+c3qgCF/+c3qgCG/+c3qgCH/+c3qgCI/+c3qgCJ/+c3qgCL/+c3sACM/+c3sACN/+c3sACO/+c3sACP/+c3sACQ/+c3sACR/+c3sACS/+c3sACT/+c3sACU/+c3sACV/+c3sACW/+c3sACX/+c3sACY/+c3sACZ/+c3sACa/+c3sACb/+c3sACc/+c3sACd/+c3sACe/+c3sACg/+c3qgCh/+c3qgCi/+c3qgCj/+c3qgCk/+c3qgDB/+c3sADC/+c3sADD/+c3sADE/+c3sADF/+c3sADG/+c3sADH/+c3sADI/+c3sADJ/+c3sADK/+c3sADL/+c3sADO/+c3sADT//Y3mADU//Y3mADV//Y3mADW//Y3mADX//Y3mADY//Y3mAD5/+c3sAD6/+cAAAFS/5w3wgFT/5w3wgFX/5w3wgFd/+I3tgFl/9g3sAFm/9g3sAFn/9g3sAFo/+w3sAFq/+w3sAGmAAA3sAGn/9g3sAHe/+c3sAHf/+c3sAHg/+c3sAHh/+c3sAHi/+c3sAHj/+c3sAHk/+c3sAHl/+c3sAHm/+c3sAHn/+c3sAHo/+cAAAHp/+cAAAHq/+cAAAHr/+cAAAAHAGz/zjTqAHL/4jTkAO8ACgAAAV3/7DTqAaYAADTkAaf/2DTkAa3/7AAAAGUANP/iNMoANf/iNMoAXf/ONL4AXv/ONL4AX//ONL4AYP/ONL4AYf/ONL4AbP/ONL4Abf/iNL4Abv/iNL4Ab//iNL4AcP/iNL4Acf/iNL4Ac//JNMoAdP/JNMoAdf/JNMoAdv/JNMoAd//JNMoAi//nNLgAjP/nNLgAjf/nNLgAjv/nNLgAj//nNLgAkP/nNLgAkf/nNLgAkv/nNLgAk//nNLgAlP/nNLgAlf/nNLgAlv/nNLgAl//nNLgAmP/nNLgAmf/nNLgAmv/nNLgAm//nNLgAnP/nNLgAnf/nNLgAnv/nNLgAwf/nNLgAwv/nNLgAw//nNLgAxP/nNLgAxf/nNLgAxv/nNLgAx//nNLgAyP/nNLgAyf/nNLgAyv/nNLgAy//nNLgAzv/nNLgA0//2NL4A1P/2NL4A1f/2NL4A1v/2NL4A1//2NL4A2P/2NL4A2gAUAAAA2wAUAAAA3AAUAAAA3QAUAAAA3gAUAAAA6gAKAAAA6wAKAAAA7AAKAAAA7QAKAAAA7gAKAAAA8AAKAAAA8QAKAAAA8gAKAAAA8wAKAAAA9AAKAAAA+f/nNLgA+wAUAAABAwAUAAABBAAUAAABBQAUAAABUv/2NLgBU//2NLgBV//2NLgBZf/ONL4BZv/ONL4BZ//ONL4BaP/iNLgBav/iNLgBpv/2NL4Bp//sNLgBrf/sAAAB3v/nNLgB3//nNLgB4P/nNLgB4f/nNLgB4v/nNLgB4//nNLgB5P/nNLgB5f/nNLgB5v/nNLgB5//nNLgB7AAUAAAB7QAUAAAB7gAUAAAB7wAUAAAAAwBs/9gyXgGn//YyZAGt/9MAAAAGAHIAADJKAVgAFAAAAV3/2DJEAaYACgAAAaf/7AAAAa0AHjJEAAcAbP/YMiQAcv/iMh4A7wAKAAABXf/iMiQBpgAAMh4Bp//YMh4Brf/nAAAADgEP/+wx1AFMAAAx1AFS//YxsAFT//YxsAFX//YxsAFaAAAx1AFbAAAx1AFd//EAAAFs/84AAAFt/+wx1AFu/9gx1AFv/+wx1AFw/9gx1AFx/84AAAAJAQn/7DGiAQ3/9jGcAQ8AADGiARD/9jGcAV0AFAAAAW3/7DGiAW7/7DGiAW//7DGiAXD/7DGiABYBCgAKMXABCwAAMXABDAAAAIYBDf/2MV4BD//2AAABEQAAMWQBTAAUAAABUgAUMUYBUwAUMUYBVwAUMUYBWgAUAAABWwAUAAABXQAUAAABZf/sMXABZv/sMXABZ//sMXABaP/sMXABav/sMXABbQAAMXABbgAAMUYBbwAAMXABcAAAMUYAAABBgAAAFgEJ//YAAAEK//YAAAELACgwlgEMABQwkAENAAUwrgEPAAow2AFMAAoAAAFSABQwugFTABQwugFXABQwugFaAAoAAAFbAAoAAAFdAAow5AFlABQwugFmABQwugFnABQwugFsAAow5AFtAAAw5AFuAAAw5AFvAAAw5AFwAAAw5AFxAAow5AAWAQj/9jBSAQn/ujBYAQr/7DA0AQsACjAKAQwAADA0AQ3/9jBeAQ7/7AAAAQ//0zBSARH/2DBeARoACgAAAUz/7DBYAVL/9jA0AVP/9jA0AVf/9jA0AVr/7DBYAVv/7DBYAWj/7AAAAWr/7AAAAW3/sDBAAW7/xDBYAW//sDBAAXD/xDBYAA0BCf/YL9IBCv/xAAABCwAKL9gBDv/2L8wBD//2L8wBEf/sL64BUv/2L8wBU//2L8wBV//2L8wBbf/iL94Bbv/iL94Bb//iL94BcP/iL94ADgEJ/84vfAEK/+wAAAELAAoviAEMAAAviAEN//svdgEP/9gvOgER/90vWAFMAAAvfAFaAAAvfAFbAAAvfAFtAAAviAFu/+wvfAFvAAAviAFw/+wvfAAgAQgAAC8yAQkAFC8yAQoAFC8yAQsACi8yAQz/2C8IAQ0AAC8IAQ4AAC8IAQ8AMgAAAREAFC8yAUwAPAAAAVL/ki8sAVP/ki8sAVf/ki8sAVoAPAAAAVsAPAAAAV3/vy8IAWAAKAAAAWIAKAAAAWQAKAAAAWX/sC8sAWb/sC8sAWf/sC8sAWj/ui8IAWn/2AAAAWr/ui8IAWv/2AAAAWz/pgDCAW0AHi8mAW4AHi8mAW8AHi8mAXAAHi8mAXH/pgDCAAAAcIAAABEBCf/sAGgBCv/sLl4BCwAKLmoBDAAALmoBDf/7LlgBD//2LkABUgAKLmoBUwAKLmoBVwAKLmoBXf/sAAABZf/2Ll4BZv/2Ll4BZ//2Ll4Bbf/sLmoBbv/iAAABb//sLmoBcP/iAAAAAABagAAADwEJ//EtxgEK//YAAAEL/+wAAAEM//EtqAEN//Yt6gEO//Yt8AEP/+It8AEQ/+wAAAFS//Yt0gFT//Yt0gFX//Yt0gFt/+IAAAFu/9gAAAFv/+IAAAFw/9gAAAACAQz/fgAAARr/4gAAAAEBLQAOAAAAAQEo//YAAAAEASb/+wAAASr/9gAAAS0AFwAAATcAFwAAAAIBkQAKAAABkgAKAAAAAQFEACgAAAAFAS0AFwAAATD/+wAAATT/9gAAATcAFwAAAUT/2AAAAAEBKv/OAAAAEABd/+wtJABe/+wtJABf/+wtJABg/+wtJABh/+wtJABs/+wtJABt/+wtJABu/+wtJABv/+wtJABw/+wtJABx/+wtJABz/+ItMAB0/+ItMAB1/+ItMAB2/+ItMAB3/+ItMAAMAGz/nCy8AOn/nCzOAO//9iy8AQj/2CzIAQn/fggkAQv/9ix0AQz/9iyeAQ3/4iyeAQ7/zgAAAQ//4gAAARAAACyeARH/7CyeACEAXf/2LHIAXv/2LHIAX//2LHIAYP/2LHIAYf/2LHIAbP/sLHgAbf/2LHIAbv/2LHIAb//2LHIAcP/2LHIAcf/2LHIAcv/YLGAAc//iLIQAdP/iLIQAdf/iLIQAdv/iLIQAd//iLIQAugAyAAAAuwAyAAAAvAAyAAAAvQAyAAAAvgAyAAAAvwAyAAAAwAAyAAAAzAAyAAAAzwAyAAAA0AAyAAAA0QAyAAAA0gAyAAABbQAKLHIBbgAKLHIBbwAKLHIBcAAKLHIAIQBd/8QAAABe/8QAAABf/8QAAABg/8QAAABh/8QAAABs/5wrmABt/7orsABu/7orsABv/7orsABw/7orsABx/7orsABy/+IrvABz/5IrngB0/5IrngB1/5IrngB2/5IrngB3/5IrngDp/+IAAADq/+wAAADr/+wAAADs/+wAAADt/+wAAADu/+wAAADv/+wAAADw/+IAAADx/+IAAADy/+IAAADz/+IAAAD0/+IAAAD1/+wAAAD2/+wAAAD3/+wAAAD4/+wAAAAHAGwAFAAAAQkAFAAAAQoACgAAAQz/2CqaAQ3/7AAAAQ8AMiriAREAACroAAIAbP/OAAAAcv/sKrwAyAAB/7AqrgAC/7AqrgAD/7AqrgAE/7AqrgAF/7AqrgAG/7AqrgAH/7AqrgAI/7AqrgAJ/7AqrgAK/7AqrgAL/7AqrgAM/7AqrgAN/7AqrgAP/+wAAAAQ/+wAAAAR/+wAAAAS/+wAAAAT/+wAAAAU/+wAAAAk/+wAAAAl/+wAAAAm/+wAAAAn/+wAAAAo/+wAAAA0/5wqrgA1/5wqrgBF/+wAAABG/+wAAABH/+wAAABI/+wAAABJ/+wAAABK/+wAAABL/+wAAABM/+wAAABN/+wAAABO/+wAAABP/+wAAABS/+wAAABXAAAqrgBYAAAqrgBZAAAqrgBaAAAqrgBbAAAqrgBcAAAqrgBdAAoAAABeAAoAAABfAAoAAABgAAoAAABhAAoAAABzAAoqtAB0AAoqtAB1AAoqtAB2AAoqtAB3AAoqtAB8/+wAAAB9/5wqrgB+/5wqrgB//5wqrgCA/5wqrgCB/5wqrgCC/5wqrgCD/5wqrgCE/5wqrgCF/5wqrgCG/5wqrgCH/5wqrgCI/5wqrgCJ/5wqrgCL/7AAAACM/7AAAACN/7AAAACO/7AAAACP/7AAAACQ/7AAAACR/7AAAACS/7AAAACT/7AAAACU/7AAAACV/7AAAACW/7AAAACX/7AAAACY/7AAAACZ/7AAAACa/7AAAACb/7AAAACc/7AAAACd/7AAAACe/7AAAACf/+wqrgCg/7AAAACh/7AAAACi/7AAAACj/7AAAACk/7AAAAC6/84AAAC7/84AAAC8/84AAAC9/84AAAC+/84AAAC//84AAADA/84AAADB/7AAAADC/7AAAADD/7AAAADE/7AAAADF/7AAAADG/7AAAADH/7AAAADI/7AAAADJ/7AAAADK/7AAAADL/7AAAADM/84AAADO/7AAAADP/84AAADQ/84AAADR/84AAADS/84AAADT/7oqrgDU/7oqrgDV/7oqrgDW/7oqrgDX/7oqrgDY/7oqrgDa/+IqugDb/+IqugDc/+IqugDd/+IqugDe/+IqugDf/9gAAADg/9gAAADh/9gAAADi/9gAAADj/9gAAADk/9gAAADl/9gAAADm/9gAAADn/9gAAADo/9gAAADp/9gqrgDq/9gqrgDr/9gqrgDs/9gqrgDt/9gqrgDu/9gqrgDv/9gqrgDw/9gqrgDx/9gqrgDy/9gqrgDz/9gqrgD0/9gqrgD1/9gqlgD2/9gqlgD3/9gqlgD4/9gqlgD5/7AAAAD6/7AAAAD7/+IqugD8/+wqrgD9/+wqrgD+/+wqrgD//+wqrgEA/+wqrgEB/+wqrgEC/+wqrgED/+IqugEE/+IqugEF/+IqugEI//EAAAEJAAUqqAEKAAAqhAEM/9MqZgEN//YqigEO//YqtAEPACgAAAEQ//YqtAFd/34qugHX/+wAAAHY/+wAAAHZ/+wAAAHa/+wAAAHb/+wAAAHe/7AAAAHf/7AAAAHg/7AAAAHh/7AAAAHi/7AAAAHj/7AAAAHk/7AAAAHl/7AAAAHm/7AAAAHn/7AAAAHo/7AAAAHp/7AAAAHq/7AAAAHr/7AAAAHs/+IqugHt/+IqugHu/+IqugHv/+IqugADAHIAHgAAAQkAACX8AQ8AKAAAAAoAbP+wJegAcv/EJfQA6f/YJeIA7//OJegBCf+wJfQBCv+6AAABCwAKJe4BD//iAAABEP/2JeIBEf/sJegAAgBs/9glqgEM/+IAAAAJAGz/sCWcAHL/2AAAAOn/7CWWAO//4iWWAQn/uiWEAQr/xCWWAQ7/9iWWAQ//zgAAARH/7CWcAAoAcv/YJUwBCAAAJUABCQAAJWQBC//sJUABDP/EJUABDf/YJWoBDv/sAAABDwAUJV4BEP/sAAABWAAKJV4ACwBy/+IlMgEI/+wlAgEKAAAlAgEL//Yk2AEM/8QlAgEN/84AAAEO/+IAAAEPABQlIAEQ/+IAAAER//YAAAFYAAoAAAALAGz/iCTKAOn/ugAAAQj/zgAAAQn/kgBEAQv/7CToAQz/7AAAAQ3/4gAAAQ7/zgAAAQ//zgAAARD/7CToARH/7CToAAAAa4AAAAEBp//iAAAAAQEP/+wAAAABAQ8AACSOAAEBDP/YAAAAAgEI//YkcgEJ/+wkeAAuAAH/5wAAAAL/5wAAAAP/5wAAAAT/5wAAAAX/5wAAAAb/5wAAAAf/5wAAAAj/5wAAAAn/5wAAAAr/5wAAAAv/5wAAAAz/5wAAAA3/5wAAAF3/xAAAAF7/xAAAAF//xAAAAGD/xAAAAGH/xAAAAGz/uiRqAG3/ziRkAG7/ziRkAG//ziRkAHD/ziRkAHH/ziRkAHL/2CRqAHP/piRqAHT/piRqAHX/piRqAHb/piRqAHf/piRqAHj/9iRwAHn/9iRwAHr/9iRwAHv/9iRwANMAACRkANQAACRkANUAACRkANYAACRkANcAACRkANgAACRkAO//7CRqAPD/9iRkAPH/9iRkAPL/9iRkAPP/9iRkAPT/9iRkAIoAD//iI2AAEP/iI2AAEf/iI2AAEv/iI2AAE//iI2AAFP/iI2AAJP/iI2AAJf/iI2AAJv/iI2AAJ//iI2AAKP/iI2AANP/iI2AANf/iI2AARf/iI2AARv/iI2AAR//iI2AASP/iI2AASf/iI2AASv/iI2AAS//iI2AATP/iI2AATf/iI2AATv/iI2AAT//iI2AAUv/iI2AAV//YIzwAWP/YIzwAWf/YIzwAWv/YIzwAW//YIzwAXP/YIzwAXf+cI1QAXv+cI1QAX/+cI1QAYP+cI1QAYf+cI1QAYv/iI2AAY//iI2AAZP/iI2AAZf/iI2AAZv/iI2AAZ//iI2AAaP/iI2AAaf/iI2AAav/iI2AAa//iI2AAbP+SI1QAbf+mI2AAbv+mI2AAb/+mI2AAcP+mI2AAcf+mI2AAc/+II1QAdP+II1QAdf+II1QAdv+II1QAd/+II1QAfP/iI2AAff/sI04Afv/sI04Af//sI04AgP/sI04Agf/sI04Agv/sI04Ag//sI04AhP/sI04Ahf/sI04Ahv/sI04Ah//sI04AiP/sI04Aif/sI04Ai//iI1QAjP/iI1QAjf/iI1QAjv/iI1QAj//iI1QAkP/iI1QAkf/iI1QAkv/iI1QAk//iI1QAlP/iI1QAlf/iI1QAlv/iI1QAl//iI1QAmP/iI1QAmf/iI1QAmv/iI1QAm//iI1QAnP/iI1QAnf/iI1QAnv/iI1QAwf/iI1QAwv/iI1QAw//iI1QAxP/iI1QAxf/iI1QAxv/iI1QAx//iI1QAyP/iI1QAyf/iI1QAyv/iI1QAy//iI1QAzv/iI1QA0//sI1QA1P/sI1QA1f/sI1QA1v/sI1QA1//sI1QA2P/sI1QA6f/EIzwA6v/EI2AA6//EI2AA7P/EI2AA7f/EI2AA7v/EI2AA7//2I04A8P/EI1QA8f/EI1QA8v/EI1QA8//EI1QA9P/EI1QA+f/iI1QBcv/YAAAB1//iI2AB2P/iI2AB2f/iI2AB2v/iI2AB2//iI2AB3v/iI1QB3//iI1QB4P/iI1QB4f/iI1QB4v/iI1QB4//iI1QB5P/iI1QB5f/iI1QB5v/iI1QB5//iI1QAAQBy/+wAAAAEAGz/ziAIAHL/2CAOAV3/7AAAAa3/4gAAAAEBrQAKAAAAAQBs/8Qf7AADAGz/4h/wAaf/7B/kAa3/7AAAAAMAcv/sH9AA7wAUAAABpgAKAAAAAhs8AEQAABviHcYALwAlAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/8QAAP/OH7z/uh+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAP/iH54AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAD/0x+e/7ofsAAAAAAAAAAAAAAAAAAAAAAAAB+YAAAAAP/2AAAAAAAA/9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAD/4h/C/9gfwv/2H7YAAAAAAAAAAAAAAAD/8R+2AAAAAAAAAAD/+wAAAAAAAAAAAAD/9gAAAAAAAP/0AAAAAB+MAAAAAAAAAAD/ph+8/6YfvP+SH7wAAAAAAAAAAP/iH7b/5x+2AAAfmAAAH5j/7AAAAAAAAP/sH8IAAAAAAAAAAAAAAAAAAAAAAAAAAP/OH6r/4gAA/8QAAP/YH8L/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4h/I/+wfvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/xH7b/+wAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+mH7z/qx/I/5IfvAAAAAAAAAAA/+cfsP/sH7AAAAAA//YAAP/2AAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gfpAAAAAD/zgAA/84AAP/iH7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAH8IAAAAAABQfmAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfmAAAAAAACh/CAAAAAAAAAAAAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfwgAAH7b/4gAAAAAAAP/sAAAAAAAAAAAAAP/2H8IAAAAAAAAAAAAAAAAAAAAAAB4fwgAAAAD/3R+e/84ftgAUAAD/9gAAAAAAAP/sH7YAAAAAAAAAAP/OH7YAAAAA/+cftv/sH7z/9gAAAAAAAP+rH8j/qx+2/6Yfnv/sH7YAAAAA/9gftv/dH7AAAAAAAAAAAP+wAAAAAAAAABQftgAAAAD/7AAAAAAftgAAAAAAAAAAAAAAAAAeAAD/iB+8/5wAAP+mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+x+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+MAAAAAAAAAAD/ph+8/7AfvP+mH8gAAAAAAAAAAP/nH7D/5x+2AAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAP/YAAD/4h+8AAAAAP/xH7AAAAAA/+Iftv/sH7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9h+2AAAAAAAAAAAAAAAA/+wftv/xH7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2B+2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//oAAP/EAAD/zh+8/7ofvAAAAAAAAAAA//EAAP/xAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zh+2/+wfmP/iH8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nH7YAAAAA/+IfvP/nH7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+x+e/84fvP/YH7z/uh/I/+cftv/nH7YAAAAAAAAAAP/sH5gAAAAAAAAAAAAAAAD/nB/IAAAAAP/YH7z/4gAAAAAAAP/sH7YAAAAAAAAAAAAAAAAAAB+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2H5gAAAAAAAAAAP/2AAAAAAAAAAAAAP/2AAAAAAAAAAAAAP+6H7z/uh+8/5wfvAAAAAAAAB+M/+wAAP/sAAAAAAAAAAAfwv/sH8IAAAAAAAAfwgAAAAD/9h9uAAofwgAAAAD/7B+8/+IfyAAAAAD/zgAA/+Ifwv/iH7wAAAAAAAAAAAAAAAD/7B+e//YAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/90fnv/YH7AAAAAAAAAAAAAAAAAAAAAAAAAfmAAAAAAAAAAAAAAAAP/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA//Yfwv/sAAAAAAAAAAAAAP/xH7D/3QAAABQAAAAAAAAAAAAA//YAAAAPH5IAAAAA/+IAAAAAAAD/9gAAAAAAAP/nAAAAAAAA/7Aftv/EAAD/ph+eAAAAAAAUH8L/5wAA/9gAAAAAAAAAAAAA/5wfvAAeAAAAHgAAAA8fkv+wH5gACh/CAAAAAAAAAAAAAAAAAAAAAP+wAAD/nB+2/5IAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACh/CAAAAAP/iAAD/4gAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8IAAAAAAAofkgAAAAAAAB/CABQfmAAAAAAAAAAAAAAAAAAAAAAAAB/C//YfwgAAAAAAAAAAAAAAAAAAAAD/9h+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ph/I/7Ufnv+SH7wAAAAAAAAAAP/2H8L/9gAA/+wAAP/sAAAAAAAAAAAAAP/sAAAAAAAAAAAfmAAAAAAAAAAAAAAAAP/YH6QAAAAA/8Qftv/iH8L/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9Mfnv/OH8j/xB9iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwgAAAAAAAB/IAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAoAAP/sH5j/2AAAAAAAAAAAAAD/ph+8/+cAAP/JAAD/ph+8AAAAAP/iH7b/xAAAAAAAAAAAAAAAAAAA/8QAAP/sH7YAFAAA/7AfyAAeAAAACgAAAAoftv+mH7z/ph+8/84fvP/OH7wAAAAA/8QfvAAUAAAAFAAA/5wfvAAAAAD/sB+8/7UfvP/EAAD/xAAA/+IAAP+wAAAAFB+2ABQftgAAAAAAAAAA/7ofvP/iH57/sB+e/7AfyAAAAAD/7B+8/84fvAAAAAAAAAAAAAAAAP/EH7z/7B+8AAAftv/EH8gACgAAAAAAAAAAAAD/sB/I/7AfyP/TH7z/2B+8AAAAAP/YH7wAFAAAABQAAP+mH8gAAAAA/8QfvP+wH7z/4h+8/8QfvP/OH6r/xAAAAAAAAAAAAAD/9h+2AAAAAP+IH8j/zh+e/7AfYv+DH6QAAAAA/9gfvP+6H7wAAAAAAAAAAAAAAAD/sB+8/9gfvP/2H57/kh+kAAoftgAAAAAAAAAA/5IfvP+SH7z/xB/I/7ofyAAAAAD/xB+8AAoAAAAUAAD/kgAAAAAAAP+mH8j/gx+q/7AfyP+cH7z/uh+k/7AAAP/sH7z/9h+2/+wftgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YH7z/zh+q/7ofvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAACh/CAAAAAAAAAAAAAAAAAAAAAAAAAAAACh/CAAAAAP/2H7z/7B+Y/+wfvP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/2H7YAAAAA//YAAAAAAAAAAAAA/+wfvP/sH7wAAAAAAAAAAAAAAAAAFB+YAAAAAP/nH7YAAAAA/+IfvP/nH7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9h+e/84fvP/TH7z/xB/I/+cfsP/nH7AAAAAAAAAAAAAAH5gAAAAAAAAAAAAAAAD/ph+8AAAAAP/YH7z/4gAAAAAAAP/sH7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iH7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAD/2B+8/7ofngAAAAAAAAAAAAAAAAAAAAAAAB+YAAAAAP/2H8IAAAAA/9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4h+Y/84fwgAAAAAAAAAA/90AAAAAH4wAAAAA/+cfsAAAAAAAAAAAAAAAAAAAAAAAAB+MAAAAAP/xAAAACgAAAAAAAP/sH7z/7AAA/+wfvP/YH8j/5x+w/+wAAP/2H7b/9h+2AAAAAAAAAAAAAB+2AAAAAP/2H7YAAAAA/84fmP/2H8IAAAAA/9gfwgAAAAAAAAAA//Eftv/2H7YAAAAAAAAAAP/7H5L/+x+SAAAAAAAKH8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfmAAUH5j/9h/C//YfwgAAAAAAAAAAABQfmAAAAAAAFB+YAAAAAP/YAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8R+MAAAAAAAAAAD/7AAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAfvP/OH7b/4h/I/84fqv/xH2j/8R+MAA8AAAAPAAAAAAAAAAofsAAeAAAAAAAA/6YfvAAAAAD/4h+YAAAAAAAAAAD/4gAAAAAAAP/OAAAAAAAAAAoftgAUH7YAAAAAAAAfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB+YAAAAAAAAAAD/7B+8/9gfvP/EH7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//YfwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/9gAA/7AAAP/sAAAAAAAAABQfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH7b/7B+2ABQAAAAUAAAACgAA/+wAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAD/sB+8AAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB+YAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAABBH5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAP/JAAAAFB+2//YAAAAAAAD/4gAAAAAAAAAAAAD/xB/IAAAAAP/sH5j/4h+2/+wAAAAAH8L/nB+8/6YfyP+SAAD/7AAAAAAAAP+mH7z/uh+2ABQfmAAAAAD/iB+8AAAAAAAAAAAAAAAAAAAAAAAAH7wAAAAAAAAAAAAAAAAAAAAA/4gfvP+IH7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/7B+2AAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAB9u//Yftv+wH7z/xB+8/6YfyAAAAAD/9gAA/9gfvP/YH7b/9h9u/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2H8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAP/OH7b/zh+MAAAAAP/xAAAAAAAA/9gfvAAAAAAAAAAAAAAAAAAAAAD/2B+w/+wfvP/OAAAAAAAAAAAAAAAAAAAAAAAA/+IfvAAAH8L/zh+8/8QfvAAAAAAAAAAA//YftgAUAAAAAAAAAAAAAP+wAAAAAAAAAAAAAP/YAAAAAAAAAAAAAP/sAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAD/4gAA/7AftgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQH3oAKB90AAAAAAAAAAAAAAAAAFofegAAAAAAMh+AAAAAAAAKH8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH5gAeB96AHgfhgAAAAAAWh96AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAfgABQH4YAWh+GAAAAAP/2H4wAAAAA/+IfvP/2H8IAAAAAABQfmAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfmAAAAAAACh/CABQAAAAAAAAACgAA//EAAP/2H8IAAAAAAAAAAAAAAAAADx+SACgAAAAUH7z/uh+8AAAAAP/iH5gAAAAAAAAAAP/iAAAAAAAAAAAAAAAKAAAAFAAAABQfmAAAAAD/zh+qAAAAAAAAAAD/2B+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gfpP/sAAD/7B+8/84fvP/YH6T/4h/IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IfyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9h/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAA/84ftv+cH7wAAAAAAAAAAP/sH7b/7B+2AAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/dH7wAAAAAAAAAAP/sH54AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+x+e/9gfvP/sH7z/zh+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9h+2AAAAAP+6H7wAAAAAAAAAAP/EH8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4h/C/8QfsAAeAAD/9gAAAAAAAP/YAAAAAAAAAAAAAP/OH7wAAAAA/+IAAP/iAAD/7B+2//YAAP+cH7z/nB+k/34fqv/sAAD/9gAA/8QAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gfwv/2H8L/nAAA/9gfsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9h+2AAofwv/iH7wACh+8AAAAAP/sH7z/2B/C/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+wH7wAAAAAAAAAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6H7z/4h/C/5wAAP+6H7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YfwgAKH8L/zh+8ABQftgAAAAD/9h+2/7ofvP+6H7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sB+8AAAAAAAAAAD/nB+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB/CAAAAAAAAAAAAAAAA//YAAAAAAAD/4h/IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAbAAEADQAAAA8AIgANACQAKAAhADQATwAmAFMAawBCAG0AcQBbAHMAkABgAJIAkwB+AJUAswCAALYAtgCfALoAzQCgAM8A6AC0AOoA7gDOAPAA/QDTAP8BAQDhAQMBBQDkAUwBTADnAVEBUwDoAVcBVwDrAVoBXADsAV8BXwDvAWEBYQDwAWMBYwDxAWUBcQDyAasBrAD/AdcB2gEBAdwB7wEFAAIAUAABAAsABwAMAA0AAwAPABQADgAVABgAGQAZACIAAwAkACgAEgA0ADUAIwA2ADcAJAA4AD0ADwA+AEQACwBFAE4AAQBPAE8AAwBTAFYAGgBXAFwAEABdAGEAEwBiAGsACQBtAHEAFABzAHcAFQB4AHsAGwB8AHwAAQB9AIcACACIAIkABACKAIoAAgCLAJAAEQCSAJIAAgCTAJMAJgCVAJ4ABACfAJ8AJwCgAKQAFgClAKYACgCnAK8ABQCwALEAIQCyALMAKgC2ALYAJgC6AMAACgDBAMoAAgDLAMsABADMAM0AAgDPANIAHADTANkADQDaAN4ABgDqAO4AGADwAPQADAD1APgAHQD6APoAFwD7APsABgD8APwAJwD9AP0ABQD/AP8ABgEAAQAADAEBAQEABQEDAQMABQEEAQQABgEFAQUADAFMAUwAHgFRAVEAJQFSAVMAIAFXAVcAIAFaAVsAHgFcAVwAJQFfAV8AHwFhAWEAHwFjAWMAHwFlAWcAIgFoAWgAKAFpAWkAKQFqAWoAKAFrAWsAKQFsAWwAKwFtAW0ALAFuAW4ALQFvAW8ALAFwAXAALQFxAXEAKwGrAawALgHXAdoAAQHcAdwABQHdAd0AIQHoAesAFwHsAe8ABgACAEQAAQANAAMADwAUAAIAGQAiAAgAJAAoAAIANAA1AB0ARQBPAAIAUgBSAAIAVwBcAA0AXQBhAA8AYgBrAAkAbQBxABAAcwB3ABEAeAB7ABYAfAB8AAIAfQCJAAQAigCKAAUAiwCeAAEAnwCfAAwAoACkABIApQCmAAUApwCvAAoAsACxABsAsgC5AAUAugDAAAcAwQDLAAEAzADMAAcAzQDNAAUAzgDOAAEAzwDSAAcA0wDYAA4A2QDZAAUA2gDeAAYA3wDoAAsA6gDuABQA8AD0ABUA9QD4ABcA+QD5AAEA+gD6ABMA+wD7AAYA/AECAAwBAwEFAAYBTAFMABgBUQFRAB4BUgFTABoBVwFXABoBWgFbABgBXAFcAB4BYAFgABkBYgFiABkBZAFkABkBZQFnABwBaAFoAB8BaQFpACABagFqAB8BawFrACABbAFsACEBbQFtACIBbgFuACMBbwFvACIBcAFwACMBcQFxACEBqwGsACQB1wHbAAIB3AHcAAoB3QHdABsB3gHnAAEB6AHrABMB7AHvAAYAAABkgAAAAABcgAAAAAA8gAAAAAAzgAAAAAAXgAAAAAApgAAAAAAfgAAAAABTgAAAAABLgAAAAABGgAAAAABggAAAAABmgAAAAABogAAAAABbgAAAAABegAAAAABhgAAAAABQgAAAAABlgAAAAAABAAAACgFWApQAAkRGTFQADmxhdG4AEgDoAAAANAAIQVpFIADkQ0FUIADkQ1JUIADkS0FaIABgTU9MIACMUk9NIAC4VEFUIADkVFJLIAEOAAD//wATAAAAAQACAAMABAAFAAYACwAMAA0ADgAPABAAEQASABMAFAAVABYAAP//ABMAAAABAAMABAAFAAYABwALAAwADQAOAA8AEAARABIAEwAUABUAFgAA//8AEwAAAAEAAwAEAAUABgAIAAsADAANAA4ADwAQABEAEgATABQAFQAWAAD//wATAAAAAQADAAQABQAGAAkACwAMAA0ADgAPABAAEQASABMAFAAVABYAAP//ABIAAAABAAMABAAFAAYACwAMAA0ADgAPABAAEQASABMAFAAVABYAAP//ABMAAAABAAMABAAFAAYACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXYWFsdACMY2FzZQCUY2NtcACaZGxpZwCgZG5vbQCmZnJhYwCsbGlnYQDIbG9jbADObG9jbADUbG9jbADabG9jbADgbnVtcgDmb3JkbgDscG51bQDyc2FsdAD4c2luZgD+c3MwMQEEc3MwMgEOc3MwMwEYc3MwNAEic3VicwEsc3VwcwEydG51bQE4AAAAAgAAAAEAAAABAC8AAAABAAIAAAABACgAAAABAAwAAAAMAA0ADwARABMAFQAXABkAGwAdAB8AIQAjAAAAAQApAAAAAQAFAAAAAQAGAAAAAQAHAAAAAQAIAAAAAQALAAAAAQAlAAAAAQAmAAAAAQAqAAAAAQAwAAYAAQArAAABAAAGAAEALAAAAQEABgABAC0AAAECAAYAAQAuAAABAwAAAAEACQAAAAEACgAAAAEAJwAxAGQBMgHkAiYCJgJiAkACQAJiCRYCdgZYBpACrATWBOoGWAUEBlgFIAZYBT4GWAVeBlgFgAZYBaQGWAXKBlgF8gZYBhwGWAZmBpAGngbABtgG5gckB3AIWgigCMII5Aj4CRYAAQAAAAEACAACAGQALwB8AdcB2AHZAdoB2wBcAGEA+QHeAd8B4AHhAeIB4wHkAeUB5gHnAPoB6AHpAeoB6wCrANgA+wHsAe0B7wEIAQkBCgELAQwBDQEOAQ8BEAERAdQB1QG3AfAB9gHzAfUAAQAvACQAJQAmACcAKABSAFoAYAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAoAChAKIAowCkAKcA1gDaANsA3ADeARIBEwEUARUBFgEXARgBGQEaARsBYQFiAasBvgHGAfEB8gADAAAAAQAIAAEAmgALABwAIgAuADoARgBSAF4AagB2AIIAjgACAN4B7gAFARIBHAEmATABOgAFARMBHQEnATEBOwAFARQBHgEoATIBPAAFARUBHwEpATMBPQAFARYBIAEqATQBPgAFARcBIQErATUBPwAFARgBIgEsATYBQAAFARkBIwEtATcBQQAFARoBJAEuATgBQgAFARsBJQEvATkBQwACAAIA3QDdAAABCAERAAEABgAAAAIACgAcAAMAAAABAEoAAQAuAAEAAAADAAMAAAABADgAAgAUABwAAQAAAAQAAQACAcUBxgACAAEBuAHDAAAAAQAAAAEACAACAAoAAgHcAd0AAQACAKcAsAABAAAAAQAIAAIADgAEAFwAYQDYAN4AAQAEAFoAYADWAN0AAQAAAAEACAABAAYABAABAAEApwABAAAAAQAIAAIAHgAMAToBOwE8AT0BPgE/AUABQQFCAUMB1AHVAAIAAgEIAREAAAFhAWIACgAGAAAAAQAIAAICMAAYABAAGAACACgAKgABAV0AAQABAAIAAgEIAREAAQFdAV0AAgAAABcAMABOAGwAiACkAL4A2ADwAQgBHgE0AUgBXAFuAYABkAGgAa4BvAHIAdQB3gHoAAsAAQABAAEAAQABAAEAAQABAAEAAQACAAEAAAAAAAAAAQALAAEAAQABAAEAAQABAAEAAQABAAEAAgAAAAoAAQABAAEAAQABAAEAAQABAAEAAgABAAAAAAAAAAEACgABAAEAAQABAAEAAQABAAEAAQACAAAACQABAAEAAQABAAEAAQABAAEAAgABAAAAAAAAAAEACQABAAEAAQABAAEAAQABAAEAAgAAAAgAAQABAAEAAQABAAEAAQACAAEAAAAAAAAAAQAIAAEAAQABAAEAAQABAAEAAgAAAAcAAQABAAEAAQABAAEAAgABAAAAAAAAAAEABwABAAEAAQABAAEAAQACAAAABgABAAEAAQABAAEAAgABAAAAAAAAAAEABgABAAEAAQABAAEAAgAAAAUAAQABAAEAAQACAAEAAAAAAAAAAQAFAAEAAQABAAEAAgAAAAQAAQABAAEAAgABAAAAAAAAAAEABAABAAEAAQAC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)format("truetype")}html,body,#app{height:100%;display:block}body{font-family:Satoshi}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}.accordion-enter-active[data-v-35c45e13],.accordion-leave-active[data-v-35c45e13]{transition:max-height .3s ease,padding .3s ease;overflow:hidden}.accordion-enter-from[data-v-35c45e13],.accordion-leave-to[data-v-35c45e13]{max-height:0;padding-top:0;padding-bottom:0}.accordion-enter-to[data-v-35c45e13],.accordion-leave-from[data-v-35c45e13]{max-height:500px}.modal-enter-active[data-v-fa265bc6],.modal-leave-active[data-v-fa265bc6]{transition:all .3s ease}.modal-enter-from[data-v-fa265bc6],.modal-leave-to[data-v-fa265bc6]{opacity:0}.modal-enter-from>div>div[data-v-fa265bc6],.modal-leave-to>div>div[data-v-fa265bc6]{transform:scale(.95)}.modal-enter-to[data-v-fa265bc6],.modal-leave-from[data-v-fa265bc6]{opacity:1}.modal-enter-to>div>div[data-v-fa265bc6],.modal-leave-from>div>div[data-v-fa265bc6]{transform:scale(1)}.popup-enter-active[data-v-14cdbcf1],.popup-leave-active[data-v-14cdbcf1]{transition:all .3s ease}.popup-enter-from[data-v-14cdbcf1],.popup-leave-to[data-v-14cdbcf1]{opacity:0;transform:scale(.95)}.popup-enter-to[data-v-14cdbcf1],.popup-leave-from[data-v-14cdbcf1]{opacity:1;transform:scale(1)}.popup-enter-active[data-v-ffabc70a],.popup-leave-active[data-v-ffabc70a]{transition:all .3s ease}.popup-enter-from[data-v-ffabc70a],.popup-leave-to[data-v-ffabc70a]{opacity:0;transform:scale(.95)}.popup-enter-to[data-v-ffabc70a],.popup-leave-from[data-v-ffabc70a]{opacity:1;transform:scale(1)}.dropdown-fade-enter-active[data-v-1c0bf501],.dropdown-fade-leave-active[data-v-1c0bf501]{transition:opacity .3s ease,transform .3s ease}.dropdown-fade-enter-from[data-v-1c0bf501],.dropdown-fade-leave-to[data-v-1c0bf501]{opacity:0;transform:translateY(-5px)}.dropdown-fade-enter-to[data-v-1c0bf501],.dropdown-fade-leave-from[data-v-1c0bf501]{opacity:1;transform:translateY(0)}.popup-enter-active[data-v-f37eef27],.popup-leave-active[data-v-f37eef27]{transition:all .3s ease}.popup-enter-from[data-v-f37eef27],.popup-leave-to[data-v-f37eef27]{opacity:0;transform:scale(.95)}.popup-enter-to[data-v-f37eef27],.popup-leave-from[data-v-f37eef27]{opacity:1;transform:scale(1)}@media(min-width:768px)and (min-height:800px){.only-md-h800[data-v-b139d0fd]{display:block!important}}.popup-enter-active[data-v-b139d0fd],.popup-leave-active[data-v-b139d0fd]{transition:all .3s ease}.popup-enter-from[data-v-b139d0fd],.popup-leave-to[data-v-b139d0fd]{opacity:0;transform:scale(.95)}.popup-enter-to[data-v-b139d0fd],.popup-leave-from[data-v-b139d0fd]{opacity:1;transform:scale(1)}.line[data-v-6baf700f]{fill:none;stroke:#2b3937;stroke-width:3;stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw-6baf700f 3s ease forwards;animation-iteration-count:infinite}.line.delay1[data-v-6baf700f]{animation-delay:0s}.line.delay2[data-v-6baf700f]{animation-delay:.3s}.line.delay3[data-v-6baf700f]{animation-delay:.6s}.line.delay4[data-v-6baf700f]{animation-delay:.9s}@keyframes draw-6baf700f{0%{stroke-dashoffset:1200;opacity:1}80%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.v3d-container{position:relative;width:100%} diff --git a/public/aluwdoors-ref/configurator.iife.js?v=mlaxicsg b/public/aluwdoors-ref/configurator.iife.js?v=mlaxicsg new file mode 100644 index 0000000..28c6483 --- /dev/null +++ b/public/aluwdoors-ref/configurator.iife.js?v=mlaxicsg @@ -0,0 +1,12059 @@ +var S3e=Object.defineProperty;var w3e=(Xr,To,en)=>To in Xr?S3e(Xr,To,{enumerable:!0,configurable:!0,writable:!0,value:en}):Xr[To]=en;var Ls=(Xr,To,en)=>w3e(Xr,typeof To!="symbol"?To+"":To,en);try{let Xr=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},To=new Xr.Error().stack;To&&(Xr._sentryDebugIds=Xr._sentryDebugIds||{},Xr._sentryDebugIds[To]="90c461c3-84cb-4564-9641-eb0773956854",Xr._sentryDebugIdIdentifier="sentry-dbid-90c461c3-84cb-4564-9641-eb0773956854")}catch{}(function(){"use strict";var AN,yN;var Xr=typeof document<"u"?document.currentScript:null;/** +* @vue/shared v3.5.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function To(n){const e=Object.create(null);for(const t of n.split(","))e[t]=1;return t=>t in e}const en={},Tc=[],aa=()=>{},px=()=>!1,hp=n=>n.charCodeAt(0)===111&&n.charCodeAt(1)===110&&(n.charCodeAt(2)>122||n.charCodeAt(2)<97),i_=n=>n.startsWith("onUpdate:"),br=Object.assign,a_=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},EN=Object.prototype.hasOwnProperty,vn=(n,e)=>EN.call(n,e),_t=Array.isArray,Ic=n=>Td(n)==="[object Map]",Rc=n=>Td(n)==="[object Set]",mx=n=>Td(n)==="[object Date]",Lt=n=>typeof n=="function",Yn=n=>typeof n=="string",Ni=n=>typeof n=="symbol",wn=n=>n!==null&&typeof n=="object",gx=n=>(wn(n)||Lt(n))&&Lt(n.then)&&Lt(n.catch),_x=Object.prototype.toString,Td=n=>_x.call(n),CN=n=>Td(n).slice(8,-1),vx=n=>Td(n)==="[object Object]",s_=n=>Yn(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,Id=To(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),pp=n=>{const e=Object.create(null);return(t=>e[t]||(e[t]=n(t)))},SN=/-\w/g,Qo=pp(n=>n.replace(SN,e=>e.slice(1).toUpperCase())),wN=/\B([A-Z])/g,Ps=pp(n=>n.replace(wN,"-$1").toLowerCase()),mp=pp(n=>n.charAt(0).toUpperCase()+n.slice(1)),l_=pp(n=>n?`on${mp(n)}`:""),Io=(n,e)=>!Object.is(n,e),gp=(n,...e)=>{for(let t=0;t{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,writable:r,value:t})},_p=n=>{const e=parseFloat(n);return isNaN(e)?n:e},MN=n=>{const e=Yn(n)?Number(n):NaN;return isNaN(e)?n:e};let yx;const vp=()=>yx||(yx=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rd(n){if(_t(n)){const e={};for(let t=0;t{if(t){const r=t.split(IN);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e}function Qt(n){let e="";if(Yn(n))e=n;else if(_t(n))for(let t=0;tLd(t,e))}const xx=n=>!!(n&&n.__v_isRef===!0),Ae=n=>Yn(n)?n:n==null?"":_t(n)||wn(n)&&(n.toString===_x||!Lt(n.toString))?xx(n)?Ae(n.value):JSON.stringify(n,Ex,2):String(n),Ex=(n,e)=>xx(e)?Ex(n,e.value):Ic(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[r,o],i)=>(t[u_(r,i)+" =>"]=o,t),{})}:Rc(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>u_(t))}:Ni(e)?u_(e):wn(e)&&!_t(e)&&!vx(e)?String(e):e,u_=(n,e="")=>{var t;return Ni(n)?`Symbol(${(t=n.description)!=null?t:e})`:n};/** +* @vue/reactivity v3.5.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let qr;class Cx{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=qr,!e&&qr&&(this.index=(qr.scopes||(qr.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=0,t=this.scopes.length;e0&&--this._on===0&&(qr=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let t,r;for(t=0,r=this.effects.length;t0)return;if(Dd){let e=Dd;for(Dd=void 0;e;){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let n;for(;Pd;){let e=Pd;for(Pd=void 0;e;){const t=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(r){n||(n=r)}e=t}}if(n)throw n}function Ix(n){for(let e=n.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Rx(n){let e,t=n.depsTail,r=t;for(;r;){const o=r.prevDep;r.version===-1?(r===t&&(t=o),m_(r),ON(r)):e=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}n.deps=e,n.depsTail=t}function p_(n){for(let e=n.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Lx(e.dep.computed)||e.dep.version!==e.version))return!0;return!!n._dirty}function Lx(n){if(n.flags&4&&!(n.flags&16)||(n.flags&=-17,n.globalVersion===Bd)||(n.globalVersion=Bd,!n.isSSR&&n.flags&128&&(!n.deps&&!n._dirty||!p_(n))))return;n.flags|=2;const e=n.dep,t=Nn,r=Oi;Nn=n,Oi=!0;try{Ix(n);const o=n.fn(n._value);(e.version===0||Io(o,n._value))&&(n.flags|=128,n._value=o,e.version++)}catch(o){throw e.version++,o}finally{Nn=t,Oi=r,Rx(n),n.flags&=-3}}function m_(n,e=!1){const{dep:t,prevSub:r,nextSub:o}=n;if(r&&(r.nextSub=o,n.prevSub=void 0),o&&(o.prevSub=r,n.nextSub=void 0),t.subs===n&&(t.subs=r,!r&&t.computed)){t.computed.flags&=-5;for(let i=t.computed.deps;i;i=i.nextDep)m_(i,!0)}!e&&!--t.sc&&t.map&&t.map.delete(t.key)}function ON(n){const{prevDep:e,nextDep:t}=n;e&&(e.nextDep=t,n.prevDep=void 0),t&&(t.prevDep=e,n.nextDep=void 0)}let Oi=!0;const Px=[];function sa(){Px.push(Oi),Oi=!1}function la(){const n=Px.pop();Oi=n===void 0?!0:n}function Dx(n){const{cleanup:e}=n;if(n.cleanup=void 0,e){const t=Nn;Nn=void 0;try{e()}finally{Nn=t}}}let Bd=0;class kN{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ap{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Nn||!Oi||Nn===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==Nn)t=this.activeLink=new kN(Nn,this),Nn.deps?(t.prevDep=Nn.depsTail,Nn.depsTail.nextDep=t,Nn.depsTail=t):Nn.deps=Nn.depsTail=t,Bx(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){const r=t.nextDep;r.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=r),t.prevDep=Nn.depsTail,t.nextDep=void 0,Nn.depsTail.nextDep=t,Nn.depsTail=t,Nn.deps===t&&(Nn.deps=r)}return t}trigger(e){this.version++,Bd++,this.notify(e)}notify(e){f_();try{for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&t.sub.dep.notify()}finally{h_()}}}function Bx(n){if(n.dep.sc++,n.sub.flags&4){const e=n.dep.computed;if(e&&!n.dep.subs){e.flags|=20;for(let r=e.deps;r;r=r.nextDep)Bx(r)}const t=n.dep.subs;t!==n&&(n.prevSub=t,t&&(t.nextSub=n)),n.dep.subs=n}}const g_=new WeakMap,Cl=Symbol(""),__=Symbol(""),Nd=Symbol("");function Kr(n,e,t){if(Oi&&Nn){let r=g_.get(n);r||g_.set(n,r=new Map);let o=r.get(t);o||(r.set(t,o=new Ap),o.map=r,o.key=t),o.track()}}function Oa(n,e,t,r,o,i){const a=g_.get(n);if(!a){Bd++;return}const s=l=>{l&&l.trigger()};if(f_(),e==="clear")a.forEach(s);else{const l=_t(n),c=l&&s_(t);if(l&&t==="length"){const u=Number(r);a.forEach((d,f)=>{(f==="length"||f===Nd||!Ni(f)&&f>=u)&&s(d)})}else switch((t!==void 0||a.has(void 0))&&s(a.get(t)),c&&s(a.get(Nd)),e){case"add":l?c&&s(a.get("length")):(s(a.get(Cl)),Ic(n)&&s(a.get(__)));break;case"delete":l||(s(a.get(Cl)),Ic(n)&&s(a.get(__)));break;case"set":Ic(n)&&s(a.get(Cl));break}}h_()}function Lc(n){const e=cn(n);return e===n?e:(Kr(e,"iterate",Nd),gi(n)?e:e.map(Ur))}function yp(n){return Kr(n=cn(n),"iterate",Nd),n}const FN={__proto__:null,[Symbol.iterator](){return v_(this,Symbol.iterator,Ur)},concat(...n){return Lc(this).concat(...n.map(e=>_t(e)?Lc(e):e))},entries(){return v_(this,"entries",n=>(n[1]=Ur(n[1]),n))},every(n,e){return ka(this,"every",n,e,void 0,arguments)},filter(n,e){return ka(this,"filter",n,e,t=>t.map(Ur),arguments)},find(n,e){return ka(this,"find",n,e,Ur,arguments)},findIndex(n,e){return ka(this,"findIndex",n,e,void 0,arguments)},findLast(n,e){return ka(this,"findLast",n,e,Ur,arguments)},findLastIndex(n,e){return ka(this,"findLastIndex",n,e,void 0,arguments)},forEach(n,e){return ka(this,"forEach",n,e,void 0,arguments)},includes(...n){return A_(this,"includes",n)},indexOf(...n){return A_(this,"indexOf",n)},join(n){return Lc(this).join(n)},lastIndexOf(...n){return A_(this,"lastIndexOf",n)},map(n,e){return ka(this,"map",n,e,void 0,arguments)},pop(){return Od(this,"pop")},push(...n){return Od(this,"push",n)},reduce(n,...e){return Nx(this,"reduce",n,e)},reduceRight(n,...e){return Nx(this,"reduceRight",n,e)},shift(){return Od(this,"shift")},some(n,e){return ka(this,"some",n,e,void 0,arguments)},splice(...n){return Od(this,"splice",n)},toReversed(){return Lc(this).toReversed()},toSorted(n){return Lc(this).toSorted(n)},toSpliced(...n){return Lc(this).toSpliced(...n)},unshift(...n){return Od(this,"unshift",n)},values(){return v_(this,"values",Ur)}};function v_(n,e,t){const r=yp(n),o=r[e]();return r!==n&&!gi(n)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.done||(i.value=t(i.value)),i}),o}const VN=Array.prototype;function ka(n,e,t,r,o,i){const a=yp(n),s=a!==n&&!gi(n),l=a[e];if(l!==VN[e]){const d=l.apply(n,i);return s?Ur(d):d}let c=t;a!==n&&(s?c=function(d,f){return t.call(this,Ur(d),f,n)}:t.length>2&&(c=function(d,f){return t.call(this,d,f,n)}));const u=l.call(a,c,r);return s&&o?o(u):u}function Nx(n,e,t,r){const o=yp(n);let i=t;return o!==n&&(gi(n)?t.length>3&&(i=function(a,s,l){return t.call(this,a,s,l,n)}):i=function(a,s,l){return t.call(this,a,Ur(s),l,n)}),o[e](i,...r)}function A_(n,e,t){const r=cn(n);Kr(r,"iterate",Nd);const o=r[e](...t);return(o===-1||o===!1)&&b_(t[0])?(t[0]=cn(t[0]),r[e](...t)):o}function Od(n,e,t=[]){sa(),f_();const r=cn(n)[e].apply(n,t);return h_(),la(),r}const UN=To("__proto__,__v_isRef,__isVue"),Ox=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(Ni));function zN(n){Ni(n)||(n=String(n));const e=cn(this);return Kr(e,"has",n),e.hasOwnProperty(n)}class kx{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,r){if(t==="__v_skip")return e.__v_skip;const o=this._isReadonly,i=this._isShallow;if(t==="__v_isReactive")return!o;if(t==="__v_isReadonly")return o;if(t==="__v_isShallow")return i;if(t==="__v_raw")return r===(o?i?Hx:Gx:i?zx:Ux).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(r)?e:void 0;const a=_t(e);if(!o){let l;if(a&&(l=FN[t]))return l;if(t==="hasOwnProperty")return zN}const s=Reflect.get(e,t,Ir(e)?e:r);if((Ni(t)?Ox.has(t):UN(t))||(o||Kr(e,"get",t),i))return s;if(Ir(s)){const l=a&&s_(t)?s:s.value;return o&&wn(l)?Cp(l):l}return wn(s)?o?Cp(s):Zr(s):s}}class Fx extends kx{constructor(e=!1){super(!1,e)}set(e,t,r,o){let i=e[t];if(!this._isShallow){const l=Ds(i);if(!gi(r)&&!Ds(r)&&(i=cn(i),r=cn(r)),!_t(e)&&Ir(i)&&!Ir(r))return l||(i.value=r),!0}const a=_t(e)&&s_(t)?Number(t)n,bp=n=>Reflect.getPrototypeOf(n);function QN(n,e,t){return function(...r){const o=this.__v_raw,i=cn(o),a=Ic(i),s=n==="entries"||n===Symbol.iterator&&a,l=n==="keys"&&a,c=o[n](...r),u=t?y_:e?wp:Ur;return!e&&Kr(i,"iterate",l?__:Cl),{next(){const{value:d,done:f}=c.next();return f?{value:d,done:f}:{value:s?[u(d[0]),u(d[1])]:u(d),done:f}},[Symbol.iterator](){return this}}}}function xp(n){return function(...e){return n==="delete"?!1:n==="clear"?void 0:this}}function $N(n,e){const t={get(o){const i=this.__v_raw,a=cn(i),s=cn(o);n||(Io(o,s)&&Kr(a,"get",o),Kr(a,"get",s));const{has:l}=bp(a),c=e?y_:n?wp:Ur;if(l.call(a,o))return c(i.get(o));if(l.call(a,s))return c(i.get(s));i!==a&&i.get(o)},get size(){const o=this.__v_raw;return!n&&Kr(cn(o),"iterate",Cl),o.size},has(o){const i=this.__v_raw,a=cn(i),s=cn(o);return n||(Io(o,s)&&Kr(a,"has",o),Kr(a,"has",s)),o===s?i.has(o):i.has(o)||i.has(s)},forEach(o,i){const a=this,s=a.__v_raw,l=cn(s),c=e?y_:n?wp:Ur;return!n&&Kr(l,"iterate",Cl),s.forEach((u,d)=>o.call(i,c(u),c(d),a))}};return br(t,n?{add:xp("add"),set:xp("set"),delete:xp("delete"),clear:xp("clear")}:{add(o){!e&&!gi(o)&&!Ds(o)&&(o=cn(o));const i=cn(this);return bp(i).has.call(i,o)||(i.add(o),Oa(i,"add",o,o)),this},set(o,i){!e&&!gi(i)&&!Ds(i)&&(i=cn(i));const a=cn(this),{has:s,get:l}=bp(a);let c=s.call(a,o);c||(o=cn(o),c=s.call(a,o));const u=l.call(a,o);return a.set(o,i),c?Io(i,u)&&Oa(a,"set",o,i):Oa(a,"add",o,i),this},delete(o){const i=cn(this),{has:a,get:s}=bp(i);let l=a.call(i,o);l||(o=cn(o),l=a.call(i,o)),s&&s.call(i,o);const c=i.delete(o);return l&&Oa(i,"delete",o,void 0),c},clear(){const o=cn(this),i=o.size!==0,a=o.clear();return i&&Oa(o,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(o=>{t[o]=QN(o,n,e)}),t}function Ep(n,e){const t=$N(n,e);return(r,o,i)=>o==="__v_isReactive"?!n:o==="__v_isReadonly"?n:o==="__v_raw"?r:Reflect.get(vn(t,o)&&o in r?t:r,o,i)}const YN={get:Ep(!1,!1)},XN={get:Ep(!1,!0)},qN={get:Ep(!0,!1)},KN={get:Ep(!0,!0)},Ux=new WeakMap,zx=new WeakMap,Gx=new WeakMap,Hx=new WeakMap;function ZN(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function JN(n){return n.__v_skip||!Object.isExtensible(n)?0:ZN(CN(n))}function Zr(n){return Ds(n)?n:Sp(n,!1,GN,YN,Ux)}function Wx(n){return Sp(n,!1,WN,XN,zx)}function Cp(n){return Sp(n,!0,HN,qN,Gx)}function T3e(n){return Sp(n,!0,jN,KN,Hx)}function Sp(n,e,t,r,o){if(!wn(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const i=JN(n);if(i===0)return n;const a=o.get(n);if(a)return a;const s=new Proxy(n,i===2?r:t);return o.set(n,s),s}function Pc(n){return Ds(n)?Pc(n.__v_raw):!!(n&&n.__v_isReactive)}function Ds(n){return!!(n&&n.__v_isReadonly)}function gi(n){return!!(n&&n.__v_isShallow)}function b_(n){return n?!!n.__v_raw:!1}function cn(n){const e=n&&n.__v_raw;return e?cn(e):n}function e8(n){return!vn(n,"__v_skip")&&Object.isExtensible(n)&&Ax(n,"__v_skip",!0),n}const Ur=n=>wn(n)?Zr(n):n,wp=n=>wn(n)?Cp(n):n;function Ir(n){return n?n.__v_isRef===!0:!1}function vt(n){return jx(n,!1)}function Jr(n){return jx(n,!0)}function jx(n,e){return Ir(n)?n:new t8(n,e)}class t8{constructor(e,t){this.dep=new Ap,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:cn(e),this._value=t?e:Ur(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,r=this.__v_isShallow||gi(e)||Ds(e);e=r?e:cn(e),Io(e,t)&&(this._rawValue=e,this._value=r?e:Ur(e),this.dep.trigger())}}function Ct(n){return Ir(n)?n.value:n}function Bs(n){return Lt(n)?n():Ct(n)}const n8={get:(n,e,t)=>e==="__v_raw"?n:Ct(Reflect.get(n,e,t)),set:(n,e,t,r)=>{const o=n[e];return Ir(o)&&!Ir(t)?(o.value=t,!0):Reflect.set(n,e,t,r)}};function Qx(n){return Pc(n)?n:new Proxy(n,n8)}class r8{constructor(e){this.__v_isRef=!0,this._value=void 0;const t=this.dep=new Ap,{get:r,set:o}=e(t.track.bind(t),t.trigger.bind(t));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(e){this._set(e)}}function o8(n){return new r8(n)}class i8{constructor(e,t,r){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Ap(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Bd-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Nn!==this)return Tx(this,!0),!0}get value(){const e=this.dep.track();return Lx(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function a8(n,e,t=!1){let r,o;return Lt(n)?r=n:(r=n.get,o=n.set),new i8(r,o,t)}const Mp={},Tp=new WeakMap;let Sl;function s8(n,e=!1,t=Sl){if(t){let r=Tp.get(t);r||Tp.set(t,r=[]),r.push(n)}}function l8(n,e,t=en){const{immediate:r,deep:o,once:i,scheduler:a,augmentJob:s,call:l}=t,c=b=>o?b:gi(b)||o===!1||o===0?Fa(b,1):Fa(b);let u,d,f,h,p=!1,m=!1;if(Ir(n)?(d=()=>n.value,p=gi(n)):Pc(n)?(d=()=>c(n),p=!0):_t(n)?(m=!0,p=n.some(b=>Pc(b)||gi(b)),d=()=>n.map(b=>{if(Ir(b))return b.value;if(Pc(b))return c(b);if(Lt(b))return l?l(b,2):b()})):Lt(n)?e?d=l?()=>l(n,2):n:d=()=>{if(f){sa();try{f()}finally{la()}}const b=Sl;Sl=u;try{return l?l(n,3,[h]):n(h)}finally{Sl=b}}:d=aa,e&&o){const b=d,E=o===!0?1/0:o;d=()=>Fa(b(),E)}const g=Sx(),_=()=>{u.stop(),g&&g.active&&a_(g.effects,u)};if(i&&e){const b=e;e=(...E)=>{b(...E),_()}}let A=m?new Array(n.length).fill(Mp):Mp;const y=b=>{if(!(!(u.flags&1)||!u.dirty&&!b))if(e){const E=u.run();if(o||p||(m?E.some((x,w)=>Io(x,A[w])):Io(E,A))){f&&f();const x=Sl;Sl=u;try{const w=[E,A===Mp?void 0:m&&A[0]===Mp?[]:A,h];A=E,l?l(e,3,w):e(...w)}finally{Sl=x}}}else u.run()};return s&&s(y),u=new wx(d),u.scheduler=a?()=>a(y,!1):y,h=b=>s8(b,!1,u),f=u.onStop=()=>{const b=Tp.get(u);if(b){if(l)l(b,4);else for(const E of b)E();Tp.delete(u)}},e?r?y(!0):A=u.run():a?a(y.bind(null,!0),!0):u.run(),_.pause=u.pause.bind(u),_.resume=u.resume.bind(u),_.stop=_,_}function Fa(n,e=1/0,t){if(e<=0||!wn(n)||n.__v_skip||(t=t||new Map,(t.get(n)||0)>=e))return n;if(t.set(n,e),e--,Ir(n))Fa(n.value,e,t);else if(_t(n))for(let r=0;r{Fa(r,e,t)});else if(vx(n)){for(const r in n)Fa(n[r],e,t);for(const r of Object.getOwnPropertySymbols(n))Object.prototype.propertyIsEnumerable.call(n,r)&&Fa(n[r],e,t)}return n}/** +* @vue/runtime-core v3.5.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const kd=[];let x_=!1;function I3e(n,...e){if(x_)return;x_=!0,sa();const t=kd.length?kd[kd.length-1].component:null,r=t&&t.appContext.config.warnHandler,o=c8();if(r)Dc(r,t,11,[n+e.map(i=>{var a,s;return(s=(a=i.toString)==null?void 0:a.call(i))!=null?s:JSON.stringify(i)}).join(""),t&&t.proxy,o.map(({vnode:i})=>`at <${tC(t,i.type)}>`).join(` +`),o]);else{const i=[`[Vue warn]: ${n}`,...e];o.length&&i.push(` +`,...u8(o)),console.warn(...i)}la(),x_=!1}function c8(){let n=kd[kd.length-1];if(!n)return[];const e=[];for(;n;){const t=e[0];t&&t.vnode===n?t.recurseCount++:e.push({vnode:n,recurseCount:0});const r=n.component&&n.component.parent;n=r&&r.vnode}return e}function u8(n){const e=[];return n.forEach((t,r)=>{e.push(...r===0?[]:[` +`],...d8(t))}),e}function d8({vnode:n,recurseCount:e}){const t=e>0?`... (${e} recursive calls)`:"",r=n.component?n.component.parent==null:!1,o=` at <${tC(n.component,n.type,r)}`,i=">"+t;return n.props?[o,...f8(n.props),i]:[o+i]}function f8(n){const e=[],t=Object.keys(n);return t.slice(0,3).forEach(r=>{e.push(...$x(r,n[r]))}),t.length>3&&e.push(" ..."),e}function $x(n,e,t){return Yn(e)?(e=JSON.stringify(e),t?e:[`${n}=${e}`]):typeof e=="number"||typeof e=="boolean"||e==null?t?e:[`${n}=${e}`]:Ir(e)?(e=$x(n,cn(e.value),!0),t?e:[`${n}=Ref<`,e,">"]):Lt(e)?[`${n}=fn${e.name?`<${e.name}>`:""}`]:(e=cn(e),t?e:[`${n}=`,e])}function Dc(n,e,t,r){try{return r?n(...r):n()}catch(o){Fd(o,e,t)}}function ki(n,e,t,r){if(Lt(n)){const o=Dc(n,e,t,r);return o&&gx(o)&&o.catch(i=>{Fd(i,e,t)}),o}if(_t(n)){const o=[];for(let i=0;i>>1,o=uo[r],i=Vd(o);i=Vd(t)?uo.push(n):uo.splice(p8(e),0,n),n.flags|=1,Xx()}}function Xx(){Ip||(Ip=Yx.then(Zx))}function m8(n){_t(n)?Bc.push(...n):Ns&&n.id===-1?Ns.splice(Nc+1,0,n):n.flags&1||(Bc.push(n),n.flags|=1),Xx()}function qx(n,e,t=ca+1){for(;tVd(t)-Vd(r));if(Bc.length=0,Ns){Ns.push(...e);return}for(Ns=e,Nc=0;Ncn.id==null?n.flags&2?-1:1/0:n.id;function Zx(n){try{for(ca=0;ca{r._d&&Hp(-1);const i=Rp(e);let a;try{a=n(...o)}finally{Rp(i),r._d&&Hp(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function Kn(n,e){if(zr===null)return n;const t=Qp(zr),r=n.dirs||(n.dirs=[]);for(let o=0;on.__isTeleport,Ud=n=>n&&(n.disabled||n.disabled===""),nE=n=>n&&(n.defer||n.defer===""),rE=n=>typeof SVGElement<"u"&&n instanceof SVGElement,oE=n=>typeof MathMLElement=="function"&&n instanceof MathMLElement,C_=(n,e)=>{const t=n&&n.to;return Yn(t)?e?e(t):null:t},iE={name:"Teleport",__isTeleport:!0,process(n,e,t,r,o,i,a,s,l,c){const{mc:u,pc:d,pbc:f,o:{insert:h,querySelector:p,createText:m,createComment:g}}=c,_=Ud(e.props);let{shapeFlag:A,children:y,dynamicChildren:b}=e;if(n==null){const E=e.el=m(""),x=e.anchor=m("");h(E,t,r),h(x,t,r);const w=(C,P)=>{A&16&&u(y,C,P,o,i,a,s,l)},L=()=>{const C=e.target=C_(e.props,p),P=aE(C,e,m,h);C&&(a!=="svg"&&rE(C)?a="svg":a!=="mathml"&&oE(C)&&(a="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(C),_||(w(C,P),Pp(e,!1)))};_&&(w(t,x),Pp(e,!0)),nE(e.props)?(e.el.__isMounted=!1,ho(()=>{L(),delete e.el.__isMounted},i)):L()}else{if(nE(e.props)&&n.el.__isMounted===!1){ho(()=>{iE.process(n,e,t,r,o,i,a,s,l,c)},i);return}e.el=n.el,e.targetStart=n.targetStart;const E=e.anchor=n.anchor,x=e.target=n.target,w=e.targetAnchor=n.targetAnchor,L=Ud(n.props),C=L?t:x,P=L?E:w;if(a==="svg"||rE(x)?a="svg":(a==="mathml"||oE(x))&&(a="mathml"),b?(f(n.dynamicChildren,b,C,o,i,a,s),O_(n,e,!0)):l||d(n,e,C,P,o,i,a,s,!1),_)L?e.props&&n.props&&e.props.to!==n.props.to&&(e.props.to=n.props.to):Lp(e,t,E,c,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const D=e.target=C_(e.props,p);D&&Lp(e,D,null,c,0)}else L&&Lp(e,x,w,c,1);Pp(e,_)}},remove(n,e,t,{um:r,o:{remove:o}},i){const{shapeFlag:a,children:s,anchor:l,targetStart:c,targetAnchor:u,target:d,props:f}=n;if(d&&(o(c),o(u)),i&&o(l),a&16){const h=i||!Ud(f);for(let p=0;p{n.isMounted=!0}),Fc(()=>{n.isUnmounting=!0}),n}const _i=[Function,Array],sE={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:_i,onEnter:_i,onAfterEnter:_i,onEnterCancelled:_i,onBeforeLeave:_i,onLeave:_i,onAfterLeave:_i,onLeaveCancelled:_i,onBeforeAppear:_i,onAppear:_i,onAfterAppear:_i,onAppearCancelled:_i},lE=n=>{const e=n.subTree;return e.component?lE(e.component):e},v8={name:"BaseTransition",props:sE,setup(n,{slots:e}){const t=Po(),r=_8();return()=>{const o=e.default&&fE(e.default(),!0);if(!o||!o.length)return;const i=cE(o),a=cn(n),{mode:s}=a;if(r.isLeaving)return w_(i);const l=dE(i);if(!l)return w_(i);let c=S_(l,a,r,t,d=>c=d);l.type!==eo&&zd(l,c);let u=t.subTree&&dE(t.subTree);if(u&&u.type!==eo&&!Rl(u,l)&&lE(t).type!==eo){let d=S_(u,a,r,t);if(zd(u,d),s==="out-in"&&l.type!==eo)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,t.job.flags&8||t.update(),delete d.afterLeave,u=void 0},w_(i);s==="in-out"&&l.type!==eo?d.delayLeave=(f,h,p)=>{const m=uE(r,u);m[String(u.key)]=u,f[Ua]=()=>{h(),f[Ua]=void 0,delete c.delayedLeave,u=void 0},c.delayedLeave=()=>{p(),delete c.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return i}}};function cE(n){let e=n[0];if(n.length>1){for(const t of n)if(t.type!==eo){e=t;break}}return e}const A8=v8;function uE(n,e){const{leavingVNodes:t}=n;let r=t.get(e.type);return r||(r=Object.create(null),t.set(e.type,r)),r}function S_(n,e,t,r,o){const{appear:i,mode:a,persisted:s=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:h,onAfterLeave:p,onLeaveCancelled:m,onBeforeAppear:g,onAppear:_,onAfterAppear:A,onAppearCancelled:y}=e,b=String(n.key),E=uE(t,n),x=(C,P)=>{C&&ki(C,r,9,P)},w=(C,P)=>{const D=P[1];x(C,P),_t(C)?C.every(Q=>Q.length<=1)&&D():C.length<=1&&D()},L={mode:a,persisted:s,beforeEnter(C){let P=l;if(!t.isMounted)if(i)P=g||l;else return;C[Ua]&&C[Ua](!0);const D=E[b];D&&Rl(n,D)&&D.el[Ua]&&D.el[Ua](),x(P,[C])},enter(C){let P=c,D=u,Q=d;if(!t.isMounted)if(i)P=_||c,D=A||u,Q=y||d;else return;let re=!1;const G=C[Dp]=se=>{re||(re=!0,se?x(Q,[C]):x(D,[C]),L.delayedLeave&&L.delayedLeave(),C[Dp]=void 0)};P?w(P,[C,G]):G()},leave(C,P){const D=String(n.key);if(C[Dp]&&C[Dp](!0),t.isUnmounting)return P();x(f,[C]);let Q=!1;const re=C[Ua]=G=>{Q||(Q=!0,P(),G?x(m,[C]):x(p,[C]),C[Ua]=void 0,E[D]===n&&delete E[D])};E[D]=n,h?w(h,[C,re]):re()},clone(C){const P=S_(C,e,t,r,o);return o&&o(P),P}};return L}function w_(n){if(Hd(n))return n=Os(n),n.children=null,n}function dE(n){if(!Hd(n))return tE(n.type)&&n.children?cE(n.children):n;if(n.component)return n.component.subTree;const{shapeFlag:e,children:t}=n;if(t){if(e&16)return t[0];if(e&32&&Lt(t.default))return t.default()}}function zd(n,e){n.shapeFlag&6&&n.component?(n.transition=e,zd(n.component.subTree,e)):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function fE(n,e=!1,t){let r=[],o=0;for(let i=0;i1)for(let i=0;iGd(p,e&&(_t(e)?e[m]:e),t,r,o));return}if(kc(r)&&!o){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Gd(n,e,t,r.component.subTree);return}const i=r.shapeFlag&4?Qp(r.component):r.el,a=o?null:i,{i:s,r:l}=n,c=e&&e.r,u=s.refs===en?s.refs={}:s.refs,d=s.setupState,f=cn(d),h=d===en?px:p=>vn(f,p);if(c!=null&&c!==l){if(hE(e),Yn(c))u[c]=null,h(c)&&(d[c]=null);else if(Ir(c)){c.value=null;const p=e;p.k&&(u[p.k]=null)}}if(Lt(l))Dc(l,s,12,[a,u]);else{const p=Yn(l),m=Ir(l);if(p||m){const g=()=>{if(n.f){const _=p?h(l)?d[l]:u[l]:l.value;if(o)_t(_)&&a_(_,i);else if(_t(_))_.includes(i)||_.push(i);else if(p)u[l]=[i],h(l)&&(d[l]=u[l]);else{const A=[i];l.value=A,n.k&&(u[n.k]=A)}}else p?(u[l]=a,h(l)&&(d[l]=a)):m&&(l.value=a,n.k&&(u[n.k]=a))};if(a){const _=()=>{g(),Bp.delete(n)};_.id=-1,Bp.set(n,_),ho(_,t)}else hE(n),g()}}}function hE(n){const e=Bp.get(n);e&&(e.flags|=8,Bp.delete(n))}const pE=n=>n.nodeType===8;vp().requestIdleCallback,vp().cancelIdleCallback;function y8(n,e){if(pE(n)&&n.data==="["){let t=1,r=n.nextSibling;for(;r;){if(r.nodeType===1){if(e(r)===!1)break}else if(pE(r))if(r.data==="]"){if(--t===0)break}else r.data==="["&&t++;r=r.nextSibling}}else e(n)}const kc=n=>!!n.type.__asyncLoader;function b8(n){Lt(n)&&(n={loader:n});const{loader:e,loadingComponent:t,errorComponent:r,delay:o=200,hydrate:i,timeout:a,suspensible:s=!0,onError:l}=n;let c=null,u,d=0;const f=()=>(d++,c=null,h()),h=()=>{let p;return c||(p=c=e().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),l)return new Promise((g,_)=>{l(m,()=>g(f()),()=>_(m),d+1)});throw m}).then(m=>p!==c&&c?c:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),u=m,m)))};return Ml({name:"AsyncComponentWrapper",__asyncLoader:h,__asyncHydrate(p,m,g){let _=!1;(m.bu||(m.bu=[])).push(()=>_=!0);const A=()=>{_||g()},y=i?()=>{const b=i(A,E=>y8(p,E));b&&(m.bum||(m.bum=[])).push(b)}:A;u?y():h().then(()=>!m.isUnmounted&&y())},get __asyncResolved(){return u},setup(){const p=Gr;if(M_(p),u)return()=>Np(u,p);const m=y=>{c=null,Fd(y,p,13,!r)};if(s&&p.suspense||Vc)return h().then(y=>()=>Np(y,p)).catch(y=>(m(y),()=>r?Be(r,{error:y}):null));const g=vt(!1),_=vt(),A=vt(!!o);return o&&setTimeout(()=>{A.value=!1},o),a!=null&&setTimeout(()=>{if(!g.value&&!_.value){const y=new Error(`Async component timed out after ${a}ms.`);m(y),_.value=y}},a),h().then(()=>{g.value=!0,p.parent&&Hd(p.parent.vnode)&&p.parent.update()}).catch(y=>{m(y),_.value=y}),()=>{if(g.value&&u)return Np(u,p);if(_.value&&r)return Be(r,{error:_.value});if(t&&!A.value)return Np(t,p)}}})}function Np(n,e){const{ref:t,props:r,children:o,ce:i}=e.vnode,a=Be(n,r,o);return a.ref=t,a.ce=i,delete e.vnode.ce,a}const Hd=n=>n.type.__isKeepAlive;function x8(n,e){mE(n,"a",e)}function E8(n,e){mE(n,"da",e)}function mE(n,e,t=Gr){const r=n.__wdc||(n.__wdc=()=>{let o=t;for(;o;){if(o.isDeactivated)return;o=o.parent}return n()});if(Op(e,r,t),t){let o=t.parent;for(;o&&o.parent;)Hd(o.parent.vnode)&&C8(r,e,t,o),o=o.parent}}function C8(n,e,t,r){const o=Op(e,n,r,!0);Wd(()=>{a_(r[e],o)},t)}function Op(n,e,t=Gr,r=!1){if(t){const o=t[n]||(t[n]=[]),i=e.__weh||(e.__weh=(...a)=>{sa();const s=Kd(t),l=ki(e,t,n,a);return s(),la(),l});return r?o.unshift(i):o.push(i),i}}const za=n=>(e,t=Gr)=>{(!Vc||n==="sp")&&Op(n,(...r)=>e(...r),t)},gE=za("bm"),$o=za("m"),S8=za("bu"),_E=za("u"),Fc=za("bum"),Wd=za("um"),w8=za("sp"),M8=za("rtg"),T8=za("rtc");function I8(n,e=Gr){Op("ec",n,e)}const R8="components";function Yt(n,e){return P8(R8,n,!0,e)||n}const L8=Symbol.for("v-ndc");function P8(n,e,t=!0,r=!1){const o=zr||Gr;if(o){const i=o.type;{const s=eC(i,!1);if(s&&(s===e||s===Qo(e)||s===mp(Qo(e))))return i}const a=vE(o[n]||i[n],e)||vE(o.appContext[n],e);return!a&&r?i:a}}function vE(n,e){return n&&(n[e]||n[Qo(e)]||n[mp(Qo(e))])}function Xn(n,e,t,r){let o;const i=t,a=_t(n);if(a||Yn(n)){const s=a&&Pc(n);let l=!1,c=!1;s&&(l=!gi(n),c=Ds(n),n=yp(n)),o=new Array(n.length);for(let u=0,d=n.length;ue(s,l,void 0,i));else{const s=Object.keys(n);o=new Array(s.length);for(let l=0,c=s.length;l{const i=r.fn(...o);return i&&(i.key=r.key),i}:r.fn)}return n}function Ro(n,e,t={},r,o){if(zr.ce||zr.parent&&kc(zr.parent)&&zr.parent.ce){const c=Object.keys(t).length>0;return e!=="default"&&(t.name=e),he(),gt(Nt,null,[Be("slot",t,r&&r())],c?-2:64)}let i=n[e];i&&i._c&&(i._d=!1),he();const a=i&&yE(i(t)),s=t.key||a&&a.key,l=gt(Nt,{key:(s&&!Ni(s)?s:`_${e}`)+(!a&&r?"_fb":"")},a||(r?r():[]),a&&n._===1?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function yE(n){return n.some(e=>qd(e)?!(e.type===eo||e.type===Nt&&!yE(e.children)):!0)?n:null}const T_=n=>n?KE(n)?Qp(n):T_(n.parent):null,jd=br(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>T_(n.parent),$root:n=>T_(n.root),$host:n=>n.ce,$emit:n=>n.emit,$options:n=>CE(n),$forceUpdate:n=>n.f||(n.f=()=>{E_(n.update)}),$nextTick:n=>n.n||(n.n=Va.bind(n.proxy)),$watch:n=>e7.bind(n)}),I_=(n,e)=>n!==en&&!n.__isScriptSetup&&vn(n,e),D8={get({_:n},e){if(e==="__v_skip")return!0;const{ctx:t,setupState:r,data:o,props:i,accessCache:a,type:s,appContext:l}=n;let c;if(e[0]!=="$"){const h=a[e];if(h!==void 0)switch(h){case 1:return r[e];case 2:return o[e];case 4:return t[e];case 3:return i[e]}else{if(I_(r,e))return a[e]=1,r[e];if(o!==en&&vn(o,e))return a[e]=2,o[e];if((c=n.propsOptions[0])&&vn(c,e))return a[e]=3,i[e];if(t!==en&&vn(t,e))return a[e]=4,t[e];R_&&(a[e]=0)}}const u=jd[e];let d,f;if(u)return e==="$attrs"&&Kr(n.attrs,"get",""),u(n);if((d=s.__cssModules)&&(d=d[e]))return d;if(t!==en&&vn(t,e))return a[e]=4,t[e];if(f=l.config.globalProperties,vn(f,e))return f[e]},set({_:n},e,t){const{data:r,setupState:o,ctx:i}=n;return I_(o,e)?(o[e]=t,!0):r!==en&&vn(r,e)?(r[e]=t,!0):vn(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(i[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:r,appContext:o,propsOptions:i,type:a}},s){let l,c;return!!(t[s]||n!==en&&s[0]!=="$"&&vn(n,s)||I_(e,s)||(l=i[0])&&vn(l,s)||vn(r,s)||vn(jd,s)||vn(o.config.globalProperties,s)||(c=a.__cssModules)&&c[s])},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:vn(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};function kp(n){return _t(n)?n.reduce((e,t)=>(e[t]=null,e),{}):n}function bE(n,e){return!n||!e?n||e:_t(n)&&_t(e)?n.concat(e):br({},kp(n),kp(e))}let R_=!0;function B8(n){const e=CE(n),t=n.proxy,r=n.ctx;R_=!1,e.beforeCreate&&xE(e.beforeCreate,n,"bc");const{data:o,computed:i,methods:a,watch:s,provide:l,inject:c,created:u,beforeMount:d,mounted:f,beforeUpdate:h,updated:p,activated:m,deactivated:g,beforeDestroy:_,beforeUnmount:A,destroyed:y,unmounted:b,render:E,renderTracked:x,renderTriggered:w,errorCaptured:L,serverPrefetch:C,expose:P,inheritAttrs:D,components:Q,directives:re,filters:G}=e;if(c&&N8(c,r,null),a)for(const ie in a){const H=a[ie];Lt(H)&&(r[ie]=H.bind(t))}if(o){const ie=o.call(t,t);wn(ie)&&(n.data=Zr(ie))}if(R_=!0,i)for(const ie in i){const H=i[ie],T=Lt(H)?H.bind(t,t):Lt(H.get)?H.get.bind(t,t):aa,R=!Lt(H)&&Lt(H.set)?H.set.bind(t):aa,O=bt({get:T,set:R});Object.defineProperty(r,ie,{enumerable:!0,configurable:!0,get:()=>O.value,set:W=>O.value=W})}if(s)for(const ie in s)EE(s[ie],r,t,ie);if(l){const ie=Lt(l)?l.call(t):l;Reflect.ownKeys(ie).forEach(H=>{Vp(H,ie[H])})}u&&xE(u,n,"c");function ee(ie,H){_t(H)?H.forEach(T=>ie(T.bind(t))):H&&ie(H.bind(t))}if(ee(gE,d),ee($o,f),ee(S8,h),ee(_E,p),ee(x8,m),ee(E8,g),ee(I8,L),ee(T8,x),ee(M8,w),ee(Fc,A),ee(Wd,b),ee(w8,C),_t(P))if(P.length){const ie=n.exposed||(n.exposed={});P.forEach(H=>{Object.defineProperty(ie,H,{get:()=>t[H],set:T=>t[H]=T,enumerable:!0})})}else n.exposed||(n.exposed={});E&&n.render===aa&&(n.render=E),D!=null&&(n.inheritAttrs=D),Q&&(n.components=Q),re&&(n.directives=re),C&&M_(n)}function N8(n,e,t=aa){_t(n)&&(n=L_(n));for(const r in n){const o=n[r];let i;wn(o)?"default"in o?i=Lo(o.from||r,o.default,!0):i=Lo(o.from||r):i=Lo(o),Ir(i)?Object.defineProperty(e,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):e[r]=i}}function xE(n,e,t){ki(_t(n)?n.map(r=>r.bind(e.proxy)):n.bind(e.proxy),e,t)}function EE(n,e,t,r){let o=r.includes(".")?zE(t,r):()=>t[r];if(Yn(n)){const i=e[n];Lt(i)&&dr(o,i)}else if(Lt(n))dr(o,n.bind(t));else if(wn(n))if(_t(n))n.forEach(i=>EE(i,e,t,r));else{const i=Lt(n.handler)?n.handler.bind(t):e[n.handler];Lt(i)&&dr(o,i,n)}}function CE(n){const e=n.type,{mixins:t,extends:r}=e,{mixins:o,optionsCache:i,config:{optionMergeStrategies:a}}=n.appContext,s=i.get(e);let l;return s?l=s:!o.length&&!t&&!r?l=e:(l={},o.length&&o.forEach(c=>Fp(l,c,a,!0)),Fp(l,e,a)),wn(e)&&i.set(e,l),l}function Fp(n,e,t,r=!1){const{mixins:o,extends:i}=e;i&&Fp(n,i,t,!0),o&&o.forEach(a=>Fp(n,a,t,!0));for(const a in e)if(!(r&&a==="expose")){const s=O8[a]||t&&t[a];n[a]=s?s(n[a],e[a]):e[a]}return n}const O8={data:SE,props:wE,emits:wE,methods:Qd,computed:Qd,beforeCreate:fo,created:fo,beforeMount:fo,mounted:fo,beforeUpdate:fo,updated:fo,beforeDestroy:fo,beforeUnmount:fo,destroyed:fo,unmounted:fo,activated:fo,deactivated:fo,errorCaptured:fo,serverPrefetch:fo,components:Qd,directives:Qd,watch:F8,provide:SE,inject:k8};function SE(n,e){return e?n?function(){return br(Lt(n)?n.call(this,this):n,Lt(e)?e.call(this,this):e)}:e:n}function k8(n,e){return Qd(L_(n),L_(e))}function L_(n){if(_t(n)){const e={};for(let t=0;t1)return t&&Lt(e)?e.call(r&&r.proxy):e}}function TE(){return!!(Po()||Tl)}const IE={},RE=()=>Object.create(IE),LE=n=>Object.getPrototypeOf(n)===IE;function z8(n,e,t,r=!1){const o={},i=RE();n.propsDefaults=Object.create(null),PE(n,e,o,i);for(const a in n.propsOptions[0])a in o||(o[a]=void 0);t?n.props=r?o:Wx(o):n.type.props?n.props=o:n.props=i,n.attrs=i}function G8(n,e,t,r){const{props:o,attrs:i,vnode:{patchFlag:a}}=n,s=cn(o),[l]=n.propsOptions;let c=!1;if((r||a>0)&&!(a&16)){if(a&8){const u=n.vnode.dynamicProps;for(let d=0;d{l=!0;const[f,h]=DE(d,e,!0);br(a,f),h&&s.push(...h)};!t&&e.mixins.length&&e.mixins.forEach(u),n.extends&&u(n.extends),n.mixins&&n.mixins.forEach(u)}if(!i&&!l)return wn(n)&&r.set(n,Tc),Tc;if(_t(i))for(let u=0;un==="_"||n==="_ctx"||n==="$stable",B_=n=>_t(n)?n.map(ua):[ua(n)],W8=(n,e,t)=>{if(e._n)return e;const r=ot((...o)=>B_(e(...o)),t);return r._c=!1,r},NE=(n,e,t)=>{const r=n._ctx;for(const o in n){if(D_(o))continue;const i=n[o];if(Lt(i))e[o]=W8(o,i,r);else if(i!=null){const a=B_(i);e[o]=()=>a}}},OE=(n,e)=>{const t=B_(e);n.slots.default=()=>t},kE=(n,e,t)=>{for(const r in e)(t||!D_(r))&&(n[r]=e[r])},j8=(n,e,t)=>{const r=n.slots=RE();if(n.vnode.shapeFlag&32){const o=e._;o?(kE(r,e,t),t&&Ax(r,"_",o,!0)):NE(e,r)}else e&&OE(n,e)},Q8=(n,e,t)=>{const{vnode:r,slots:o}=n;let i=!0,a=en;if(r.shapeFlag&32){const s=e._;s?t&&s===1?i=!1:kE(o,e,t):(i=!e.$stable,NE(e,o)),a=e}else e&&(OE(n,e),a={default:1});if(i)for(const s in o)!D_(s)&&a[s]==null&&delete o[s]},ho=l7;function $8(n){return Y8(n)}function Y8(n,e){const t=vp();t.__VUE__=!0;const{insert:r,remove:o,patchProp:i,createElement:a,createText:s,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:f,setScopeId:h=aa,insertStaticContent:p}=n,m=(v,M,S,I=null,J=null,$=null,B=void 0,V=null,Y=!!M.dynamicChildren)=>{if(v===M)return;v&&!Rl(v,M)&&(I=k(v),W(v,J,$,!0),v=null),M.patchFlag===-2&&(Y=!1,M.dynamicChildren=null);const{type:le,ref:me,shapeFlag:fe}=M;switch(le){case $d:g(v,M,S,I);break;case eo:_(v,M,S,I);break;case Gp:v==null&&A(M,S,I,B);break;case Nt:Q(v,M,S,I,J,$,B,V,Y);break;default:fe&1?E(v,M,S,I,J,$,B,V,Y):fe&6?re(v,M,S,I,J,$,B,V,Y):(fe&64||fe&128)&&le.process(v,M,S,I,J,$,B,V,Y,U)}me!=null&&J?Gd(me,v&&v.ref,$,M||v,!M):me==null&&v&&v.ref!=null&&Gd(v.ref,null,$,v,!0)},g=(v,M,S,I)=>{if(v==null)r(M.el=s(M.children),S,I);else{const J=M.el=v.el;M.children!==v.children&&c(J,M.children)}},_=(v,M,S,I)=>{v==null?r(M.el=l(M.children||""),S,I):M.el=v.el},A=(v,M,S,I)=>{[v.el,v.anchor]=p(v.children,M,S,I,v.el,v.anchor)},y=({el:v,anchor:M},S,I)=>{let J;for(;v&&v!==M;)J=f(v),r(v,S,I),v=J;r(M,S,I)},b=({el:v,anchor:M})=>{let S;for(;v&&v!==M;)S=f(v),o(v),v=S;o(M)},E=(v,M,S,I,J,$,B,V,Y)=>{if(M.type==="svg"?B="svg":M.type==="math"&&(B="mathml"),v==null)x(M,S,I,J,$,B,V,Y);else{const le=v.el&&v.el._isVueCE?v.el:null;try{le&&le._beginPatch(),C(v,M,J,$,B,V,Y)}finally{le&&le._endPatch()}}},x=(v,M,S,I,J,$,B,V)=>{let Y,le;const{props:me,shapeFlag:fe,transition:te,dirs:de}=v;if(Y=v.el=a(v.type,$,me&&me.is,me),fe&8?u(Y,v.children):fe&16&&L(v.children,Y,null,I,J,N_(v,$),B,V),de&&wl(v,null,I,"created"),w(Y,v,v.scopeId,B,I),me){for(const Ie in me)Ie!=="value"&&!Id(Ie)&&i(Y,Ie,null,me[Ie],$,I);"value"in me&&i(Y,"value",null,me.value,$),(le=me.onVnodeBeforeMount)&&da(le,I,v)}de&&wl(v,null,I,"beforeMount");const we=X8(J,te);we&&te.beforeEnter(Y),r(Y,M,S),((le=me&&me.onVnodeMounted)||we||de)&&ho(()=>{le&&da(le,I,v),we&&te.enter(Y),de&&wl(v,null,I,"mounted")},J)},w=(v,M,S,I,J)=>{if(S&&h(v,S),I)for(let $=0;${for(let le=Y;le{const V=M.el=v.el;let{patchFlag:Y,dynamicChildren:le,dirs:me}=M;Y|=v.patchFlag&16;const fe=v.props||en,te=M.props||en;let de;if(S&&Il(S,!1),(de=te.onVnodeBeforeUpdate)&&da(de,S,M,v),me&&wl(M,v,S,"beforeUpdate"),S&&Il(S,!0),(fe.innerHTML&&te.innerHTML==null||fe.textContent&&te.textContent==null)&&u(V,""),le?P(v.dynamicChildren,le,V,S,I,N_(M,J),$):B||H(v,M,V,null,S,I,N_(M,J),$,!1),Y>0){if(Y&16)D(V,fe,te,S,J);else if(Y&2&&fe.class!==te.class&&i(V,"class",null,te.class,J),Y&4&&i(V,"style",fe.style,te.style,J),Y&8){const we=M.dynamicProps;for(let Ie=0;Ie{de&&da(de,S,M,v),me&&wl(M,v,S,"updated")},I)},P=(v,M,S,I,J,$,B)=>{for(let V=0;V{if(M!==S){if(M!==en)for(const $ in M)!Id($)&&!($ in S)&&i(v,$,M[$],null,J,I);for(const $ in S){if(Id($))continue;const B=S[$],V=M[$];B!==V&&$!=="value"&&i(v,$,V,B,J,I)}"value"in S&&i(v,"value",M.value,S.value,J)}},Q=(v,M,S,I,J,$,B,V,Y)=>{const le=M.el=v?v.el:s(""),me=M.anchor=v?v.anchor:s("");let{patchFlag:fe,dynamicChildren:te,slotScopeIds:de}=M;de&&(V=V?V.concat(de):de),v==null?(r(le,S,I),r(me,S,I),L(M.children||[],S,me,J,$,B,V,Y)):fe>0&&fe&64&&te&&v.dynamicChildren?(P(v.dynamicChildren,te,S,J,$,B,V),(M.key!=null||J&&M===J.subTree)&&O_(v,M,!0)):H(v,M,S,me,J,$,B,V,Y)},re=(v,M,S,I,J,$,B,V,Y)=>{M.slotScopeIds=V,v==null?M.shapeFlag&512?J.ctx.activate(M,S,I,B,Y):G(M,S,I,J,$,B,Y):se(v,M,Y)},G=(v,M,S,I,J,$,B)=>{const V=v.component=m7(v,I,J);if(Hd(v)&&(V.ctx.renderer=U),g7(V,!1,B),V.asyncDep){if(J&&J.registerDep(V,ee,B),!v.el){const Y=V.subTree=Be(eo);_(null,Y,M,S),v.placeholder=Y.el}}else ee(V,v,M,S,J,$,B)},se=(v,M,S)=>{const I=M.component=v.component;if(a7(v,M,S))if(I.asyncDep&&!I.asyncResolved){ie(I,M,S);return}else I.next=M,I.update();else M.el=v.el,I.vnode=M},ee=(v,M,S,I,J,$,B)=>{const V=()=>{if(v.isMounted){let{next:fe,bu:te,u:de,parent:we,vnode:Ie}=v;{const Vt=FE(v);if(Vt){fe&&(fe.el=Ie.el,ie(v,fe,B)),Vt.asyncDep.then(()=>{v.isUnmounted||V()});return}}let Ne=fe,He;Il(v,!1),fe?(fe.el=Ie.el,ie(v,fe,B)):fe=Ie,te&&gp(te),(He=fe.props&&fe.props.onVnodeBeforeUpdate)&&da(He,we,fe,Ie),Il(v,!0);const je=WE(v),ct=v.subTree;v.subTree=je,m(ct,je,d(ct.el),k(ct),v,J,$),fe.el=je.el,Ne===null&&s7(v,je.el),de&&ho(de,J),(He=fe.props&&fe.props.onVnodeUpdated)&&ho(()=>da(He,we,fe,Ie),J)}else{let fe;const{el:te,props:de}=M,{bm:we,m:Ie,parent:Ne,root:He,type:je}=v,ct=kc(M);Il(v,!1),we&&gp(we),!ct&&(fe=de&&de.onVnodeBeforeMount)&&da(fe,Ne,M),Il(v,!0);{He.ce&&He.ce._def.shadowRoot!==!1&&He.ce._injectChildStyle(je);const Vt=v.subTree=WE(v);m(null,Vt,S,I,v,J,$),M.el=Vt.el}if(Ie&&ho(Ie,J),!ct&&(fe=de&&de.onVnodeMounted)){const Vt=M;ho(()=>da(fe,Ne,Vt),J)}(M.shapeFlag&256||Ne&&kc(Ne.vnode)&&Ne.vnode.shapeFlag&256)&&v.a&&ho(v.a,J),v.isMounted=!0,M=S=I=null}};v.scope.on();const Y=v.effect=new wx(V);v.scope.off();const le=v.update=Y.run.bind(Y),me=v.job=Y.runIfDirty.bind(Y);me.i=v,me.id=v.uid,Y.scheduler=()=>E_(me),Il(v,!0),le()},ie=(v,M,S)=>{M.component=v;const I=v.vnode.props;v.vnode=M,v.next=null,G8(v,M.props,I,S),Q8(v,M.children,S),sa(),qx(v),la()},H=(v,M,S,I,J,$,B,V,Y=!1)=>{const le=v&&v.children,me=v?v.shapeFlag:0,fe=M.children,{patchFlag:te,shapeFlag:de}=M;if(te>0){if(te&128){R(le,fe,S,I,J,$,B,V,Y);return}else if(te&256){T(le,fe,S,I,J,$,B,V,Y);return}}de&8?(me&16&&F(le,J,$),fe!==le&&u(S,fe)):me&16?de&16?R(le,fe,S,I,J,$,B,V,Y):F(le,J,$,!0):(me&8&&u(S,""),de&16&&L(fe,S,I,J,$,B,V,Y))},T=(v,M,S,I,J,$,B,V,Y)=>{v=v||Tc,M=M||Tc;const le=v.length,me=M.length,fe=Math.min(le,me);let te;for(te=0;teme?F(v,J,$,!0,!1,fe):L(M,S,I,J,$,B,V,Y,fe)},R=(v,M,S,I,J,$,B,V,Y)=>{let le=0;const me=M.length;let fe=v.length-1,te=me-1;for(;le<=fe&&le<=te;){const de=v[le],we=M[le]=Y?ks(M[le]):ua(M[le]);if(Rl(de,we))m(de,we,S,null,J,$,B,V,Y);else break;le++}for(;le<=fe&&le<=te;){const de=v[fe],we=M[te]=Y?ks(M[te]):ua(M[te]);if(Rl(de,we))m(de,we,S,null,J,$,B,V,Y);else break;fe--,te--}if(le>fe){if(le<=te){const de=te+1,we=dete)for(;le<=fe;)W(v[le],J,$,!0),le++;else{const de=le,we=le,Ie=new Map;for(le=we;le<=te;le++){const pe=M[le]=Y?ks(M[le]):ua(M[le]);pe.key!=null&&Ie.set(pe.key,le)}let Ne,He=0;const je=te-we+1;let ct=!1,Vt=0;const En=new Array(je);for(le=0;le=je){W(pe,J,$,!0);continue}let Te;if(pe.key!=null)Te=Ie.get(pe.key);else for(Ne=we;Ne<=te;Ne++)if(En[Ne-we]===0&&Rl(pe,M[Ne])){Te=Ne;break}Te===void 0?W(pe,J,$,!0):(En[Te-we]=le+1,Te>=Vt?Vt=Te:ct=!0,m(pe,M[Te],S,null,J,$,B,V,Y),He++)}const Rt=ct?q8(En):Tc;for(Ne=Rt.length-1,le=je-1;le>=0;le--){const pe=we+le,Te=M[pe],Ce=M[pe+1],Zt=pe+1{const{el:$,type:B,transition:V,children:Y,shapeFlag:le}=v;if(le&6){O(v.component.subTree,M,S,I);return}if(le&128){v.suspense.move(M,S,I);return}if(le&64){B.move(v,M,S,U);return}if(B===Nt){r($,M,S);for(let fe=0;feV.enter($),J);else{const{leave:fe,delayLeave:te,afterLeave:de}=V,we=()=>{v.ctx.isUnmounted?o($):r($,M,S)},Ie=()=>{$._isLeaving&&$[Ua](!0),fe($,()=>{we(),de&&de()})};te?te($,we,Ie):Ie()}else r($,M,S)},W=(v,M,S,I=!1,J=!1)=>{const{type:$,props:B,ref:V,children:Y,dynamicChildren:le,shapeFlag:me,patchFlag:fe,dirs:te,cacheIndex:de}=v;if(fe===-2&&(J=!1),V!=null&&(sa(),Gd(V,null,S,v,!0),la()),de!=null&&(M.renderCache[de]=void 0),me&256){M.ctx.deactivate(v);return}const we=me&1&&te,Ie=!kc(v);let Ne;if(Ie&&(Ne=B&&B.onVnodeBeforeUnmount)&&da(Ne,M,v),me&6)oe(v.component,S,I);else{if(me&128){v.suspense.unmount(S,I);return}we&&wl(v,null,M,"beforeUnmount"),me&64?v.type.remove(v,M,S,U,I):le&&!le.hasOnce&&($!==Nt||fe>0&&fe&64)?F(le,M,S,!1,!0):($===Nt&&fe&384||!J&&me&16)&&F(Y,M,S),I&&ae(v)}(Ie&&(Ne=B&&B.onVnodeUnmounted)||we)&&ho(()=>{Ne&&da(Ne,M,v),we&&wl(v,null,M,"unmounted")},S)},ae=v=>{const{type:M,el:S,anchor:I,transition:J}=v;if(M===Nt){ne(S,I);return}if(M===Gp){b(v);return}const $=()=>{o(S),J&&!J.persisted&&J.afterLeave&&J.afterLeave()};if(v.shapeFlag&1&&J&&!J.persisted){const{leave:B,delayLeave:V}=J,Y=()=>B(S,$);V?V(v.el,$,Y):Y()}else $()},ne=(v,M)=>{let S;for(;v!==M;)S=f(v),o(v),v=S;o(M)},oe=(v,M,S)=>{const{bum:I,scope:J,job:$,subTree:B,um:V,m:Y,a:le}=v;VE(Y),VE(le),I&&gp(I),J.stop(),$&&($.flags|=8,W(B,v,M,S)),V&&ho(V,M),ho(()=>{v.isUnmounted=!0},M)},F=(v,M,S,I=!1,J=!1,$=0)=>{for(let B=$;B{if(v.shapeFlag&6)return k(v.component.subTree);if(v.shapeFlag&128)return v.suspense.next();const M=f(v.anchor||v.el),S=M&&M[eE];return S?f(S):M};let q=!1;const j=(v,M,S)=>{v==null?M._vnode&&W(M._vnode,null,null,!0):m(M._vnode||null,v,M,null,null,null,S),M._vnode=v,q||(q=!0,qx(),Kx(),q=!1)},U={p:m,um:W,m:O,r:ae,mt:G,mc:L,pc:H,pbc:P,n:k,o:n};return{render:j,hydrate:void 0,createApp:U8(j)}}function N_({type:n,props:e},t){return t==="svg"&&n==="foreignObject"||t==="mathml"&&n==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:t}function Il({effect:n,job:e},t){t?(n.flags|=32,e.flags|=4):(n.flags&=-33,e.flags&=-5)}function X8(n,e){return(!n||n&&!n.pendingBranch)&&e&&!e.persisted}function O_(n,e,t=!1){const r=n.children,o=e.children;if(_t(r)&&_t(o))for(let i=0;i>1,n[t[s]]0&&(e[r]=t[i-1]),t[i]=r)}}for(i=t.length,a=t[i-1];i-- >0;)t[i]=a,a=e[a];return t}function FE(n){const e=n.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:FE(e)}function VE(n){if(n)for(let e=0;eLo(K8);function UE(n,e){return Up(n,null,e)}function J8(n,e){return Up(n,null,{flush:"sync"})}function dr(n,e,t){return Up(n,e,t)}function Up(n,e,t=en){const{immediate:r,deep:o,flush:i,once:a}=t,s=br({},t),l=e&&r||!e&&i!=="post";let c;if(Vc){if(i==="sync"){const h=Z8();c=h.__watcherHandles||(h.__watcherHandles=[])}else if(!l){const h=()=>{};return h.stop=aa,h.resume=aa,h.pause=aa,h}}const u=Gr;s.call=(h,p,m)=>ki(h,u,p,m);let d=!1;i==="post"?s.scheduler=h=>{ho(h,u&&u.suspense)}:i!=="sync"&&(d=!0,s.scheduler=(h,p)=>{p?h():E_(h)}),s.augmentJob=h=>{e&&(h.flags|=4),d&&(h.flags|=2,u&&(h.id=u.uid,h.i=u))};const f=l8(n,e,s);return Vc&&(c?c.push(f):l&&f()),f}function e7(n,e,t){const r=this.proxy,o=Yn(n)?n.includes(".")?zE(r,n):()=>r[n]:n.bind(r,r);let i;Lt(e)?i=e:(i=e.handler,t=e);const a=Kd(this),s=Up(o,i.bind(r),t);return a(),s}function zE(n,e){const t=e.split(".");return()=>{let r=n;for(let o=0;o{let u,d=en,f;return J8(()=>{const h=n[o];Io(u,h)&&(u=h,c())}),{get(){return l(),t.get?t.get(u):u},set(h){const p=t.set?t.set(h):h;if(!Io(p,u)&&!(d!==en&&Io(h,d)))return;const m=r.vnode.props;m&&(e in m||o in m||i in m)&&(`onUpdate:${e}`in m||`onUpdate:${o}`in m||`onUpdate:${i}`in m)||(u=h,c()),r.emit(`update:${e}`,p),Io(h,p)&&Io(h,d)&&!Io(p,f)&&c(),d=h,f=p}}});return s[Symbol.iterator]=()=>{let l=0;return{next(){return l<2?{value:l++?a||en:s,done:!1}:{done:!0}}}},s}const GE=(n,e)=>e==="modelValue"||e==="model-value"?n.modelModifiers:n[`${e}Modifiers`]||n[`${Qo(e)}Modifiers`]||n[`${Ps(e)}Modifiers`];function n7(n,e,...t){if(n.isUnmounted)return;const r=n.vnode.props||en;let o=t;const i=e.startsWith("update:"),a=i&&GE(r,e.slice(7));a&&(a.trim&&(o=t.map(u=>Yn(u)?u.trim():u)),a.number&&(o=t.map(_p)));let s,l=r[s=l_(e)]||r[s=l_(Qo(e))];!l&&i&&(l=r[s=l_(Ps(e))]),l&&ki(l,n,6,o);const c=r[s+"Once"];if(c){if(!n.emitted)n.emitted={};else if(n.emitted[s])return;n.emitted[s]=!0,ki(c,n,6,o)}}const r7=new WeakMap;function HE(n,e,t=!1){const r=t?r7:e.emitsCache,o=r.get(n);if(o!==void 0)return o;const i=n.emits;let a={},s=!1;if(!Lt(n)){const l=c=>{const u=HE(c,e,!0);u&&(s=!0,br(a,u))};!t&&e.mixins.length&&e.mixins.forEach(l),n.extends&&l(n.extends),n.mixins&&n.mixins.forEach(l)}return!i&&!s?(wn(n)&&r.set(n,null),null):(_t(i)?i.forEach(l=>a[l]=null):br(a,i),wn(n)&&r.set(n,a),a)}function zp(n,e){return!n||!hp(e)?!1:(e=e.slice(2).replace(/Once$/,""),vn(n,e[0].toLowerCase()+e.slice(1))||vn(n,Ps(e))||vn(n,e))}function R3e(){}function WE(n){const{type:e,vnode:t,proxy:r,withProxy:o,propsOptions:[i],slots:a,attrs:s,emit:l,render:c,renderCache:u,props:d,data:f,setupState:h,ctx:p,inheritAttrs:m}=n,g=Rp(n);let _,A;try{if(t.shapeFlag&4){const b=o||r,E=b;_=ua(c.call(E,b,u,d,h,f,p)),A=s}else{const b=e;_=ua(b.length>1?b(d,{attrs:s,slots:a,emit:l}):b(d,null)),A=e.props?s:o7(s)}}catch(b){Yd.length=0,Fd(b,n,1),_=Be(eo)}let y=_;if(A&&m!==!1){const b=Object.keys(A),{shapeFlag:E}=y;b.length&&E&7&&(i&&b.some(i_)&&(A=i7(A,i)),y=Os(y,A,!1,!0))}return t.dirs&&(y=Os(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(t.dirs):t.dirs),t.transition&&zd(y,t.transition),_=y,Rp(g),_}const o7=n=>{let e;for(const t in n)(t==="class"||t==="style"||hp(t))&&((e||(e={}))[t]=n[t]);return e},i7=(n,e)=>{const t={};for(const r in n)(!i_(r)||!(r.slice(9)in e))&&(t[r]=n[r]);return t};function a7(n,e,t){const{props:r,children:o,component:i}=n,{props:a,children:s,patchFlag:l}=e,c=i.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&l>=0){if(l&1024)return!0;if(l&16)return r?jE(r,a,c):!!a;if(l&8){const u=e.dynamicProps;for(let d=0;dn.__isSuspense;function l7(n,e){e&&e.pendingBranch?_t(n)?e.effects.push(...n):e.effects.push(n):m8(n)}const Nt=Symbol.for("v-fgt"),$d=Symbol.for("v-txt"),eo=Symbol.for("v-cmt"),Gp=Symbol.for("v-stc"),Yd=[];let Yo=null;function he(n=!1){Yd.push(Yo=n?null:[])}function c7(){Yd.pop(),Yo=Yd[Yd.length-1]||null}let Xd=1;function Hp(n,e=!1){Xd+=n,n<0&&Yo&&e&&(Yo.hasOnce=!0)}function $E(n){return n.dynamicChildren=Xd>0?Yo||Tc:null,c7(),Xd>0&&Yo&&Yo.push(n),n}function ye(n,e,t,r,o,i){return $E(K(n,e,t,r,o,i,!0))}function gt(n,e,t,r,o){return $E(Be(n,e,t,r,o,!0))}function qd(n){return n?n.__v_isVNode===!0:!1}function Rl(n,e){return n.type===e.type&&n.key===e.key}const YE=({key:n})=>n??null,Wp=({ref:n,ref_key:e,ref_for:t})=>(typeof n=="number"&&(n=""+n),n!=null?Yn(n)||Ir(n)||Lt(n)?{i:zr,r:n,k:e,f:!!t}:n:null);function K(n,e=null,t=null,r=0,o=null,i=n===Nt?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&YE(e),ref:e&&Wp(e),scopeId:Jx,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:zr};return s?(k_(l,t),i&128&&n.normalize(l)):t&&(l.shapeFlag|=Yn(t)?8:16),Xd>0&&!a&&Yo&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&Yo.push(l),l}const Be=u7;function u7(n,e=null,t=null,r=0,o=null,i=!1){if((!n||n===L8)&&(n=eo),qd(n)){const s=Os(n,e,!0);return t&&k_(s,t),Xd>0&&!i&&Yo&&(s.shapeFlag&6?Yo[Yo.indexOf(n)]=s:Yo.push(s)),s.patchFlag=-2,s}if(x7(n)&&(n=n.__vccOpts),e){e=d7(e);let{class:s,style:l}=e;s&&!Yn(s)&&(e.class=Qt(s)),wn(l)&&(b_(l)&&!_t(l)&&(l=br({},l)),e.style=Rd(l))}const a=Yn(n)?1:QE(n)?128:tE(n)?64:wn(n)?4:Lt(n)?2:0;return K(n,e,t,r,o,a,i,!0)}function d7(n){return n?b_(n)||LE(n)?br({},n):n:null}function Os(n,e,t=!1,r=!1){const{props:o,ref:i,patchFlag:a,children:s,transition:l}=n,c=e?f7(o||{},e):o,u={__v_isVNode:!0,__v_skip:!0,type:n.type,props:c,key:c&&YE(c),ref:e&&e.ref?t&&i?_t(i)?i.concat(Wp(e)):[i,Wp(e)]:Wp(e):i,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:s,target:n.target,targetStart:n.targetStart,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==Nt?a===-1?16:a|16:a,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:l,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Os(n.ssContent),ssFallback:n.ssFallback&&Os(n.ssFallback),placeholder:n.placeholder,el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce};return l&&r&&zd(u,l.clone(u)),u}function Ye(n=" ",e=0){return Be($d,null,n,e)}function XE(n,e){const t=Be(Gp,null,n);return t.staticCount=e,t}function Pe(n="",e=!1){return e?(he(),gt(eo,null,n)):Be(eo,null,n)}function ua(n){return n==null||typeof n=="boolean"?Be(eo):_t(n)?Be(Nt,null,n.slice()):qd(n)?ks(n):Be($d,null,String(n))}function ks(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Os(n)}function k_(n,e){let t=0;const{shapeFlag:r}=n;if(e==null)e=null;else if(_t(e))t=16;else if(typeof e=="object")if(r&65){const o=e.default;o&&(o._c&&(o._d=!1),k_(n,o()),o._c&&(o._d=!0));return}else{t=32;const o=e._;!o&&!LE(e)?e._ctx=zr:o===3&&zr&&(zr.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else Lt(e)?(e={default:e,_ctx:zr},t=32):(e=String(e),r&64?(t=16,e=[Ye(e)]):t=8);n.children=e,n.shapeFlag|=t}function f7(...n){const e={};for(let t=0;tGr||zr;let jp,F_;{const n=vp(),e=(t,r)=>{let o;return(o=n[t])||(o=n[t]=[]),o.push(r),i=>{o.length>1?o.forEach(a=>a(i)):o[0](i)}};jp=e("__VUE_INSTANCE_SETTERS__",t=>Gr=t),F_=e("__VUE_SSR_SETTERS__",t=>Vc=t)}const Kd=n=>{const e=Gr;return jp(n),n.scope.on(),()=>{n.scope.off(),jp(e)}},qE=()=>{Gr&&Gr.scope.off(),jp(null)};function KE(n){return n.vnode.shapeFlag&4}let Vc=!1;function g7(n,e=!1,t=!1){e&&F_(e);const{props:r,children:o}=n.vnode,i=KE(n);z8(n,r,i,e),j8(n,o,t||e);const a=i?_7(n,e):void 0;return e&&F_(!1),a}function _7(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=new Proxy(n.ctx,D8);const{setup:r}=t;if(r){sa();const o=n.setupContext=r.length>1?A7(n):null,i=Kd(n),a=Dc(r,n,0,[n.props,o]),s=gx(a);if(la(),i(),(s||n.sp)&&!kc(n)&&M_(n),s){if(a.then(qE,qE),e)return a.then(l=>{ZE(n,l)}).catch(l=>{Fd(l,n,0)});n.asyncDep=a}else ZE(n,a)}else JE(n)}function ZE(n,e,t){Lt(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:wn(e)&&(n.setupState=Qx(e)),JE(n)}function JE(n,e,t){const r=n.type;n.render||(n.render=r.render||aa);{const o=Kd(n);sa();try{B8(n)}finally{la(),o()}}}const v7={get(n,e){return Kr(n,"get",""),n[e]}};function A7(n){const e=t=>{n.exposed=t||{}};return{attrs:new Proxy(n.attrs,v7),slots:n.slots,emit:n.emit,expose:e}}function Qp(n){return n.exposed?n.exposeProxy||(n.exposeProxy=new Proxy(Qx(e8(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in jd)return jd[t](n)},has(e,t){return t in e||t in jd}})):n.proxy}const y7=/(?:^|[-_])\w/g,b7=n=>n.replace(y7,e=>e.toUpperCase()).replace(/[-_]/g,"");function eC(n,e=!0){return Lt(n)?n.displayName||n.name:n.name||e&&n.__name}function tC(n,e,t=!1){let r=eC(e);if(!r&&e.__file){const o=e.__file.match(/([^/\\]+)\.\w+$/);o&&(r=o[1])}if(!r&&n&&n.parent){const o=i=>{for(const a in i)if(i[a]===e)return a};r=o(n.components||n.parent.type.components)||o(n.appContext.components)}return r?b7(r):t?"App":"Anonymous"}function x7(n){return Lt(n)&&"__vccOpts"in n}const bt=(n,e)=>a8(n,e,Vc);function Zd(n,e,t){try{Hp(-1);const r=arguments.length;return r===2?wn(e)&&!_t(e)?qd(e)?Be(n,null,[e]):Be(n,e):Be(n,null,e):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&qd(t)&&(t=[t]),Be(n,e,t))}finally{Hp(1)}}const E7="3.5.23";/** +* @vue/runtime-dom v3.5.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let V_;const nC=typeof window<"u"&&window.trustedTypes;if(nC)try{V_=nC.createPolicy("vue",{createHTML:n=>n})}catch{}const rC=V_?n=>V_.createHTML(n):n=>n,C7="http://www.w3.org/2000/svg",S7="http://www.w3.org/1998/Math/MathML",Ga=typeof document<"u"?document:null,oC=Ga&&Ga.createElement("template"),w7={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,r)=>{const o=e==="svg"?Ga.createElementNS(C7,n):e==="mathml"?Ga.createElementNS(S7,n):t?Ga.createElement(n,{is:t}):Ga.createElement(n);return n==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:n=>Ga.createTextNode(n),createComment:n=>Ga.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>Ga.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,r,o,i){const a=t?t.previousSibling:e.lastChild;if(o&&(o===i||o.nextSibling))for(;e.insertBefore(o.cloneNode(!0),t),!(o===i||!(o=o.nextSibling)););else{oC.innerHTML=rC(r==="svg"?`${n}`:r==="mathml"?`${n}`:n);const s=oC.content;if(r==="svg"||r==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}e.insertBefore(s,t)}return[a?a.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},Fs="transition",Jd="animation",ef=Symbol("_vtc"),iC={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},M7=br({},sE,iC),Ll=(n=>(n.displayName="Transition",n.props=M7,n))((n,{slots:e})=>Zd(A8,T7(n),e)),Pl=(n,e=[])=>{_t(n)?n.forEach(t=>t(...e)):n&&n(...e)},aC=n=>n?_t(n)?n.some(e=>e.length>1):n.length>1:!1;function T7(n){const e={};for(const Q in n)Q in iC||(e[Q]=n[Q]);if(n.css===!1)return e;const{name:t="v",type:r,duration:o,enterFromClass:i=`${t}-enter-from`,enterActiveClass:a=`${t}-enter-active`,enterToClass:s=`${t}-enter-to`,appearFromClass:l=i,appearActiveClass:c=a,appearToClass:u=s,leaveFromClass:d=`${t}-leave-from`,leaveActiveClass:f=`${t}-leave-active`,leaveToClass:h=`${t}-leave-to`}=n,p=I7(o),m=p&&p[0],g=p&&p[1],{onBeforeEnter:_,onEnter:A,onEnterCancelled:y,onLeave:b,onLeaveCancelled:E,onBeforeAppear:x=_,onAppear:w=A,onAppearCancelled:L=y}=e,C=(Q,re,G,se)=>{Q._enterCancelled=se,Dl(Q,re?u:s),Dl(Q,re?c:a),G&&G()},P=(Q,re)=>{Q._isLeaving=!1,Dl(Q,d),Dl(Q,h),Dl(Q,f),re&&re()},D=Q=>(re,G)=>{const se=Q?w:A,ee=()=>C(re,Q,G);Pl(se,[re,ee]),sC(()=>{Dl(re,Q?l:i),Ha(re,Q?u:s),aC(se)||lC(re,r,m,ee)})};return br(e,{onBeforeEnter(Q){Pl(_,[Q]),Ha(Q,i),Ha(Q,a)},onBeforeAppear(Q){Pl(x,[Q]),Ha(Q,l),Ha(Q,c)},onEnter:D(!1),onAppear:D(!0),onLeave(Q,re){Q._isLeaving=!0;const G=()=>P(Q,re);Ha(Q,d),Q._enterCancelled?(Ha(Q,f),dC(Q)):(dC(Q),Ha(Q,f)),sC(()=>{Q._isLeaving&&(Dl(Q,d),Ha(Q,h),aC(b)||lC(Q,r,g,G))}),Pl(b,[Q,G])},onEnterCancelled(Q){C(Q,!1,void 0,!0),Pl(y,[Q])},onAppearCancelled(Q){C(Q,!0,void 0,!0),Pl(L,[Q])},onLeaveCancelled(Q){P(Q),Pl(E,[Q])}})}function I7(n){if(n==null)return null;if(wn(n))return[U_(n.enter),U_(n.leave)];{const e=U_(n);return[e,e]}}function U_(n){return MN(n)}function Ha(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n[ef]||(n[ef]=new Set)).add(e)}function Dl(n,e){e.split(/\s+/).forEach(r=>r&&n.classList.remove(r));const t=n[ef];t&&(t.delete(e),t.size||(n[ef]=void 0))}function sC(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let R7=0;function lC(n,e,t,r){const o=n._endId=++R7,i=()=>{o===n._endId&&r()};if(t!=null)return setTimeout(i,t);const{type:a,timeout:s,propCount:l}=L7(n,e);if(!a)return r();const c=a+"end";let u=0;const d=()=>{n.removeEventListener(c,f),i()},f=h=>{h.target===n&&++u>=l&&d()};setTimeout(()=>{u(t[p]||"").split(", "),o=r(`${Fs}Delay`),i=r(`${Fs}Duration`),a=cC(o,i),s=r(`${Jd}Delay`),l=r(`${Jd}Duration`),c=cC(s,l);let u=null,d=0,f=0;e===Fs?a>0&&(u=Fs,d=a,f=i.length):e===Jd?c>0&&(u=Jd,d=c,f=l.length):(d=Math.max(a,c),u=d>0?a>c?Fs:Jd:null,f=u?u===Fs?i.length:l.length:0);const h=u===Fs&&/\b(?:transform|all)(?:,|$)/.test(r(`${Fs}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:h}}function cC(n,e){for(;n.lengthuC(t)+uC(n[r])))}function uC(n){return n==="auto"?0:Number(n.slice(0,-1).replace(",","."))*1e3}function dC(n){return(n?n.ownerDocument:document).body.offsetHeight}function P7(n,e,t){const r=n[ef];r&&(e=(e?[e,...r]:[...r]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}const $p=Symbol("_vod"),fC=Symbol("_vsh"),hC={name:"show",beforeMount(n,{value:e},{transition:t}){n[$p]=n.style.display==="none"?"":n.style.display,t&&e?t.beforeEnter(n):tf(n,e)},mounted(n,{value:e},{transition:t}){t&&e&&t.enter(n)},updated(n,{value:e,oldValue:t},{transition:r}){!e!=!t&&(r?e?(r.beforeEnter(n),tf(n,!0),r.enter(n)):r.leave(n,()=>{tf(n,!1)}):tf(n,e))},beforeUnmount(n,{value:e}){tf(n,e)}};function tf(n,e){n.style.display=e?n[$p]:"none",n[fC]=!e}const D7=Symbol(""),B7=/(?:^|;)\s*display\s*:/;function N7(n,e,t){const r=n.style,o=Yn(t);let i=!1;if(t&&!o){if(e)if(Yn(e))for(const a of e.split(";")){const s=a.slice(0,a.indexOf(":")).trim();t[s]==null&&Yp(r,s,"")}else for(const a in e)t[a]==null&&Yp(r,a,"");for(const a in t)a==="display"&&(i=!0),Yp(r,a,t[a])}else if(o){if(e!==t){const a=r[D7];a&&(t+=";"+a),r.cssText=t,i=B7.test(t)}}else e&&n.removeAttribute("style");$p in n&&(n[$p]=i?r.display:"",n[fC]&&(r.display="none"))}const pC=/\s*!important$/;function Yp(n,e,t){if(_t(t))t.forEach(r=>Yp(n,e,r));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const r=O7(n,e);pC.test(t)?n.setProperty(Ps(r),t.replace(pC,""),"important"):n[r]=t}}const mC=["Webkit","Moz","ms"],z_={};function O7(n,e){const t=z_[e];if(t)return t;let r=Qo(e);if(r!=="filter"&&r in n)return z_[e]=r;r=mp(r);for(let o=0;oG_||(U7.then(()=>G_=0),G_=Date.now());function G7(n,e){const t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;ki(H7(r,t.value),e,5,[r])};return t.value=n,t.attached=z7(),t}function H7(n,e){if(_t(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(r=>o=>!o._stopped&&r&&r(o))}else return e}const bC=n=>n.charCodeAt(0)===111&&n.charCodeAt(1)===110&&n.charCodeAt(2)>96&&n.charCodeAt(2)<123,W7=(n,e,t,r,o,i)=>{const a=o==="svg";e==="class"?P7(n,r,a):e==="style"?N7(n,t,r):hp(e)?i_(e)||F7(n,e,t,r,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):j7(n,e,r,a))?(vC(n,e,r),!n.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&_C(n,e,r,a,i,e!=="value")):n._isVueCE&&(/[A-Z]/.test(e)||!Yn(r))?vC(n,Qo(e),r,i,e):(e==="true-value"?n._trueValue=r:e==="false-value"&&(n._falseValue=r),_C(n,e,r,a))};function j7(n,e,t,r){if(r)return!!(e==="innerHTML"||e==="textContent"||e in n&&bC(e)&&Lt(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&n.tagName==="IFRAME"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const o=n.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return bC(e)&&Yn(t)?!1:e in n}const Uc=n=>{const e=n.props["onUpdate:modelValue"]||!1;return _t(e)?t=>gp(e,t):e};function Q7(n){n.target.composing=!0}function xC(n){const e=n.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const Wa=Symbol("_assign");function EC(n,e,t){return e&&(n=n.trim()),t&&(n=_p(n)),n}const Rr={created(n,{modifiers:{lazy:e,trim:t,number:r}},o){n[Wa]=Uc(o);const i=r||o.props&&o.props.type==="number";Vs(n,e?"change":"input",a=>{a.target.composing||n[Wa](EC(n.value,t,i))}),(t||i)&&Vs(n,"change",()=>{n.value=EC(n.value,t,i)}),e||(Vs(n,"compositionstart",Q7),Vs(n,"compositionend",xC),Vs(n,"change",xC))},mounted(n,{value:e}){n.value=e??""},beforeUpdate(n,{value:e,oldValue:t,modifiers:{lazy:r,trim:o,number:i}},a){if(n[Wa]=Uc(a),n.composing)return;const s=(i||n.type==="number")&&!/^0\d/.test(n.value)?_p(n.value):n.value,l=e??"";s!==l&&(document.activeElement===n&&n.type!=="range"&&(r&&e===t||o&&n.value.trim()===l)||(n.value=l))}},$7={deep:!0,created(n,e,t){n[Wa]=Uc(t),Vs(n,"change",()=>{const r=n._modelValue,o=nf(n),i=n.checked,a=n[Wa];if(_t(r)){const s=c_(r,o),l=s!==-1;if(i&&!l)a(r.concat(o));else if(!i&&l){const c=[...r];c.splice(s,1),a(c)}}else if(Rc(r)){const s=new Set(r);i?s.add(o):s.delete(o),a(s)}else a(wC(n,i))})},mounted:CC,beforeUpdate(n,e,t){n[Wa]=Uc(t),CC(n,e,t)}};function CC(n,{value:e,oldValue:t},r){n._modelValue=e;let o;if(_t(e))o=c_(e,r.props.value)>-1;else if(Rc(e))o=e.has(r.props.value);else{if(e===t)return;o=Ld(e,wC(n,!0))}n.checked!==o&&(n.checked=o)}const Y7={deep:!0,created(n,{value:e,modifiers:{number:t}},r){const o=Rc(e);Vs(n,"change",()=>{const i=Array.prototype.filter.call(n.options,a=>a.selected).map(a=>t?_p(nf(a)):nf(a));n[Wa](n.multiple?o?new Set(i):i:i[0]),n._assigning=!0,Va(()=>{n._assigning=!1})}),n[Wa]=Uc(r)},mounted(n,{value:e}){SC(n,e)},beforeUpdate(n,e,t){n[Wa]=Uc(t)},updated(n,{value:e}){n._assigning||SC(n,e)}};function SC(n,e){const t=n.multiple,r=_t(e);if(!(t&&!r&&!Rc(e))){for(let o=0,i=n.options.length;oString(c)===String(s)):a.selected=c_(e,s)>-1}else a.selected=e.has(s);else if(Ld(nf(a),e)){n.selectedIndex!==o&&(n.selectedIndex=o);return}}!t&&n.selectedIndex!==-1&&(n.selectedIndex=-1)}}function nf(n){return"_value"in n?n._value:n.value}function wC(n,e){const t=e?"_trueValue":"_falseValue";return t in n?n[t]:e}const X7=["ctrl","shift","alt","meta"],q7={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>X7.some(t=>n[`${t}Key`]&&!e.includes(t))},ja=(n,e)=>{const t=n._withMods||(n._withMods={}),r=e.join(".");return t[r]||(t[r]=((o,...i)=>{for(let a=0;a{const e=Z7().createApp(...n),{mount:t}=e;return e.mount=r=>{const o=t9(r);if(!o)return;const i=e._component;!Lt(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const a=t(o,!1,e9(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),a},e});function e9(n){if(n instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&n instanceof MathMLElement)return"mathml"}function t9(n){return Yn(n)?document.querySelector(n):n}/*! + * shared v11.1.12 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function n9(n,e){typeof console<"u"&&(console.warn("[intlify] "+n),e&&console.warn(e.stack))}const Xp=typeof window<"u",Us=(n,e=!1)=>e?Symbol.for(n):Symbol(n),r9=(n,e,t)=>o9({l:n,k:e,s:t}),o9=n=>JSON.stringify(n).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),fr=n=>typeof n=="number"&&isFinite(n),i9=n=>H_(n)==="[object Date]",zc=n=>H_(n)==="[object RegExp]",qp=n=>Xt(n)&&Object.keys(n).length===0,xr=Object.assign,a9=Object.create,Mn=(n=null)=>a9(n);let TC;const Bl=()=>TC||(TC=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Mn());function IC(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function RC(n){return n.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s9(n){return n=n.replace(/(\w+)\s*=\s*"([^"]*)"/g,(r,o,i)=>`${o}="${RC(i)}"`),n=n.replace(/(\w+)\s*=\s*'([^']*)'/g,(r,o,i)=>`${o}='${RC(i)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(n)&&(n=n.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(r=>{n=n.replace(r,"$1javascript:")}),n}const l9=Object.prototype.hasOwnProperty;function Fi(n,e){return l9.call(n,e)}const Zn=Array.isArray,Un=n=>typeof n=="function",nt=n=>typeof n=="string",fn=n=>typeof n=="boolean",mn=n=>n!==null&&typeof n=="object",c9=n=>mn(n)&&Un(n.then)&&Un(n.catch),LC=Object.prototype.toString,H_=n=>LC.call(n),Xt=n=>H_(n)==="[object Object]",u9=n=>n==null?"":Zn(n)||Xt(n)&&n.toString===LC?JSON.stringify(n,null,2):String(n);function W_(n,e=""){return n.reduce((t,r,o)=>o===0?t+r:t+e+r,"")}const Kp=n=>!mn(n)||Zn(n);function Zp(n,e){if(Kp(n)||Kp(e))throw new Error("Invalid value");const t=[{src:n,des:e}];for(;t.length;){const{src:r,des:o}=t.pop();Object.keys(r).forEach(i=>{i!=="__proto__"&&(mn(r[i])&&!mn(o[i])&&(o[i]=Array.isArray(r[i])?[]:Mn()),Kp(o[i])||Kp(r[i])?o[i]=r[i]:t.push({src:r[i],des:o[i]}))})}}/*! + * message-compiler v11.1.12 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function d9(n,e,t){return{line:n,column:e,offset:t}}function j_(n,e,t){return{start:n,end:e}}const An={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14},f9=17;function Jp(n,e,t={}){const{domain:r,messages:o,args:i}=t,a=n,s=new SyntaxError(String(a));return s.code=n,e&&(s.location=e),s.domain=r,s}function h9(n){throw n}const fa=" ",p9="\r",to=` +`,m9="\u2028",g9="\u2029";function _9(n){const e=n;let t=0,r=1,o=1,i=0;const a=w=>e[w]===p9&&e[w+1]===to,s=w=>e[w]===to,l=w=>e[w]===g9,c=w=>e[w]===m9,u=w=>a(w)||s(w)||l(w)||c(w),d=()=>t,f=()=>r,h=()=>o,p=()=>i,m=w=>a(w)||l(w)||c(w)?to:e[w],g=()=>m(t),_=()=>m(t+i);function A(){return i=0,u(t)&&(r++,o=0),a(t)&&t++,t++,o++,e[t]}function y(){return a(t+i)&&i++,i++,e[t+i]}function b(){t=0,r=1,o=1,i=0}function E(w=0){i=w}function x(){const w=t+i;for(;w!==t;)A();i=0}return{index:d,line:f,column:h,peekOffset:p,charAt:m,currentChar:g,currentPeek:_,next:A,peek:y,reset:b,resetPeek:E,skipToPeek:x}}const Qa=void 0,v9=".",PC="'",A9="tokenizer";function y9(n,e={}){const t=e.location!==!1,r=_9(n),o=()=>r.index(),i=()=>d9(r.line(),r.column(),r.index()),a=i(),s=o(),l={currentType:13,offset:s,startLoc:a,endLoc:a,lastType:13,lastOffset:s,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:u}=e;function d(B,V,Y,...le){const me=c();if(V.column+=Y,V.offset+=Y,u){const fe=t?j_(me.startLoc,V):null,te=Jp(B,fe,{domain:A9,args:le});u(te)}}function f(B,V,Y){B.endLoc=i(),B.currentType=V;const le={type:V};return t&&(le.loc=j_(B.startLoc,B.endLoc)),Y!=null&&(le.value=Y),le}const h=B=>f(B,13);function p(B,V){return B.currentChar()===V?(B.next(),V):(d(An.EXPECTED_TOKEN,i(),0,V),"")}function m(B){let V="";for(;B.currentPeek()===fa||B.currentPeek()===to;)V+=B.currentPeek(),B.peek();return V}function g(B){const V=m(B);return B.skipToPeek(),V}function _(B){if(B===Qa)return!1;const V=B.charCodeAt(0);return V>=97&&V<=122||V>=65&&V<=90||V===95}function A(B){if(B===Qa)return!1;const V=B.charCodeAt(0);return V>=48&&V<=57}function y(B,V){const{currentType:Y}=V;if(Y!==2)return!1;m(B);const le=_(B.currentPeek());return B.resetPeek(),le}function b(B,V){const{currentType:Y}=V;if(Y!==2)return!1;m(B);const le=B.currentPeek()==="-"?B.peek():B.currentPeek(),me=A(le);return B.resetPeek(),me}function E(B,V){const{currentType:Y}=V;if(Y!==2)return!1;m(B);const le=B.currentPeek()===PC;return B.resetPeek(),le}function x(B,V){const{currentType:Y}=V;if(Y!==7)return!1;m(B);const le=B.currentPeek()===".";return B.resetPeek(),le}function w(B,V){const{currentType:Y}=V;if(Y!==8)return!1;m(B);const le=_(B.currentPeek());return B.resetPeek(),le}function L(B,V){const{currentType:Y}=V;if(!(Y===7||Y===11))return!1;m(B);const le=B.currentPeek()===":";return B.resetPeek(),le}function C(B,V){const{currentType:Y}=V;if(Y!==9)return!1;const le=()=>{const fe=B.currentPeek();return fe==="{"?_(B.peek()):fe==="@"||fe==="|"||fe===":"||fe==="."||fe===fa||!fe?!1:fe===to?(B.peek(),le()):D(B,!1)},me=le();return B.resetPeek(),me}function P(B){m(B);const V=B.currentPeek()==="|";return B.resetPeek(),V}function D(B,V=!0){const Y=(me=!1,fe="")=>{const te=B.currentPeek();return te==="{"||te==="@"||!te?me:te==="|"?!(fe===fa||fe===to):te===fa?(B.peek(),Y(!0,fa)):te===to?(B.peek(),Y(!0,to)):!0},le=Y();return V&&B.resetPeek(),le}function Q(B,V){const Y=B.currentChar();return Y===Qa?Qa:V(Y)?(B.next(),Y):null}function re(B){const V=B.charCodeAt(0);return V>=97&&V<=122||V>=65&&V<=90||V>=48&&V<=57||V===95||V===36}function G(B){return Q(B,re)}function se(B){const V=B.charCodeAt(0);return V>=97&&V<=122||V>=65&&V<=90||V>=48&&V<=57||V===95||V===36||V===45}function ee(B){return Q(B,se)}function ie(B){const V=B.charCodeAt(0);return V>=48&&V<=57}function H(B){return Q(B,ie)}function T(B){const V=B.charCodeAt(0);return V>=48&&V<=57||V>=65&&V<=70||V>=97&&V<=102}function R(B){return Q(B,T)}function O(B){let V="",Y="";for(;V=H(B);)Y+=V;return Y}function W(B){let V="";for(;;){const Y=B.currentChar();if(Y==="{"||Y==="}"||Y==="@"||Y==="|"||!Y)break;if(Y===fa||Y===to)if(D(B))V+=Y,B.next();else{if(P(B))break;V+=Y,B.next()}else V+=Y,B.next()}return V}function ae(B){g(B);let V="",Y="";for(;V=ee(B);)Y+=V;const le=B.currentChar();if(le&&le!=="}"&&le!==Qa&&le!==fa&&le!==to&&le!==" "){const me=U(B);return d(An.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,Y+me),Y+me}return B.currentChar()===Qa&&d(An.UNTERMINATED_CLOSING_BRACE,i(),0),Y}function ne(B){g(B);let V="";return B.currentChar()==="-"?(B.next(),V+=`-${O(B)}`):V+=O(B),B.currentChar()===Qa&&d(An.UNTERMINATED_CLOSING_BRACE,i(),0),V}function oe(B){return B!==PC&&B!==to}function F(B){g(B),p(B,"'");let V="",Y="";for(;V=Q(B,oe);)V==="\\"?Y+=k(B):Y+=V;const le=B.currentChar();return le===to||le===Qa?(d(An.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),le===to&&(B.next(),p(B,"'")),Y):(p(B,"'"),Y)}function k(B){const V=B.currentChar();switch(V){case"\\":case"'":return B.next(),`\\${V}`;case"u":return q(B,V,4);case"U":return q(B,V,6);default:return d(An.UNKNOWN_ESCAPE_SEQUENCE,i(),0,V),""}}function q(B,V,Y){p(B,V);let le="";for(let me=0;me{const le=B.currentChar();return le==="{"||le==="@"||le==="|"||le==="("||le===")"||!le||le===fa?Y:(Y+=le,B.next(),V(Y))};return V("")}function M(B){g(B);const V=p(B,"|");return g(B),V}function S(B,V){let Y=null;switch(B.currentChar()){case"{":return V.braceNest>=1&&d(An.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),B.next(),Y=f(V,2,"{"),g(B),V.braceNest++,Y;case"}":return V.braceNest>0&&V.currentType===2&&d(An.EMPTY_PLACEHOLDER,i(),0),B.next(),Y=f(V,3,"}"),V.braceNest--,V.braceNest>0&&g(B),V.inLinked&&V.braceNest===0&&(V.inLinked=!1),Y;case"@":return V.braceNest>0&&d(An.UNTERMINATED_CLOSING_BRACE,i(),0),Y=I(B,V)||h(V),V.braceNest=0,Y;default:{let me=!0,fe=!0,te=!0;if(P(B))return V.braceNest>0&&d(An.UNTERMINATED_CLOSING_BRACE,i(),0),Y=f(V,1,M(B)),V.braceNest=0,V.inLinked=!1,Y;if(V.braceNest>0&&(V.currentType===4||V.currentType===5||V.currentType===6))return d(An.UNTERMINATED_CLOSING_BRACE,i(),0),V.braceNest=0,J(B,V);if(me=y(B,V))return Y=f(V,4,ae(B)),g(B),Y;if(fe=b(B,V))return Y=f(V,5,ne(B)),g(B),Y;if(te=E(B,V))return Y=f(V,6,F(B)),g(B),Y;if(!me&&!fe&&!te)return Y=f(V,12,U(B)),d(An.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,Y.value),g(B),Y;break}}return Y}function I(B,V){const{currentType:Y}=V;let le=null;const me=B.currentChar();switch((Y===7||Y===8||Y===11||Y===9)&&(me===to||me===fa)&&d(An.INVALID_LINKED_FORMAT,i(),0),me){case"@":return B.next(),le=f(V,7,"@"),V.inLinked=!0,le;case".":return g(B),B.next(),f(V,8,".");case":":return g(B),B.next(),f(V,9,":");default:return P(B)?(le=f(V,1,M(B)),V.braceNest=0,V.inLinked=!1,le):x(B,V)||L(B,V)?(g(B),I(B,V)):w(B,V)?(g(B),f(V,11,z(B))):C(B,V)?(g(B),me==="{"?S(B,V)||le:f(V,10,v(B))):(Y===7&&d(An.INVALID_LINKED_FORMAT,i(),0),V.braceNest=0,V.inLinked=!1,J(B,V))}}function J(B,V){let Y={type:13};if(V.braceNest>0)return S(B,V)||h(V);if(V.inLinked)return I(B,V)||h(V);switch(B.currentChar()){case"{":return S(B,V)||h(V);case"}":return d(An.UNBALANCED_CLOSING_BRACE,i(),0),B.next(),f(V,3,"}");case"@":return I(B,V)||h(V);default:{if(P(B))return Y=f(V,1,M(B)),V.braceNest=0,V.inLinked=!1,Y;if(D(B))return f(V,0,W(B));break}}return Y}function $(){const{currentType:B,offset:V,startLoc:Y,endLoc:le}=l;return l.lastType=B,l.lastOffset=V,l.lastStartLoc=Y,l.lastEndLoc=le,l.offset=o(),l.startLoc=i(),r.currentChar()===Qa?f(l,13):J(r,l)}return{nextToken:$,currentOffset:o,currentPosition:i,context:c}}const b9="parser",x9=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function E9(n,e,t){switch(n){case"\\\\":return"\\";case"\\'":return"'";default:{const r=parseInt(e||t,16);return r<=55295||r>=57344?String.fromCodePoint(r):"�"}}}function C9(n={}){const e=n.location!==!1,{onError:t}=n;function r(_,A,y,b,...E){const x=_.currentPosition();if(x.offset+=b,x.column+=b,t){const w=e?j_(y,x):null,L=Jp(A,w,{domain:b9,args:E});t(L)}}function o(_,A,y){const b={type:_};return e&&(b.start=A,b.end=A,b.loc={start:y,end:y}),b}function i(_,A,y,b){e&&(_.end=A,_.loc&&(_.loc.end=y))}function a(_,A){const y=_.context(),b=o(3,y.offset,y.startLoc);return b.value=A,i(b,_.currentOffset(),_.currentPosition()),b}function s(_,A){const y=_.context(),{lastOffset:b,lastStartLoc:E}=y,x=o(5,b,E);return x.index=parseInt(A,10),_.nextToken(),i(x,_.currentOffset(),_.currentPosition()),x}function l(_,A){const y=_.context(),{lastOffset:b,lastStartLoc:E}=y,x=o(4,b,E);return x.key=A,_.nextToken(),i(x,_.currentOffset(),_.currentPosition()),x}function c(_,A){const y=_.context(),{lastOffset:b,lastStartLoc:E}=y,x=o(9,b,E);return x.value=A.replace(x9,E9),_.nextToken(),i(x,_.currentOffset(),_.currentPosition()),x}function u(_){const A=_.nextToken(),y=_.context(),{lastOffset:b,lastStartLoc:E}=y,x=o(8,b,E);return A.type!==11?(r(_,An.UNEXPECTED_EMPTY_LINKED_MODIFIER,y.lastStartLoc,0),x.value="",i(x,b,E),{nextConsumeToken:A,node:x}):(A.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,ha(A)),x.value=A.value||"",i(x,_.currentOffset(),_.currentPosition()),{node:x})}function d(_,A){const y=_.context(),b=o(7,y.offset,y.startLoc);return b.value=A,i(b,_.currentOffset(),_.currentPosition()),b}function f(_){const A=_.context(),y=o(6,A.offset,A.startLoc);let b=_.nextToken();if(b.type===8){const E=u(_);y.modifier=E.node,b=E.nextConsumeToken||_.nextToken()}switch(b.type!==9&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(b)),b=_.nextToken(),b.type===2&&(b=_.nextToken()),b.type){case 10:b.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(b)),y.key=d(_,b.value||"");break;case 4:b.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(b)),y.key=l(_,b.value||"");break;case 5:b.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(b)),y.key=s(_,b.value||"");break;case 6:b.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(b)),y.key=c(_,b.value||"");break;default:{r(_,An.UNEXPECTED_EMPTY_LINKED_KEY,A.lastStartLoc,0);const E=_.context(),x=o(7,E.offset,E.startLoc);return x.value="",i(x,E.offset,E.startLoc),y.key=x,i(y,E.offset,E.startLoc),{nextConsumeToken:b,node:y}}}return i(y,_.currentOffset(),_.currentPosition()),{node:y}}function h(_){const A=_.context(),y=A.currentType===1?_.currentOffset():A.offset,b=A.currentType===1?A.endLoc:A.startLoc,E=o(2,y,b);E.items=[];let x=null;do{const C=x||_.nextToken();switch(x=null,C.type){case 0:C.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(C)),E.items.push(a(_,C.value||""));break;case 5:C.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(C)),E.items.push(s(_,C.value||""));break;case 4:C.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(C)),E.items.push(l(_,C.value||""));break;case 6:C.value==null&&r(_,An.UNEXPECTED_LEXICAL_ANALYSIS,A.lastStartLoc,0,ha(C)),E.items.push(c(_,C.value||""));break;case 7:{const P=f(_);E.items.push(P.node),x=P.nextConsumeToken||null;break}}}while(A.currentType!==13&&A.currentType!==1);const w=A.currentType===1?A.lastOffset:_.currentOffset(),L=A.currentType===1?A.lastEndLoc:_.currentPosition();return i(E,w,L),E}function p(_,A,y,b){const E=_.context();let x=b.items.length===0;const w=o(1,A,y);w.cases=[],w.cases.push(b);do{const L=h(_);x||(x=L.items.length===0),w.cases.push(L)}while(E.currentType!==13);return x&&r(_,An.MUST_HAVE_MESSAGES_IN_PLURAL,y,0),i(w,_.currentOffset(),_.currentPosition()),w}function m(_){const A=_.context(),{offset:y,startLoc:b}=A,E=h(_);return A.currentType===13?E:p(_,y,b,E)}function g(_){const A=y9(_,xr({},n)),y=A.context(),b=o(0,y.offset,y.startLoc);return e&&b.loc&&(b.loc.source=_),b.body=m(A),n.onCacheKey&&(b.cacheKey=n.onCacheKey(_)),y.currentType!==13&&r(A,An.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,_[y.offset]||""),i(b,A.currentOffset(),A.currentPosition()),b}return{parse:g}}function ha(n){if(n.type===13)return"EOF";const e=(n.value||"").replace(/\r?\n/gu,"\\n");return e.length>10?e.slice(0,9)+"…":e}function S9(n,e={}){const t={ast:n,helpers:new Set};return{context:()=>t,helper:i=>(t.helpers.add(i),i)}}function DC(n,e){for(let t=0;tBC(t)),n}function BC(n){if(n.items.length===1){const e=n.items[0];(e.type===3||e.type===9)&&(n.static=e.value,delete e.value)}else{const e=[];for(let t=0;ta;function l(m,g){a.code+=m}function c(m,g=!0){const _=g?r:"";l(o?_+" ".repeat(m):_)}function u(m=!0){const g=++a.indentLevel;m&&c(g)}function d(m=!0){const g=--a.indentLevel;m&&c(g)}function f(){c(a.indentLevel)}return{context:s,push:l,indent:u,deindent:d,newline:f,helper:m=>`_${m}`,needIndent:()=>a.needIndent}}function I9(n,e){const{helper:t}=n;n.push(`${t("linked")}(`),Hc(n,e.key),e.modifier?(n.push(", "),Hc(n,e.modifier),n.push(", _type")):n.push(", undefined, _type"),n.push(")")}function R9(n,e){const{helper:t,needIndent:r}=n;n.push(`${t("normalize")}([`),n.indent(r());const o=e.items.length;for(let i=0;i1){n.push(`${t("plural")}([`),n.indent(r());const o=e.cases.length;for(let i=0;i{const t=nt(e.mode)?e.mode:"normal",r=nt(e.filename)?e.filename:"message.intl";e.sourceMap;const o=e.breakLineCode!=null?e.breakLineCode:t==="arrow"?";":` +`,i=e.needIndent?e.needIndent:t!=="arrow",a=n.helpers||[],s=T9(n,{filename:r,breakLineCode:o,needIndent:i});s.push(t==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),s.indent(i),a.length>0&&(s.push(`const { ${W_(a.map(u=>`${u}: _${u}`),", ")} } = ctx`),s.newline()),s.push("return "),Hc(s,n),s.deindent(i),s.push("}"),delete n.helpers;const{code:l,map:c}=s.context();return{ast:n,code:l,map:c?c.toJSON():void 0}};function B9(n,e={}){const t=xr({},e),r=!!t.jit,o=!!t.minify,i=t.optimize==null?!0:t.optimize,s=C9(t).parse(n);return r?(i&&M9(s),o&&Gc(s),{ast:s,code:""}):(w9(s,t),D9(s,t))}/*! + * core-base v11.1.12 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */function N9(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Bl().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Bl().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function pa(n){return mn(n)&&$_(n)===0&&(Fi(n,"b")||Fi(n,"body"))}const NC=["b","body"];function O9(n){return zs(n,NC)}const OC=["c","cases"];function k9(n){return zs(n,OC,[])}const kC=["s","static"];function F9(n){return zs(n,kC)}const FC=["i","items"];function V9(n){return zs(n,FC,[])}const VC=["t","type"];function $_(n){return zs(n,VC)}const UC=["v","value"];function em(n,e){const t=zs(n,UC);if(t!=null)return t;throw rf(e)}const zC=["m","modifier"];function U9(n){return zs(n,zC)}const GC=["k","key"];function z9(n){const e=zs(n,GC);if(e)return e;throw rf(6)}function zs(n,e,t){for(let r=0;rG9(t,n)}function G9(n,e){const t=O9(e);if(t==null)throw rf(0);if($_(t)===1){const i=k9(t);return n.plural(i.reduce((a,s)=>[...a,WC(n,s)],[]))}else return WC(n,t)}function WC(n,e){const t=F9(e);if(t!=null)return n.type==="text"?t:n.normalize([t]);{const r=V9(e).reduce((o,i)=>[...o,X_(n,i)],[]);return n.normalize(r)}}function X_(n,e){const t=$_(e);switch(t){case 3:return em(e,t);case 9:return em(e,t);case 4:{const r=e;if(Fi(r,"k")&&r.k)return n.interpolate(n.named(r.k));if(Fi(r,"key")&&r.key)return n.interpolate(n.named(r.key));throw rf(t)}case 5:{const r=e;if(Fi(r,"i")&&fr(r.i))return n.interpolate(n.list(r.i));if(Fi(r,"index")&&fr(r.index))return n.interpolate(n.list(r.index));throw rf(t)}case 6:{const r=e,o=U9(r),i=z9(r);return n.linked(X_(n,i),o?X_(n,o):void 0,n.type)}case 7:return em(e,t);case 8:return em(e,t);default:throw new Error(`unhandled node on format message part: ${t}`)}}const H9=n=>n;let tm=Mn();function W9(n,e={}){let t=!1;const r=e.onError||h9;return e.onError=o=>{t=!0,r(o)},{...B9(n,e),detectError:t}}function j9(n,e){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&nt(n)){fn(e.warnHtmlMessage)&&e.warnHtmlMessage;const r=(e.onCacheKey||H9)(n),o=tm[r];if(o)return o;const{ast:i,detectError:a}=W9(n,{...e,location:!1,jit:!0}),s=Y_(i);return a?s:tm[r]=s}else{const t=n.cacheKey;if(t){const r=tm[t];return r||(tm[t]=Y_(n))}else return Y_(n)}}let of=null;function Q9(n){of=n}function $9(n,e,t){of&&of.emit("i18n:init",{timestamp:Date.now(),i18n:n,version:e,meta:t})}const Y9=X9("function:translate");function X9(n){return e=>of&&of.emit(n,e)}const $a={INVALID_ARGUMENT:f9,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},q9=24;function Ya(n){return Jp(n,null,void 0)}function q_(n,e){return e.locale!=null?jC(e.locale):jC(n.locale)}let K_;function jC(n){if(nt(n))return n;if(Un(n)){if(n.resolvedOnce&&K_!=null)return K_;if(n.constructor.name==="Function"){const e=n();if(c9(e))throw Ya($a.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return K_=e}else throw Ya($a.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Ya($a.NOT_SUPPORT_LOCALE_TYPE)}function K9(n,e,t){return[...new Set([t,...Zn(e)?e:mn(e)?Object.keys(e):nt(e)?[e]:[t]])]}function QC(n,e,t){const r=nt(t)?t:af,o=n;o.__localeChainCache||(o.__localeChainCache=new Map);let i=o.__localeChainCache.get(r);if(!i){i=[];let a=[t];for(;Zn(a);)a=$C(i,a,e);const s=Zn(e)||!Xt(e)?e:e.default?e.default:null;a=nt(s)?[s]:s,Zn(a)&&$C(i,a,!1),o.__localeChainCache.set(r,i)}return i}function $C(n,e,t){let r=!0;for(let o=0;o{a===void 0?a=s:a+=s},f[1]=()=>{a!==void 0&&(e.push(a),a=void 0)},f[2]=()=>{f[0](),o++},f[3]=()=>{if(o>0)o--,r=4,f[0]();else{if(o=0,a===void 0||(a=oO(a),a===!1))return!1;f[1]()}};function h(){const p=n[t+1];if(r===5&&p==="'"||r===6&&p==='"')return t++,s="\\"+p,f[0](),!0}for(;r!==null;)if(t++,i=n[t],!(i==="\\"&&h())){if(l=rO(i),d=Gs[r],c=d[l]||d.l||8,c===8||(r=c[0],c[1]!==void 0&&(u=f[c[1]],u&&(s=i,u()===!1))))return;if(r===7)return e}}const YC=new Map;function aO(n,e){return mn(n)?n[e]:null}function sO(n,e){if(!mn(n))return null;let t=YC.get(e);if(t||(t=iO(e),t&&YC.set(e,t)),!t)return null;const r=t.length;let o=n,i=0;for(;i`${n.charAt(0).toLocaleUpperCase()}${n.substr(1)}`;function cO(){return{upper:(n,e)=>e==="text"&&nt(n)?n.toUpperCase():e==="vnode"&&mn(n)&&"__v_isVNode"in n?n.children.toUpperCase():n,lower:(n,e)=>e==="text"&&nt(n)?n.toLowerCase():e==="vnode"&&mn(n)&&"__v_isVNode"in n?n.children.toLowerCase():n,capitalize:(n,e)=>e==="text"&&nt(n)?qC(n):e==="vnode"&&mn(n)&&"__v_isVNode"in n?qC(n.children):n}}let KC;function uO(n){KC=n}let ZC;function dO(n){ZC=n}let JC;function fO(n){JC=n}let eS=null;const hO=n=>{eS=n},pO=()=>eS;let tS=null;const nS=n=>{tS=n},mO=()=>tS;let rS=0;function gO(n={}){const e=Un(n.onWarn)?n.onWarn:n9,t=nt(n.version)?n.version:lO,r=nt(n.locale)||Un(n.locale)?n.locale:af,o=Un(r)?af:r,i=Zn(n.fallbackLocale)||Xt(n.fallbackLocale)||nt(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:o,a=Xt(n.messages)?n.messages:Z_(o),s=Xt(n.datetimeFormats)?n.datetimeFormats:Z_(o),l=Xt(n.numberFormats)?n.numberFormats:Z_(o),c=xr(Mn(),n.modifiers,cO()),u=n.pluralRules||Mn(),d=Un(n.missing)?n.missing:null,f=fn(n.missingWarn)||zc(n.missingWarn)?n.missingWarn:!0,h=fn(n.fallbackWarn)||zc(n.fallbackWarn)?n.fallbackWarn:!0,p=!!n.fallbackFormat,m=!!n.unresolving,g=Un(n.postTranslation)?n.postTranslation:null,_=Xt(n.processor)?n.processor:null,A=fn(n.warnHtmlMessage)?n.warnHtmlMessage:!0,y=!!n.escapeParameter,b=Un(n.messageCompiler)?n.messageCompiler:KC,E=Un(n.messageResolver)?n.messageResolver:ZC||aO,x=Un(n.localeFallbacker)?n.localeFallbacker:JC||K9,w=mn(n.fallbackContext)?n.fallbackContext:void 0,L=n,C=mn(L.__datetimeFormatters)?L.__datetimeFormatters:new Map,P=mn(L.__numberFormatters)?L.__numberFormatters:new Map,D=mn(L.__meta)?L.__meta:{};rS++;const Q={version:t,cid:rS,locale:r,fallbackLocale:i,messages:a,modifiers:c,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:h,fallbackFormat:p,unresolving:m,postTranslation:g,processor:_,warnHtmlMessage:A,escapeParameter:y,messageCompiler:b,messageResolver:E,localeFallbacker:x,fallbackContext:w,onWarn:e,__meta:D};return Q.datetimeFormats=s,Q.numberFormats=l,Q.__datetimeFormatters=C,Q.__numberFormatters=P,__INTLIFY_PROD_DEVTOOLS__&&$9(Q,t,D),Q}const Z_=n=>({[n]:Mn()});function J_(n,e,t,r,o){const{missing:i,onWarn:a}=n;if(i!==null){const s=i(n,t,e,o);return nt(s)?s:e}else return e}function sf(n,e,t){const r=n;r.__localeChainCache=new Map,n.localeFallbacker(n,t,e)}function _O(n,e){return n===e?!1:n.split("-")[0]===e.split("-")[0]}function vO(n,e){const t=e.indexOf(n);if(t===-1)return!1;for(let r=t+1;r{iS.includes(l)?a[l]=t[l]:i[l]=t[l]}),nt(r)?i.locale=r:Xt(r)&&(a=r),Xt(o)&&(a=o),[i.key||"",s,i,a]}function aS(n,e,t){const r=n;for(const o in t){const i=`${e}__${o}`;r.__datetimeFormatters.has(i)&&r.__datetimeFormatters.delete(i)}}function sS(n,...e){const{numberFormats:t,unresolving:r,fallbackLocale:o,onWarn:i,localeFallbacker:a}=n,{__numberFormatters:s}=n,[l,c,u,d]=tv(...e),f=fn(u.missingWarn)?u.missingWarn:n.missingWarn;fn(u.fallbackWarn)?u.fallbackWarn:n.fallbackWarn;const h=!!u.part,p=q_(n,u),m=a(n,o,p);if(!nt(l)||l==="")return new Intl.NumberFormat(p,d).format(c);let g={},_,A=null;const y="number format";for(let x=0;x{lS.includes(l)?a[l]=t[l]:i[l]=t[l]}),nt(r)?i.locale=r:Xt(r)&&(a=r),Xt(o)&&(a=o),[i.key||"",s,i,a]}function cS(n,e,t){const r=n;for(const o in t){const i=`${e}__${o}`;r.__numberFormatters.has(i)&&r.__numberFormatters.delete(i)}}const AO=n=>n,yO=n=>"",bO="text",xO=n=>n.length===0?"":W_(n),EO=u9;function uS(n,e){return n=Math.abs(n),e===2?n?n>1?1:0:1:n?Math.min(n,2):0}function CO(n){const e=fr(n.pluralIndex)?n.pluralIndex:-1;return n.named&&(fr(n.named.count)||fr(n.named.n))?fr(n.named.count)?n.named.count:fr(n.named.n)?n.named.n:e:e}function SO(n,e){e.count||(e.count=n),e.n||(e.n=n)}function wO(n={}){const e=n.locale,t=CO(n),r=mn(n.pluralRules)&&nt(e)&&Un(n.pluralRules[e])?n.pluralRules[e]:uS,o=mn(n.pluralRules)&&nt(e)&&Un(n.pluralRules[e])?uS:void 0,i=_=>_[r(t,_.length,o)],a=n.list||[],s=_=>a[_],l=n.named||Mn();fr(n.pluralIndex)&&SO(t,l);const c=_=>l[_];function u(_,A){const y=Un(n.messages)?n.messages(_,!!A):mn(n.messages)?n.messages[_]:!1;return y||(n.parent?n.parent.message(_):yO)}const d=_=>n.modifiers?n.modifiers[_]:AO,f=Xt(n.processor)&&Un(n.processor.normalize)?n.processor.normalize:xO,h=Xt(n.processor)&&Un(n.processor.interpolate)?n.processor.interpolate:EO,p=Xt(n.processor)&&nt(n.processor.type)?n.processor.type:bO,g={list:s,named:c,plural:i,linked:(_,...A)=>{const[y,b]=A;let E="text",x="";A.length===1?mn(y)?(x=y.modifier||x,E=y.type||E):nt(y)&&(x=y||x):A.length===2&&(nt(y)&&(x=y||x),nt(b)&&(E=b||E));const w=u(_,!0)(g),L=E==="vnode"&&Zn(w)&&x?w[0]:w;return x?d(x)(L,E):L},message:u,type:p,interpolate:h,normalize:f,values:xr(Mn(),a,l)};return g}const dS=()=>"",vi=n=>Un(n);function fS(n,...e){const{fallbackFormat:t,postTranslation:r,unresolving:o,messageCompiler:i,fallbackLocale:a,messages:s}=n,[l,c]=nv(...e),u=fn(c.missingWarn)?c.missingWarn:n.missingWarn,d=fn(c.fallbackWarn)?c.fallbackWarn:n.fallbackWarn,f=fn(c.escapeParameter)?c.escapeParameter:n.escapeParameter,h=!!c.resolvedMessage,p=nt(c.default)||fn(c.default)?fn(c.default)?i?l:()=>l:c.default:t?i?l:()=>l:null,m=t||p!=null&&(nt(p)||Un(p)),g=q_(n,c);f&&MO(c);let[_,A,y]=h?[l,g,s[g]||Mn()]:hS(n,l,g,a,d,u),b=_,E=l;if(!h&&!(nt(b)||pa(b)||vi(b))&&m&&(b=p,E=b),!h&&(!(nt(b)||pa(b)||vi(b))||!nt(A)))return o?nm:l;let x=!1;const w=()=>{x=!0},L=vi(b)?b:pS(n,l,A,b,E,w);if(x)return b;const C=RO(n,A,y,c),P=wO(C),D=TO(n,L,P);let Q=r?r(D,l):D;if(f&&nt(Q)&&(Q=s9(Q)),__INTLIFY_PROD_DEVTOOLS__){const re={timestamp:Date.now(),key:nt(l)?l:vi(b)?b.key:"",locale:A||(vi(b)?b.locale:""),format:nt(b)?b:vi(b)?b.source:"",message:Q};re.meta=xr({},n.__meta,pO()||{}),Y9(re)}return Q}function MO(n){Zn(n.list)?n.list=n.list.map(e=>nt(e)?IC(e):e):mn(n.named)&&Object.keys(n.named).forEach(e=>{nt(n.named[e])&&(n.named[e]=IC(n.named[e]))})}function hS(n,e,t,r,o,i){const{messages:a,onWarn:s,messageResolver:l,localeFallbacker:c}=n,u=c(n,r,t);let d=Mn(),f,h=null;const p="translate";for(let m=0;mr);return c.locale=t,c.key=e,c}const l=a(r,IO(n,t,o,r,s,i));return l.locale=t,l.key=e,l.source=r,l}function TO(n,e,t){return e(t)}function nv(...n){const[e,t,r]=n,o=Mn();if(!nt(e)&&!fr(e)&&!vi(e)&&!pa(e))throw Ya($a.INVALID_ARGUMENT);const i=fr(e)?String(e):(vi(e),e);return fr(t)?o.plural=t:nt(t)?o.default=t:Xt(t)&&!qp(t)?o.named=t:Zn(t)&&(o.list=t),fr(r)?o.plural=r:nt(r)?o.default=r:Xt(r)&&xr(o,r),[i,o]}function IO(n,e,t,r,o,i){return{locale:e,key:t,warnHtmlMessage:o,onError:a=>{throw i&&i(a),a},onCacheKey:a=>r9(e,t,a)}}function RO(n,e,t,r){const{modifiers:o,pluralRules:i,messageResolver:a,fallbackLocale:s,fallbackWarn:l,missingWarn:c,fallbackContext:u}=n,f={locale:e,modifiers:o,pluralRules:i,messages:(h,p)=>{let m=a(t,h);if(m==null&&(u||p)){const[,,g]=hS(u||n,h,e,s,l,c);m=a(g,h)}if(nt(m)||pa(m)){let g=!1;const A=pS(n,h,e,m,h,()=>{g=!0});return g?dS:A}else return vi(m)?m:dS}};return n.processor&&(f.processor=n.processor),r.list&&(f.list=r.list),r.named&&(f.named=r.named),fr(r.plural)&&(f.pluralIndex=r.plural),f}N9();/*! + * vue-i18n v11.1.12 + * (c) 2025 kazuya kawaguchi + * Released under the MIT License. + */const LO="11.1.12";function PO(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Bl().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Bl().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Bl().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Bl().__INTLIFY_PROD_DEVTOOLS__=!1)}const Do={UNEXPECTED_RETURN_TYPE:q9,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32};function Xo(n,...e){return Jp(n,null,void 0)}const rv=Us("__translateVNode"),ov=Us("__datetimeParts"),iv=Us("__numberParts"),mS=Us("__setPluralRules"),gS=Us("__injectWithOption"),av=Us("__dispose");function lf(n){if(!mn(n)||pa(n))return n;for(const e in n)if(Fi(n,e))if(!e.includes("."))mn(n[e])&&lf(n[e]);else{const t=e.split("."),r=t.length-1;let o=n,i=!1;for(let a=0;a{if("locale"in s&&"resource"in s){const{locale:l,resource:c}=s;l?(a[l]=a[l]||Mn(),Zp(c,a[l])):Zp(c,a)}else nt(s)&&Zp(JSON.parse(s),a)}),o==null&&i)for(const s in a)Fi(a,s)&&lf(a[s]);return a}function _S(n){return n.type}function vS(n,e,t){let r=mn(e.messages)?e.messages:Mn();"__i18nGlobal"in t&&(r=sv(n.locale.value,{messages:r,__i18n:t.__i18nGlobal}));const o=Object.keys(r);o.length&&o.forEach(i=>{n.mergeLocaleMessage(i,r[i])});{if(mn(e.datetimeFormats)){const i=Object.keys(e.datetimeFormats);i.length&&i.forEach(a=>{n.mergeDateTimeFormat(a,e.datetimeFormats[a])})}if(mn(e.numberFormats)){const i=Object.keys(e.numberFormats);i.length&&i.forEach(a=>{n.mergeNumberFormat(a,e.numberFormats[a])})}}}function AS(n){return Be($d,null,n,0)}const yS="__INTLIFY_META__",bS=()=>[],DO=()=>!1;let xS=0;function ES(n){return((e,t,r,o)=>n(t,r,Po()||void 0,o))}const BO=()=>{const n=Po();let e=null;return n&&(e=_S(n)[yS])?{[yS]:e}:null};function lv(n={}){const{__root:e,__injectWithOption:t}=n,r=e===void 0,o=n.flatJson,i=Xp?vt:Jr;let a=fn(n.inheritLocale)?n.inheritLocale:!0;const s=i(e&&a?e.locale.value:nt(n.locale)?n.locale:af),l=i(e&&a?e.fallbackLocale.value:nt(n.fallbackLocale)||Zn(n.fallbackLocale)||Xt(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:s.value),c=i(sv(s.value,n)),u=i(Xt(n.datetimeFormats)?n.datetimeFormats:{[s.value]:{}}),d=i(Xt(n.numberFormats)?n.numberFormats:{[s.value]:{}});let f=e?e.missingWarn:fn(n.missingWarn)||zc(n.missingWarn)?n.missingWarn:!0,h=e?e.fallbackWarn:fn(n.fallbackWarn)||zc(n.fallbackWarn)?n.fallbackWarn:!0,p=e?e.fallbackRoot:fn(n.fallbackRoot)?n.fallbackRoot:!0,m=!!n.fallbackFormat,g=Un(n.missing)?n.missing:null,_=Un(n.missing)?ES(n.missing):null,A=Un(n.postTranslation)?n.postTranslation:null,y=e?e.warnHtmlMessage:fn(n.warnHtmlMessage)?n.warnHtmlMessage:!0,b=!!n.escapeParameter;const E=e?e.modifiers:Xt(n.modifiers)?n.modifiers:{};let x=n.pluralRules||e&&e.pluralRules,w;w=(()=>{r&&nS(null);const te={version:LO,locale:s.value,fallbackLocale:l.value,messages:c.value,modifiers:E,pluralRules:x,missing:_===null?void 0:_,missingWarn:f,fallbackWarn:h,fallbackFormat:m,unresolving:!0,postTranslation:A===null?void 0:A,warnHtmlMessage:y,escapeParameter:b,messageResolver:n.messageResolver,messageCompiler:n.messageCompiler,__meta:{framework:"vue"}};te.datetimeFormats=u.value,te.numberFormats=d.value,te.__datetimeFormatters=Xt(w)?w.__datetimeFormatters:void 0,te.__numberFormatters=Xt(w)?w.__numberFormatters:void 0;const de=gO(te);return r&&nS(de),de})(),sf(w,s.value,l.value);function C(){return[s.value,l.value,c.value,u.value,d.value]}const P=bt({get:()=>s.value,set:te=>{w.locale=te,s.value=te}}),D=bt({get:()=>l.value,set:te=>{w.fallbackLocale=te,l.value=te,sf(w,s.value,te)}}),Q=bt(()=>c.value),re=bt(()=>u.value),G=bt(()=>d.value);function se(){return Un(A)?A:null}function ee(te){A=te,w.postTranslation=te}function ie(){return g}function H(te){te!==null&&(_=ES(te)),g=te,w.missing=_}const T=(te,de,we,Ie,Ne,He)=>{C();let je;try{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=e?mO():void 0),je=te(w)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=void 0)}if(we!=="translate exists"&&fr(je)&&je===nm||we==="translate exists"&&!je){const[ct,Vt]=de();return e&&p?Ie(e):Ne(ct)}else{if(He(je))return je;throw Xo(Do.UNEXPECTED_RETURN_TYPE)}};function R(...te){return T(de=>Reflect.apply(fS,null,[de,...te]),()=>nv(...te),"translate",de=>Reflect.apply(de.t,de,[...te]),de=>de,de=>nt(de))}function O(...te){const[de,we,Ie]=te;if(Ie&&!mn(Ie))throw Xo(Do.INVALID_ARGUMENT);return R(de,we,xr({resolvedMessage:!0},Ie||{}))}function W(...te){return T(de=>Reflect.apply(oS,null,[de,...te]),()=>ev(...te),"datetime format",de=>Reflect.apply(de.d,de,[...te]),()=>XC,de=>nt(de)||Zn(de))}function ae(...te){return T(de=>Reflect.apply(sS,null,[de,...te]),()=>tv(...te),"number format",de=>Reflect.apply(de.n,de,[...te]),()=>XC,de=>nt(de)||Zn(de))}function ne(te){return te.map(de=>nt(de)||fr(de)||fn(de)?AS(String(de)):de)}const F={normalize:ne,interpolate:te=>te,type:"vnode"};function k(...te){return T(de=>{let we;const Ie=de;try{Ie.processor=F,we=Reflect.apply(fS,null,[Ie,...te])}finally{Ie.processor=null}return we},()=>nv(...te),"translate",de=>de[rv](...te),de=>[AS(de)],de=>Zn(de))}function q(...te){return T(de=>Reflect.apply(sS,null,[de,...te]),()=>tv(...te),"number format",de=>de[iv](...te),bS,de=>nt(de)||Zn(de))}function j(...te){return T(de=>Reflect.apply(oS,null,[de,...te]),()=>ev(...te),"datetime format",de=>de[ov](...te),bS,de=>nt(de)||Zn(de))}function U(te){x=te,w.pluralRules=x}function z(te,de){return T(()=>{if(!te)return!1;const we=nt(de)?de:s.value,Ie=S(we),Ne=w.messageResolver(Ie,te);return pa(Ne)||vi(Ne)||nt(Ne)},()=>[te],"translate exists",we=>Reflect.apply(we.te,we,[te,de]),DO,we=>fn(we))}function v(te){let de=null;const we=QC(w,l.value,s.value);for(let Ie=0;Ie{a&&(s.value=te,w.locale=te,sf(w,s.value,l.value))}),dr(e.fallbackLocale,te=>{a&&(l.value=te,w.fallbackLocale=te,sf(w,s.value,l.value))}));const fe={id:xS,locale:P,fallbackLocale:D,get inheritLocale(){return a},set inheritLocale(te){a=te,te&&e&&(s.value=e.locale.value,l.value=e.fallbackLocale.value,sf(w,s.value,l.value))},get availableLocales(){return Object.keys(c.value).sort()},messages:Q,get modifiers(){return E},get pluralRules(){return x||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn(te){f=te,w.missingWarn=f},get fallbackWarn(){return h},set fallbackWarn(te){h=te,w.fallbackWarn=h},get fallbackRoot(){return p},set fallbackRoot(te){p=te},get fallbackFormat(){return m},set fallbackFormat(te){m=te,w.fallbackFormat=m},get warnHtmlMessage(){return y},set warnHtmlMessage(te){y=te,w.warnHtmlMessage=te},get escapeParameter(){return b},set escapeParameter(te){b=te,w.escapeParameter=te},t:R,getLocaleMessage:S,setLocaleMessage:I,mergeLocaleMessage:J,getPostTranslationHandler:se,setPostTranslationHandler:ee,getMissingHandler:ie,setMissingHandler:H,[mS]:U};return fe.datetimeFormats=re,fe.numberFormats=G,fe.rt=O,fe.te=z,fe.tm=M,fe.d=W,fe.n=ae,fe.getDateTimeFormat=$,fe.setDateTimeFormat=B,fe.mergeDateTimeFormat=V,fe.getNumberFormat=Y,fe.setNumberFormat=le,fe.mergeNumberFormat=me,fe[gS]=t,fe[rv]=k,fe[ov]=j,fe[iv]=q,fe}function NO(n){const e=nt(n.locale)?n.locale:af,t=nt(n.fallbackLocale)||Zn(n.fallbackLocale)||Xt(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:e,r=Un(n.missing)?n.missing:void 0,o=fn(n.silentTranslationWarn)||zc(n.silentTranslationWarn)?!n.silentTranslationWarn:!0,i=fn(n.silentFallbackWarn)||zc(n.silentFallbackWarn)?!n.silentFallbackWarn:!0,a=fn(n.fallbackRoot)?n.fallbackRoot:!0,s=!!n.formatFallbackMessages,l=Xt(n.modifiers)?n.modifiers:{},c=n.pluralizationRules,u=Un(n.postTranslation)?n.postTranslation:void 0,d=nt(n.warnHtmlInMessage)?n.warnHtmlInMessage!=="off":!0,f=!!n.escapeParameterHtml,h=fn(n.sync)?n.sync:!0;let p=n.messages;if(Xt(n.sharedMessages)){const E=n.sharedMessages;p=Object.keys(E).reduce((w,L)=>{const C=w[L]||(w[L]={});return xr(C,E[L]),w},p||{})}const{__i18n:m,__root:g,__injectWithOption:_}=n,A=n.datetimeFormats,y=n.numberFormats,b=n.flatJson;return{locale:e,fallbackLocale:t,messages:p,flatJson:b,datetimeFormats:A,numberFormats:y,missing:r,missingWarn:o,fallbackWarn:i,fallbackRoot:a,fallbackFormat:s,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:n.messageResolver,inheritLocale:h,__i18n:m,__root:g,__injectWithOption:_}}function cv(n={}){const e=lv(NO(n)),{__extender:t}=n,r={id:e.id,get locale(){return e.locale.value},set locale(o){e.locale.value=o},get fallbackLocale(){return e.fallbackLocale.value},set fallbackLocale(o){e.fallbackLocale.value=o},get messages(){return e.messages.value},get datetimeFormats(){return e.datetimeFormats.value},get numberFormats(){return e.numberFormats.value},get availableLocales(){return e.availableLocales},get missing(){return e.getMissingHandler()},set missing(o){e.setMissingHandler(o)},get silentTranslationWarn(){return fn(e.missingWarn)?!e.missingWarn:e.missingWarn},set silentTranslationWarn(o){e.missingWarn=fn(o)?!o:o},get silentFallbackWarn(){return fn(e.fallbackWarn)?!e.fallbackWarn:e.fallbackWarn},set silentFallbackWarn(o){e.fallbackWarn=fn(o)?!o:o},get modifiers(){return e.modifiers},get formatFallbackMessages(){return e.fallbackFormat},set formatFallbackMessages(o){e.fallbackFormat=o},get postTranslation(){return e.getPostTranslationHandler()},set postTranslation(o){e.setPostTranslationHandler(o)},get sync(){return e.inheritLocale},set sync(o){e.inheritLocale=o},get warnHtmlInMessage(){return e.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){e.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return e.escapeParameter},set escapeParameterHtml(o){e.escapeParameter=o},get pluralizationRules(){return e.pluralRules||{}},__composer:e,t(...o){return Reflect.apply(e.t,e,[...o])},rt(...o){return Reflect.apply(e.rt,e,[...o])},te(o,i){return e.te(o,i)},tm(o){return e.tm(o)},getLocaleMessage(o){return e.getLocaleMessage(o)},setLocaleMessage(o,i){e.setLocaleMessage(o,i)},mergeLocaleMessage(o,i){e.mergeLocaleMessage(o,i)},d(...o){return Reflect.apply(e.d,e,[...o])},getDateTimeFormat(o){return e.getDateTimeFormat(o)},setDateTimeFormat(o,i){e.setDateTimeFormat(o,i)},mergeDateTimeFormat(o,i){e.mergeDateTimeFormat(o,i)},n(...o){return Reflect.apply(e.n,e,[...o])},getNumberFormat(o){return e.getNumberFormat(o)},setNumberFormat(o,i){e.setNumberFormat(o,i)},mergeNumberFormat(o,i){e.mergeNumberFormat(o,i)}};return r.__extender=t,r}function OO(n,e,t){return{beforeCreate(){const r=Po();if(!r)throw Xo(Do.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const i=o.i18n;if(o.__i18n&&(i.__i18n=o.__i18n),i.__root=e,this===this.$root)this.$i18n=CS(n,i);else{i.__injectWithOption=!0,i.__extender=t.__vueI18nExtend,this.$i18n=cv(i);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=CS(n,o);else{this.$i18n=cv({__i18n:o.__i18n,__injectWithOption:!0,__extender:t.__vueI18nExtend,__root:e});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=n;o.__i18nGlobal&&vS(e,o,o),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$te=(i,a)=>this.$i18n.te(i,a),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),t.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=Po();if(!r)throw Xo(Do.UNEXPECTED_ERROR);const o=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,o.__disposer&&(o.__disposer(),delete o.__disposer,delete o.__extender),t.__deleteInstance(r),delete this.$i18n}}}function CS(n,e){n.locale=e.locale||n.locale,n.fallbackLocale=e.fallbackLocale||n.fallbackLocale,n.missing=e.missing||n.missing,n.silentTranslationWarn=e.silentTranslationWarn||n.silentFallbackWarn,n.silentFallbackWarn=e.silentFallbackWarn||n.silentFallbackWarn,n.formatFallbackMessages=e.formatFallbackMessages||n.formatFallbackMessages,n.postTranslation=e.postTranslation||n.postTranslation,n.warnHtmlInMessage=e.warnHtmlInMessage||n.warnHtmlInMessage,n.escapeParameterHtml=e.escapeParameterHtml||n.escapeParameterHtml,n.sync=e.sync||n.sync,n.__composer[mS](e.pluralizationRules||n.pluralizationRules);const t=sv(n.locale,{messages:e.messages,__i18n:e.__i18n});return Object.keys(t).forEach(r=>n.mergeLocaleMessage(r,t[r])),e.datetimeFormats&&Object.keys(e.datetimeFormats).forEach(r=>n.mergeDateTimeFormat(r,e.datetimeFormats[r])),e.numberFormats&&Object.keys(e.numberFormats).forEach(r=>n.mergeNumberFormat(r,e.numberFormats[r])),n}const uv={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:n=>n==="parent"||n==="global",default:"parent"},i18n:{type:Object}};function kO({slots:n},e){return e.length===1&&e[0]==="default"?(n.default?n.default():[]).reduce((r,o)=>[...r,...o.type===Nt?o.children:[o]],[]):e.reduce((t,r)=>{const o=n[r];return o&&(t[r]=o()),t},Mn())}function SS(){return Nt}const wS=Ml({name:"i18n-t",props:xr({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:n=>fr(n)||!isNaN(n)}},uv),setup(n,e){const{slots:t,attrs:r}=e,o=n.i18n||cf({useScope:n.scope,__useComponent:!0});return()=>{const i=Object.keys(t).filter(d=>d[0]!=="_"),a=Mn();n.locale&&(a.locale=n.locale),n.plural!==void 0&&(a.plural=nt(n.plural)?+n.plural:n.plural);const s=kO(e,i),l=o[rv](n.keypath,s,a),c=xr(Mn(),r),u=nt(n.tag)||mn(n.tag)?n.tag:SS();return Zd(u,c,l)}}});function FO(n){return Zn(n)&&!nt(n[0])}function MS(n,e,t,r){const{slots:o,attrs:i}=e;return()=>{const a={part:!0};let s=Mn();n.locale&&(a.locale=n.locale),nt(n.format)?a.key=n.format:mn(n.format)&&(nt(n.format.key)&&(a.key=n.format.key),s=Object.keys(n.format).reduce((f,h)=>t.includes(h)?xr(Mn(),f,{[h]:n.format[h]}):f,Mn()));const l=r(n.value,a,s);let c=[a.key];Zn(l)?c=l.map((f,h)=>{const p=o[f.type],m=p?p({[f.type]:f.value,index:h,parts:l}):[f.value];return FO(m)&&(m[0].key=`${f.type}-${h}`),m}):nt(l)&&(c=[l]);const u=xr(Mn(),i),d=nt(n.tag)||mn(n.tag)?n.tag:SS();return Zd(d,u,c)}}const TS=Ml({name:"i18n-n",props:xr({value:{type:Number,required:!0},format:{type:[String,Object]}},uv),setup(n,e){const t=n.i18n||cf({useScope:n.scope,__useComponent:!0});return MS(n,e,lS,(...r)=>t[iv](...r))}});function VO(n,e){const t=n;if(n.mode==="composition")return t.__getInstance(e)||n.global;{const r=t.__getInstance(e);return r!=null?r.__composer:n.global.__composer}}function UO(n){const e=a=>{const{instance:s,value:l}=a;if(!s||!s.$)throw Xo(Do.UNEXPECTED_ERROR);const c=VO(n,s.$),u=IS(l);return[Reflect.apply(c.t,c,[...RS(u)]),c]};return{created:(a,s)=>{const[l,c]=e(s);Xp&&n.global===c&&(a.__i18nWatcher=dr(c.locale,()=>{s.instance&&s.instance.$forceUpdate()})),a.__composer=c,a.textContent=l},unmounted:a=>{Xp&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:s})=>{if(a.__composer){const l=a.__composer,c=IS(s);a.textContent=Reflect.apply(l.t,l,[...RS(c)])}},getSSRProps:a=>{const[s]=e(a);return{textContent:s}}}}function IS(n){if(nt(n))return{path:n};if(Xt(n)){if(!("path"in n))throw Xo(Do.REQUIRED_VALUE,"path");return n}else throw Xo(Do.INVALID_VALUE)}function RS(n){const{path:e,locale:t,args:r,choice:o,plural:i}=n,a={},s=r||{};return nt(t)&&(a.locale=t),fr(o)&&(a.plural=o),fr(i)&&(a.plural=i),[e,s,a]}function zO(n,e,...t){const r=Xt(t[0])?t[0]:{};(fn(r.globalInstall)?r.globalInstall:!0)&&([wS.name,"I18nT"].forEach(i=>n.component(i,wS)),[TS.name,"I18nN"].forEach(i=>n.component(i,TS)),[PS.name,"I18nD"].forEach(i=>n.component(i,PS))),n.directive("t",UO(e))}const GO=Us("global-vue-i18n");function HO(n={}){const e=__VUE_I18N_LEGACY_API__&&fn(n.legacy)?n.legacy:__VUE_I18N_LEGACY_API__,t=fn(n.globalInjection)?n.globalInjection:!0,r=new Map,[o,i]=WO(n,e),a=Us("");function s(d){return r.get(d)||null}function l(d,f){r.set(d,f)}function c(d){r.delete(d)}const u={get mode(){return __VUE_I18N_LEGACY_API__&&e?"legacy":"composition"},async install(d,...f){if(d.__VUE_I18N_SYMBOL__=a,d.provide(d.__VUE_I18N_SYMBOL__,u),Xt(f[0])){const m=f[0];u.__composerExtend=m.__composerExtend,u.__vueI18nExtend=m.__vueI18nExtend}let h=null;!e&&t&&(h=ZO(d,u.global)),__VUE_I18N_FULL_INSTALL__&&zO(d,u,...f),__VUE_I18N_LEGACY_API__&&e&&d.mixin(OO(i,i.__composer,u));const p=d.unmount;d.unmount=()=>{h&&h(),u.dispose(),p()}},get global(){return i},dispose(){o.stop()},__instances:r,__getInstance:s,__setInstance:l,__deleteInstance:c};return u}function cf(n={}){const e=Po();if(e==null)throw Xo(Do.MUST_BE_CALL_SETUP_TOP);if(!e.isCE&&e.appContext.app!=null&&!e.appContext.app.__VUE_I18N_SYMBOL__)throw Xo(Do.NOT_INSTALLED);const t=jO(e),r=$O(t),o=_S(e),i=QO(n,o);if(i==="global")return vS(r,n,o),r;if(i==="parent"){let l=YO(t,e,n.__useComponent);return l==null&&(l=r),l}const a=t;let s=a.__getInstance(e);if(s==null){const l=xr({},n);"__i18n"in o&&(l.__i18n=o.__i18n),r&&(l.__root=r),s=lv(l),a.__composerExtend&&(s[av]=a.__composerExtend(s)),qO(a,e,s),a.__setInstance(e,s)}return s}function WO(n,e){const t=BN(),r=__VUE_I18N_LEGACY_API__&&e?t.run(()=>cv(n)):t.run(()=>lv(n));if(r==null)throw Xo(Do.UNEXPECTED_ERROR);return[t,r]}function jO(n){const e=Lo(n.isCE?GO:n.appContext.app.__VUE_I18N_SYMBOL__);if(!e)throw Xo(n.isCE?Do.NOT_INSTALLED_WITH_PROVIDE:Do.UNEXPECTED_ERROR);return e}function QO(n,e){return qp(n)?"__i18n"in e?"local":"global":n.useScope?n.useScope:"local"}function $O(n){return n.mode==="composition"?n.global:n.global.__composer}function YO(n,e,t=!1){let r=null;const o=e.root;let i=XO(e,t);for(;i!=null;){const a=n;if(n.mode==="composition")r=a.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const s=a.__getInstance(i);s!=null&&(r=s.__composer,t&&r&&!r[gS]&&(r=null))}if(r!=null||o===i)break;i=i.parent}return r}function XO(n,e=!1){return n==null?null:e&&n.vnode.ctx||n.parent}function qO(n,e,t){$o(()=>{},e),Wd(()=>{const r=t;n.__deleteInstance(e);const o=r[av];o&&(o(),delete r[av])},e)}const KO=["locale","fallbackLocale","availableLocales"],LS=["t","rt","d","n","tm","te"];function ZO(n,e){const t=Object.create(null);return KO.forEach(o=>{const i=Object.getOwnPropertyDescriptor(e,o);if(!i)throw Xo(Do.UNEXPECTED_ERROR);const a=Ir(i.value)?{get(){return i.value.value},set(s){i.value.value=s}}:{get(){return i.get&&i.get()}};Object.defineProperty(t,o,a)}),n.config.globalProperties.$i18n=t,LS.forEach(o=>{const i=Object.getOwnPropertyDescriptor(e,o);if(!i||!i.value)throw Xo(Do.UNEXPECTED_ERROR);Object.defineProperty(n.config.globalProperties,`$${o}`,i)}),()=>{delete n.config.globalProperties.$i18n,LS.forEach(o=>{delete n.config.globalProperties[`$${o}`]})}}const PS=Ml({name:"i18n-d",props:xr({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},uv),setup(n,e){const t=n.i18n||cf({useScope:n.scope,__useComponent:!0});return MS(n,e,iS,(...r)=>t[ov](...r))}});if(PO(),uO(j9),dO(sO),fO(QC),__INTLIFY_PROD_DEVTOOLS__){const n=Bl();n.__INTLIFY__=!0,Q9(n.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const JO={step1:{choose_product:"Kies product",door_type:"Type deur",fixed_panel:"Vaste wand",fixed_panel_explain:"Een vast paneel dat niet beweegt.",pivot_door:"Taatsdeur",pivot_door_explain:"Een draaideur die naar beide kanten opent.",hinged_door:"Scharnierdeur met kozijn",hinged_door_explain:"Een deur die opent met scharnieren in een vast kozijn.",sliding_door:"Schuifdeur",sliding_door_explain:"Een deur die zijwaarts opent langs een rail.",rebated_door:"Opdekdeur",rebated_door_explain:"Een deur die deels over het kozijn valt bij sluiting.",folding_wall:"Vouwwand",folding_wall_explain:"Een wand bestaande uit meerdere panelen die kunnen worden opgevouwen.",dimensions:"Afmeting",width:"Breedte",height:"Hoogte",number_of_panels:"Aantal panelen",number_of_doors:"Aantal deuren",top_light:"Bovenlicht",top_light_above_doorpanel:"Bovenlicht boven deur/paneel",top_light_hide_intermediate_style:"Verberg tussenstijl",top_light_style_continued_in_side_panel:"Stijl doorlopen in zijpaneel",top_light_height:"Hoogte bovenlicht",side_panels_left:"Zijpanelen links",side_panels_right:"Zijpanelen rechts",user_input_custom_door_width:"Breedte per paneel zelf bepalen",panel_width:"Breedte paneel",panel:"Paneel",side_panel_size:"Afmeting zijpaneel"},step2:{choose_layout:"Kies verdeling",type_layout:"Type verdeling",custom_layout:"Zelf indelen",predefined_layout:"Ontwerpsjablonen",custom_layout_tooltip:"Kies een rechte, eenvoudige roedeverdeling en stel deze zelf samen",predefined_layout_tooltip:"Laat je inspireren door opvallende en creatieve roede-ontwerpen, speciaal door ons samengesteld",number_of_horizontal_rods:"Aantal liggers",number_of_vertical_rods:"Aantal staanders",layout_templates:"Sjablonen",continuous_lines_side_panels:"Roedes doorlopend",positioning:"Positionering",positioning_fixed_layout:"Vaste verdeling",positioning_custom_layout:"Eigen verdeling",panel_custom_layout:"Paneel {index} - eigen verdeling",door_custom_layout:"Deur {index} - eigen verdeling",horizontal_rod:"Ligger {index}",vertical_rod:"Staander {index}",number_of_vertical_rods_side_panel:"Aantal staanders zijpaneel",left_side_panel_layout:"Zijpaneel links - verdeling",right_side_panel_layout:"Zijpaneel rechts - verdeling"},step3:{choose_detailing:"Kies detaillering",material_colour:"Kleur materiaal",material_colours:{black:"Zwart",bronze:"Brons",black_grey:"Zwartgrijs",light_grey:"Lichtgrijs",gold:"Goud",ral:"RAL"},material_colours_tooltip:{black:"Zwart RAL 9005",bronze:"Aluw Bronze",black_grey:"Zwartgrijs RAL 7021",light_grey:"Lichtgrijs RAL 7044",gold:"Aluw Gold",ral:"RAL-kleur. Dit kan mogelijk een meerprijs geven."},ral_colour_number:"RAL-kleurnummer",coating_type:{tbd:"N.t.b.",matt:"Mat",gloss:"Glans",fine_texture:"Fijnstructuur"},ral_colour_note:"Opmerking RAL-kleur",oak_veneer_colour:"Kleur eiken fineer",veneer_colours:{natural:"Naturel",chocolate:"Chocolade"},glass_colour:"Kleur glas",glass_colours:{clear:"Helder",bronze_clear:"Brons",grey_clear:"Grijs",bronze_satin:"Mat brons",satin:"Mat",grey_satin:"Mat grijs"},glass_option:"Optie glas",glass_10mm:"10mm glas",glass_10mm_hide_styles:"Verberg tussenstaanders",handle:"Handgreep",aluminium_handle:"Aluminium grepen",aluminium_handles:{corner:"Hoek",tube:"Buis",bracket:"Beugel",full_box:"Koker volledig",box:"Koker",moon:"Maan",bowl:"Kom",none:"Geen",lever:"Klink"},wooden_handle:"Houten grepen",wooden_handles:{corner:"Hoek",corner_1050:"Hoek 1050",corner_1200:"Hoek 1200",oval:"Ovaal",moon:"Maan",bow:"Beugel",box:"Koker",bowl:"Kom",none:"Geen"},bar_type:"Type roede",T_bar:"T-roede",flat_bar:"Platte roede",active_door:"Actieve deur",opening_direction:"Draairichting",sliding_direction:"Schuifrichting",to_be_determined:"N.t.b.",din_left:"DIN links",din_right:"DIN rechts",sliding_direction_hint:"Vanuit welke kamer gezien is de schuifrichting?",opening_direction_hint:"Vanuit welke kamer gezien is de draairichting?",active_door_hint:"De kant van de actievedeur is vanuit welke kamer gezien?",sliding_door_options:"Opties schuifdeur",softclose_single:"Softclose enkelzijdig",softclose_double:"Softclose dubbelzijdig",hide_rail_in_wall:"Verberg schuifrail in wand",hide_rail_in_wall_tooltip_title:"Verberg schuifrail in wand",hide_rail_in_wall_tooltip_description:"Met deze optie schuift je deur volledig weg in de wand of tussen twee kasten. De opening blijft dan helemaal vrij. Heb je zijpanelen? Dan is deze optie niet nodig, de deur schuift dan voor de opening langs en blijft zichtbaar naast het zijpaneel.",bottom_guide:"Ondergeleiding",bottom_guide_tooltip_title:"Ondergeleiding",bottom_guide_tooltip_description:"Met een ondergeleiding blijft de deur altijd netjes in het spoor lopen. Dit is vooral aan te raden bij bredere deuren of wanneer de deur veel gebruikt gaat worden.",high_threshold_option:"Optie hoge onderdorpel",high_threshold:"Hoge onderdorpel",drop_seal_option:"Optie valdorpel",drop_seal:"Valdorpel",remarks:"Opmerkingen",any_remarks:"Eventuele opmerkingen",material_existing_frame:"Materiaalsoort bestaand kozijn",wooden_frame:"Houten kozijn",metal_frame:"Metalen kozijn",locking:"Vergrendeling",lock_none:"Geen",lock_cylinder:"Cilinderslot",lock_occupied_free:"Vrij / bezet"},buttons:{show_dimensions:"Maatvoering weergeven",rotate_camera:"Draai camera",save_configuration:"Ontwerpen opslaan"},popupStepNext:"Verder",edit:"Wijzigen",finish:"Afronden",requestQuote:"Offerte ontvangen",editQuote:"Offerte wijzigen",copyConfigUrl:"Kopieer config URL",saveTemplate:"Template opslaan",templateName:"Template naam",templateNamePlaceholder:"Geef een naam voor dit template",quote:"Offerte",left:"Links",right:"Rechts",userMessages:{minPosition:"De minimale positie is {limit} cm.",maxPosition:"De maximale positie is {limit} cm.",minHeight:"De minimale hoogte is {limit} cm.",maxHeight:"De maximale hoogte is {limit} cm.",minWidth:"De minimale breedte is {limit} cm.",maxWidth:"De maximale breedte is {limit} cm.",maxWidthAutoAdjusted:"De maximale breedte is {limit} cm. De breedte is automatisch aangepast",minHeightTopLight:"De minimale hoogte van een bovenlicht is {limit} cm.",maxHeightTopLight:"De maximale hoogte van een bovenlicht is {limit} cm.",minWidthSidePanel:"De minimale breedte van een zijpaneel is {limit} cm.",maxWidthSidePanel:"De maximale breedte van een zijpaneel is {limit} cm. Kies eventueel meerdere zijpanelen",maxWidthThisSidePanel:"De maximale breedte voor dit paneel is {maxPanelWidth} cm. De totale breedte is max. {maxTotalWidth} cm.",maxSidePanelTotalWidth:"De totale maximale breedte is {limit} cm. De breedte van de zijpanelen is aangepast.",topLightHeight:"De maximale hoogte van een bovenlicht i.c.m. een deurhoogte van {doorHeight} cm is {limit} cm.",topLightWithSidePanelMaxHeight:"De maximale hoogte van een zijpaneel is {maxHeight} cm. De hoogte van de deur is aangepast naar {heightDoor} cm en de hoogte van het bovenlicht naar {heightTopLight} cm.",ralColorRange:"Een RAL-nummer ligt altijd tussen 1000 en 9999"},footer:{questions_contact:"Heb je vragen? Neem contact op!",product_price:"Product prijs",product_price_title:'Wat betekent "Product prijs"?',product_price_explain:"Dit is de prijs die gerekend wordt voor het product exclusief de montagekosten, transportkosten en BTW. Wanneer je een offerte aanvraagt krijg je een complete prijsopgave die bij jouw persoonlijke situatie past.",excl_vat_assembly_transport:"excl. BTW, montage en transport",incl_vat:"incl. 21% BTW",excl_vat:"excl. BTW",total_price:"Totaalprijs",total:"Totaal",measuring:"Inmeten",assembly:"Montage",request_quote:"Vraag offerte aan"},header:{add_design:"Ontwerp toevoegen"},popup:{close:"Sluiten",image_alt:"Popup afbeelding"},editName:{title:"Naam wijzigen",description:"Wijzig de configuratie naam.",design_name:"Naam ontwerp",design_name_placeholder:"Je volledige naam",button:"Naam wijzigen"},deleteConfig:{title:"Configuratie verwijderen",description:"Configuratie verwijderen? Je kunt altijd weer een nieuwe configuratie toevoegen.",button:"Configuratie verwijderen"},saveDesign:{title:"Ontwerp opslaan",intro:"Stuur je gemaakte ontwerp naar je emailadres en raak deze nooit meer kwijt. Je kan deze dan altijd weer openen door de link die je ontvangt",firstName:"Voornaam (Vereist)",firstName_placeholder:"Bijv. Jan",lastName:"Achternaam (Vereist)",lastName_placeholder:"Bijv. Bakker",email:"Emailadres (Vereist)",email_placeholder:"{'jan@domein.nl'}",button:"Ontwerp opslaan"},quoteForm:{intro:"Laat je gegevens achter en ontvang vrijblijvend binnen 1 werkdag een offerte van ons.",introEdit:"Je ontvangt de offerte binnen 24 uur (werkdagen) in jouw mailbox. Houd alsjeblieft ook je ongewenste e-mail in de gaten. De eventuele kosten voor het inmeten en monteren zijn afhankelijk van de plaats van montage, het is dus belangrijk dat je de plaats opgeeft waar de deur gemonteerd moet worden. Velden met een * zijn verplicht.",private:"Particulier",business:"Zakelijk",companyName:"Bedrijfsnaam (vereist)",companyName_placeholder:"bijv. Mijn Studio",reference:"Referentie",reference_placeholder:"Bijv. Project Tilburg",firstName:"Voornaam (vereist)",firstName_placeholder:"Bijv. Jan",lastName_required:"Achternaam (vereist)",lastName_placeholder:"Bijv. Bakker",city:"Woonplaats (vereist)",city_placeholder:"Bijv. Amsterdam",installation_choice:"Montage keuze",email:"Emailadres",email_required:"Emailadres (vereist)",email_placeholder:"{'Bijv. jan@domein.nl'}",phone:"Telefoonnummer",phone_required:"Telefoonnummer (vereist)",phone_placeholder:"Bijv. 06 1234 5678",remarks_optional:"Toelichting (optioneel)",remarks_placeholder:"Graag maak ik een opmerking over...",no_change_mail:"GEEN wijziging mail versturen",options:{measure_collect:"Zelf inmeten en afhalen",measure_deliver:"Zelf inmeten en afleveren",measure_deliver_by_us:"Laten inmeten en afleveren",measure_install_by_us:"Laten inmeten en monteren"},success:{received:"Top, we hebben je aanvraag binnen!",followup:"Binnen 1 werkdag nemen we contact met je op zodat je een complete offerte van ons ontvangt.",contact:"{'Heb je toch nog een vraag? Bel ons gerust op 085-1301965 of stuur een mail naar sales@aluwdoors.com.'}",closure:"Tot snel!"}},validation:{required:"Dit veld is vereist.",email:"Geen geldig e-mailadres.",phone:"Geen geldig telefoonnummer.",too_long:"Invoer is te lang."},loading:"Laden...",auth:{loginTitle:"Admin Login",loginSubtitle:"Log in om data te beheren",email:"E-mailadres",emailPlaceholder:"{'admin@example.com'}",password:"Wachtwoord",passwordPlaceholder:"Voer uw wachtwoord in",rememberMe:"Onthoud mij",loginButton:"Inloggen",logout:"Uitloggen",loggedInAs:"Ingelogd als"},users:{title:"Gebruikers beheren",description:"Beheer gebruikers en hun rechten.",notAuthorized:"Je hebt geen rechten om gebruikers te beheren. Alleen SuperAdmins kunnen dit.",empty:"Geen gebruikers gevonden.",name:"Naam",email:"E-mail",password:"Wachtwoord",role:"Rol",actions:"Acties",admin:"Admin",superadmin:"SuperAdmin",create:"Nieuwe gebruiker",createUser:"Gebruiker aanmaken",editUser:"Gebruiker bewerken",edit:"Bewerken",delete:"Verwijderen",save:"Opslaan",cancel:"Annuleren",leaveBlank:"laat leeg om ongewijzigd te laten",confirmDeleteTitle:"Gebruiker verwijderen",confirmDeleteMessage:"Weet je zeker dat je deze gebruiker wilt verwijderen? Dit kan niet ongedaan worden gemaakt."},templates:{title:"Templates beheren",description:"Overzicht van alle opgeslagen templates.",empty:"Geen templates gevonden.",noDescription:"Geen beschrijving",templateKey:"Template sleutel",createdAt:"Aangemaakt op",updatedAt:"Laatst gewijzigd",url:"URL",create:"Nieuwe template",view:"Bekijken",edit:"Wijzigen",download:"Download",delete:"Verwijderen",confirmDeleteTitle:"Template verwijderen",confirmDeleteMessage:"Weet je zeker dat je deze template wilt verwijderen? Dit kan niet ongedaan worden gemaakt.",cancel:"Annuleren"},quotation_loaded:"Uw offerte {index} is succesvol geladen.",quotation_notification_editable:"LET OP! uw wijzigingen worden niet automatisch opgeslagen. Indien er wijzigingen zijn, dan kunnen deze middels de knop 'offerte wijzigen' worden opgeslagen.",quotation_notification_not_editable:"Deze offerte kan niet gewijzigd worden. Voor vragen kunt u contact met ons opnemen."},ek={step1:{choose_product:"Choose product",door_type:"Door type",fixed_panel:"Fixed panel",fixed_panel_explain:"A fixed panel that remains in place.",pivot_door:"Pivot door",pivot_door_explain:"A door that rotates on a pivot hinge and opens both ways.",hinged_door:"Hinged door",hinged_door_explain:"A door that swings open on hinges within a fixed frame.",sliding_door:"Sliding door",sliding_door_explain:"A door that slides open sideways along a track.",rebated_door:"Rebated door",rebated_door_explain:"A door that partially overlaps the frame when closed.",folding_wall:"Folding wall",folding_wall_explain:"A wall made up of multiple panels that can be folded.",dimensions:"Dimensions",width:"Width",height:"Height",number_of_panels:"Number of panels",number_of_doors:"Number of doors",top_light:"Top light",top_light_above_doorpanel:"Top light above door/panel",top_light_hide_intermediate_style:"Hide intermediate style",top_light_style_continued_in_side_panel:"Style continued in side panel",top_light_height:"Height of top light",side_panels_left:"Side panels left",side_panels_right:"Side panels right",user_input_custom_door_width:"Adjust panel widht",panel_width:"Panel width",panel:"Panel",side_panel_size:"Side panel size"},step2:{choose_layout:"Choose layout",type_layout:"Layout type",custom_layout:"Custom layout",predefined_layout:"Design templates",custom_layout_tooltip:"Choose a straight, simple bar layout and compose it yourself",predefined_layout_tooltip:"Get inspired by striking and creative designs, specially curated by us",number_of_horizontal_rods:"Number of horizontal bars",number_of_vertical_rods:"Number of vertical bars",layout_templates:"Templates",continuous_lines_side_panels:"Continuous bars",positioning:"Positioning",positioning_fixed_layout:"Fixed layout",positioning_custom_layout:"Custom layout",panel_custom_layout:"Panel {index} - custom layout",door_custom_layout:"Door {index} - custom layout",horizontal_rod:"Horizontal bar {index}",vertical_rod:"Vertical bar {index}",number_of_vertical_rods_side_panel:"Number of side panel vertical bars",left_side_panel_layout:"Left side panel - layout",right_side_panel_layout:"Right side panel - layout"},step3:{choose_detailing:"Choose detailing",material_colour:"Material colour",material_colours:{black:"Black",bronze:"Bronze",black_grey:"Black Grey",light_grey:"Light Grey",gold:"Gold",ral:"RAL"},material_colours_tooltip:{black:"Black RAL 9005",bronze:"Aluw Bronze",black_grey:"Black Grey RAL 7021",light_grey:"Light Grey RAL 7044",gold:"Aluw Gold",ral:"RAL-colour. This may incur an additional charge."},ral_colour_number:"RAL colour number",coating_type:{tbd:"TBD",matt:"Matt",gloss:"Gloss",fine_texture:"Fine texture"},ral_colour_note:"RAL colour note",oak_veneer_colour:"Oak veneer colour",veneer_colours:{natural:"Natural",chocolate:"Chocolate"},glass_colour:"Glass colour",glass_colours:{clear:"Clear",bronze_clear:"Bronze clear",grey_clear:"Grey",bronze_satin:"Bronze satin",satin:"Satin",grey_satin:"Grey satin"},glass_option:"Glass option",glass_10mm:"10mm glass",glass_10mm_hide_styles:"Hide intermediate styles",handle:"Handle",aluminium_handle:"Aluminium handles",aluminium_handles:{corner:"Corner",tube:"Tube",bracket:"Bracket",full_box:"Full box profile",box:"Box profile",moon:"Moon",bowl:"Bowl",none:"None",lever:"Lever"},wooden_handle:"Wooden handles",wooden_handles:{corner:"Corner",corner_1050:"Corner 1050",corner_1200:"Corner 1200",oval:"Oval",moon:"Moon",bow:"Bow",box:"Box profile",bowl:"Bowl",none:"None"},bar_type:"Bar type",T_bar:"T-bar",flat_bar:"Flat bar",active_door:"Active door",opening_direction:"Opening direction",sliding_direction:"Sliding direction",to_be_determined:"TBD",din_left:"DIN links",din_right:"DIN rechts",sliding_direction_hint:"From which room is the sliding direction viewed?",opening_direction_hint:"From which room is the opening direction viewed?",active_door_hint:"From which room is the active door viewed?",sliding_door_options:"Sliding door options",softclose_single:"Soft-close single sided",softclose_double:"Soft-close double sided",hide_rail_in_wall:"Conceal sliding track in wall",hide_rail_in_wall_tooltip_title:"Conceal sliding track in wall",hide_rail_in_wall_tooltip_description:"This option allows the door to slide completely into the wall or between two cabinets, keeping the opening fully clear. When side panels are used, this is not necessary—the door will slide alongside the opening and remain visible next to the side panel.",bottom_guide:"Bottom guide",bottom_guide_tooltip_title:"Bottom guide",bottom_guide_tooltip_description:"With a bottom guide, the door always stays neatly in the track. This is especially recommended for wider doors or when the door is used frequently.",high_threshold_option:"High threshold option",high_threshold:"High threshold",drop_seal_option:"Drop seal option",drop_seal:"Drop seal",remarks:"Remarks",any_remarks:"Any remarks",material_existing_frame:"Material of existing frame",wooden_frame:"Wooden frame",metal_frame:"Metal frame",locking:"Locking",lock_none:"None",lock_cylinder:"Cylinder lock",lock_occupied_free:"Engaged / vacant"},buttons:{show_dimensions:"Show dimensions",rotate_camera:"Rotate camera",save_configuration:"Save my design"},popupStepNext:"Next",edit:"Edit",finish:"Finish",requestQuote:"Request Quote",editQuote:"Edit Quote",copyConfigUrl:"Copy config URL",saveTemplate:"Save template",templateName:"Template name",templateNamePlaceholder:"Enter a name for this template",quote:"Quote",left:"Left",right:"Right",userMessages:{minPosition:"The minimum bar position is {limit} cm.",maxPosition:"The maximum bar position is {limit} cm.",minHeight:"The minimum height is {limit} cm.",maxHeight:"The maximum height is {limit} cm.",minWidth:"The minimum width is {limit} cm.",maxWidth:"The maximum width is {limit} cm.",maxWidthAutoAdjusted:"The maximum width is {limit} cm. The width has been automatically adjusted.",minHeightTopLight:"The minimum height of a top light is {limit} cm.",maxHeightTopLight:"The maximum height of a top light is {limit} cm.",minWidthSidePanel:"The minimum width of a side panel is {limit} cm.",maxWidthSidePanel:"The maximum width of a side panel is {limit} cm. You may choose multiple side panels.",maxWidthThisSidePanel:"The maximum width for this panel is {maxPanelWidth} cm. The total width is max. {maxTotalWidth} cm.",maxSidePanelTotalWidth:"The total maximum width is {limit} cm. The width of the side panels has been adjusted.",topLightHeight:"The maximum height of a top light combined with a door height of {doorHeight} cm is {limit} cm",topLightWithSidePanelMaxHeight:"The maximum height of a side panel is {maxHeight} cm. The height of the door has been adjusted to {heightDoor} cm and the height of the top light to {heightTopLight} cm.",ralColorRange:"A RAL number is always between 1000 and 9999"},footer:{questions_contact:"Got questions? Get in touch!",product_price:"Product price",product_price_title:'What does "Product price" mean?',product_price_explain:"This is the price charged for the product excluding installation costs, transport costs, and VAT. When you request a quote, you will receive a complete price quote tailored to your personal situation.",excl_vat_assembly_transport:"excl. VAT, assembly and transport",incl_vat:"incl. 21% VAT",excl_vat:"excl. VAT",total_price:"Total price",total:"Total",measuring:"Measuring",assembly:"Assembly",request_quote:"Request a quote"},header:{add_design:"Add design"},popup:{close:"Close",image_alt:"Popup image"},editName:{title:"Rename",description:"Change the configuration name.",design_name:"Design name",design_name_placeholder:"Your full name",button:"Rename"},deleteConfig:{title:"Delete configuration",description:"Delete configuration? You can always add a new configuration later.",button:"Delete configuration"},saveDesign:{title:"Save design",intro:"Send your design to your email address so you never lose it. You can always open it again using the link you receive.",firstName:"Your first name",firstName_placeholder:"Your first name",lastName:"Your last name",lastName_placeholder:"Your last name",email:"Email address",email_placeholder:"{'info@customer.com'}",button:"Save design"},quoteForm:{intro:"Leave your details and receive a quote from us within 1 business day, free of obligation.",introEdit:"You will receive the quote within 24 hours (business days) in your mailbox. Please also check your spam folder. Any costs for measuring and installation depend on the installation location, so it is important to specify where the door should be installed. Fields marked with * are required.",private:"Private",business:"Business",companyName:"Company name (required)",companyName_placeholder:"e.g. Studio me",reference:"Reference",reference_placeholder:"e.g. Project Tilburg",firstName:"First name (required)",firstName_placeholder:"e.g. John",lastName_required:"Last name (required)",lastName_placeholder:"e.g. Smith",city:"City (required)",city_placeholder:"e.g. Amsterdam",installation_choice:"Installation choice",email:"Email address",email_required:"Email address (required)",email_placeholder:"{'e.g. john@domain.com'}",phone:"Phone number",phone_required:"Phone number (required)",phone_placeholder:"e.g. +31 6 1234 5678",remarks_optional:"Notes (optional)",remarks_placeholder:"I would like to comment...",no_change_mail:"DO NOT send change email",options:{measure_collect:"Measure yourself and collect",measure_deliver:"Measure yourself and deliver",measure_deliver_by_us:"We measure and deliver",measure_install_by_us:"We measure and install"},success:{received:"Great, we've received your request!",followup:"We'll contact you within 1 business day so you receive a complete quote from us.",contact:"{'Do you still have a question? Feel free to call us at 085-1301965 or email sales@aluwdoors.com.'}",closure:"See you soon!"}},validation:{required:"This field is required.",email:"No valid email address.",phone:"No valid phone number.",too_long:"Input is too long."},loading:"Loading...",auth:{loginTitle:"Admin Login",loginSubtitle:"Sign in to manage data",email:"Email address",emailPlaceholder:"{'admin@example.com'}",password:"Password",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Sign in",logout:"Logout",loggedInAs:"Logged in as"},users:{title:"Manage users",description:"Manage users and their permissions.",notAuthorized:"You are not authorized to manage users. Only SuperAdmins can do this.",empty:"No users found.",name:"Name",email:"Email",password:"Password",role:"Role",actions:"Actions",admin:"Admin",superadmin:"SuperAdmin",create:"New user",createUser:"Create user",editUser:"Edit user",edit:"Edit",delete:"Delete",save:"Save",cancel:"Cancel",leaveBlank:"leave blank to keep unchanged",confirmDeleteTitle:"Delete user",confirmDeleteMessage:"Are you sure you want to delete this user? This action cannot be undone."},templates:{title:"Manage templates",description:"Overview of all saved templates.",empty:"No templates found.",noDescription:"No description",templateKey:"Template key",createdAt:"Created at",updatedAt:"Last modified",url:"URL",create:"New template",view:"View",edit:"Edit",download:"Download",delete:"Delete",confirmDeleteTitle:"Delete template",confirmDeleteMessage:"Are you sure you want to delete this template? This action cannot be undone.",cancel:"Cancel"},quotation_loaded:"Your quotation {index} has been successfully loaded.",quotation_notification_editable:"PLEASE NOTE! Your changes will not be saved automatically. If there are any changes, they can be saved by clicking the 'change quote' button.",quotation_notification_not_editable:"This quotation cannot be changed. If you have any questions, please contact us."},tk={step1:{choose_product:"Produkt auswählen",door_type:"Nach Typ",fixed_panel:"Feststehendes Paneel",fixed_panel_explain:"Ein festes Paneel, das an Ort und Stelle bleibt",pivot_door:"Pivottür",pivot_door_explain:"Eine Tür, die sich an einem Drehgelenk dreht und in beide Richtungen öffnet",hinged_door:"Flügeltür",hinged_door_explain:"Eine Tür, die an Scharnieren in einem festen Rahmen aufschwingt",sliding_door:"Schiebetür",sliding_door_explain:"Eine Tür, die seitlich entlang einer Schiene aufgeschoben wird",rebated_door:"Gefalzt",rebated_door_explain:"Eine Tür, die im geschlossenen Zustand den Rahmen teilweise überlappt",folding_wall:"Faltwand",folding_wall_explain:"Eine Wand aus mehreren faltbaren Paneelen."},buttons:{show_dimensions:"Abmessungen anzeigen",rotate_camera:"Kamera drehen"},popupStepNext:"Weiter",edit:"Ändern",finish:"Abschließen",requestQuote:"Angebot anfordern",editQuote:"Angebot bearbeiten",quote:"Angebot",userMessages:{ralColorRange:"Eine RAL-Nummer liegt immer zwischen 1000 und 9999"},users:{title:"Benutzer verwalten",description:"Benutzer und ihre Berechtigungen verwalten.",notAuthorized:"Sie sind nicht berechtigt, Benutzer zu verwalten. Nur SuperAdmins können dies tun.",empty:"Keine Benutzer gefunden.",name:"Name",email:"E-Mail",password:"Passwort",role:"Rolle",actions:"Aktionen",admin:"Admin",superadmin:"SuperAdmin",create:"Neuer Benutzer",createUser:"Benutzer erstellen",editUser:"Benutzer bearbeiten",edit:"Bearbeiten",delete:"Löschen",save:"Speichern",cancel:"Abbrechen",leaveBlank:"leer lassen, um unverändert zu lassen",confirmDeleteTitle:"Benutzer löschen",confirmDeleteMessage:"Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden."},templates:{create:"Neue Vorlage"},footer:{excl_vat_assembly_transport:"exkl. MwSt., Montage und Transport",incl_vat:"inkl. 21% MwSt.",excl_vat:"exkl. MwSt.",total_price:"Gesamtpreis",total:"Gesamt"}};/*! + * vue-router v4.6.3 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Wc=typeof document<"u";function DS(n){return typeof n=="object"||"displayName"in n||"props"in n||"__vccOpts"in n}function nk(n){return n.__esModule||n[Symbol.toStringTag]==="Module"||n.default&&DS(n.default)}const yn=Object.assign;function dv(n,e){const t={};for(const r in e){const o=e[r];t[r]=Vi(o)?o.map(n):n(o)}return t}const uf=()=>{},Vi=Array.isArray;function BS(n,e){const t={};for(const r in n)t[r]=r in e?e[r]:n[r];return t}const NS=/#/g,rk=/&/g,ok=/\//g,ik=/=/g,ak=/\?/g,OS=/\+/g,sk=/%5B/g,lk=/%5D/g,kS=/%5E/g,ck=/%60/g,FS=/%7B/g,uk=/%7C/g,VS=/%7D/g,dk=/%20/g;function fv(n){return n==null?"":encodeURI(""+n).replace(uk,"|").replace(sk,"[").replace(lk,"]")}function fk(n){return fv(n).replace(FS,"{").replace(VS,"}").replace(kS,"^")}function hv(n){return fv(n).replace(OS,"%2B").replace(dk,"+").replace(NS,"%23").replace(rk,"%26").replace(ck,"`").replace(FS,"{").replace(VS,"}").replace(kS,"^")}function hk(n){return hv(n).replace(ik,"%3D")}function pk(n){return fv(n).replace(NS,"%23").replace(ak,"%3F")}function mk(n){return pk(n).replace(ok,"%2F")}function df(n){if(n==null)return null;try{return decodeURIComponent(""+n)}catch{}return""+n}const gk=/\/$/,_k=n=>n.replace(gk,"");function pv(n,e,t="/"){let r,o={},i="",a="";const s=e.indexOf("#");let l=e.indexOf("?");return l=s>=0&&l>s?-1:l,l>=0&&(r=e.slice(0,l),i=e.slice(l,s>0?s:e.length),o=n(i.slice(1))),s>=0&&(r=r||e.slice(0,s),a=e.slice(s,e.length)),r=bk(r??e,t),{fullPath:r+i+a,path:r,query:o,hash:df(a)}}function vk(n,e){const t=e.query?n(e.query):"";return e.path+(t&&"?")+t+(e.hash||"")}function US(n,e){return!e||!n.toLowerCase().startsWith(e.toLowerCase())?n:n.slice(e.length)||"/"}function Ak(n,e,t){const r=e.matched.length-1,o=t.matched.length-1;return r>-1&&r===o&&jc(e.matched[r],t.matched[o])&&zS(e.params,t.params)&&n(e.query)===n(t.query)&&e.hash===t.hash}function jc(n,e){return(n.aliasOf||n)===(e.aliasOf||e)}function zS(n,e){if(Object.keys(n).length!==Object.keys(e).length)return!1;for(const t in n)if(!yk(n[t],e[t]))return!1;return!0}function yk(n,e){return Vi(n)?GS(n,e):Vi(e)?GS(e,n):n===e}function GS(n,e){return Vi(e)?n.length===e.length&&n.every((t,r)=>t===e[r]):n.length===1&&n[0]===e}function bk(n,e){if(n.startsWith("/"))return n;if(!n)return e;const t=e.split("/"),r=n.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let i=t.length-1,a,s;for(a=0;a1&&i--;else break;return t.slice(0,i).join("/")+"/"+r.slice(a).join("/")}const Hs={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let mv=(function(n){return n.pop="pop",n.push="push",n})({}),gv=(function(n){return n.back="back",n.forward="forward",n.unknown="",n})({});function xk(n){if(!n)if(Wc){const e=document.querySelector("base");n=e&&e.getAttribute("href")||"/",n=n.replace(/^\w+:\/\/[^\/]+/,"")}else n="/";return n[0]!=="/"&&n[0]!=="#"&&(n="/"+n),_k(n)}const Ek=/^[^#]+#/;function Ck(n,e){return n.replace(Ek,"#")+e}function Sk(n,e){const t=document.documentElement.getBoundingClientRect(),r=n.getBoundingClientRect();return{behavior:e.behavior,left:r.left-t.left-(e.left||0),top:r.top-t.top-(e.top||0)}}const rm=()=>({left:window.scrollX,top:window.scrollY});function wk(n){let e;if("el"in n){const t=n.el,r=typeof t=="string"&&t.startsWith("#"),o=typeof t=="string"?r?document.getElementById(t.slice(1)):document.querySelector(t):t;if(!o)return;e=Sk(o,n)}else e=n;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(e.left!=null?e.left:window.scrollX,e.top!=null?e.top:window.scrollY)}function HS(n,e){return(history.state?history.state.position-e:-1)+n}const _v=new Map;function Mk(n,e){_v.set(n,e)}function Tk(n){const e=_v.get(n);return _v.delete(n),e}function Ik(n){return typeof n=="string"||n&&typeof n=="object"}function WS(n){return typeof n=="string"||typeof n=="symbol"}let Jn=(function(n){return n[n.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",n[n.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",n[n.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",n[n.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",n[n.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",n})({});const jS=Symbol("");Jn.MATCHER_NOT_FOUND+"",Jn.NAVIGATION_GUARD_REDIRECT+"",Jn.NAVIGATION_ABORTED+"",Jn.NAVIGATION_CANCELLED+"",Jn.NAVIGATION_DUPLICATED+"";function Qc(n,e){return yn(new Error,{type:n,[jS]:!0},e)}function Xa(n,e){return n instanceof Error&&jS in n&&(e==null||!!(n.type&e))}const Rk=["params","query","hash"];function Lk(n){if(typeof n=="string")return n;if(n.path!=null)return n.path;const e={};for(const t of Rk)t in n&&(e[t]=n[t]);return JSON.stringify(e,null,2)}function Pk(n){const e={};if(n===""||n==="?")return e;const t=(n[0]==="?"?n.slice(1):n).split("&");for(let r=0;ro&&hv(o)):[r&&hv(r)]).forEach(o=>{o!==void 0&&(e+=(e.length?"&":"")+t,o!=null&&(e+="="+o))})}return e}function Dk(n){const e={};for(const t in n){const r=n[t];r!==void 0&&(e[t]=Vi(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return e}const Bk=Symbol(""),$S=Symbol(""),vv=Symbol(""),Av=Symbol(""),yv=Symbol("");function ff(){let n=[];function e(r){return n.push(r),()=>{const o=n.indexOf(r);o>-1&&n.splice(o,1)}}function t(){n=[]}return{add:e,list:()=>n.slice(),reset:t}}function Ws(n,e,t,r,o,i=a=>a()){const a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((s,l)=>{const c=f=>{f===!1?l(Qc(Jn.NAVIGATION_ABORTED,{from:t,to:e})):f instanceof Error?l(f):Ik(f)?l(Qc(Jn.NAVIGATION_GUARD_REDIRECT,{from:e,to:f})):(a&&r.enterCallbacks[o]===a&&typeof f=="function"&&a.push(f),s())},u=i(()=>n.call(r&&r.instances[o],e,t,c));let d=Promise.resolve(u);n.length<3&&(d=d.then(c)),d.catch(f=>l(f))})}function bv(n,e,t,r,o=i=>i()){const i=[];for(const a of n)for(const s in a.components){let l=a.components[s];if(!(e!=="beforeRouteEnter"&&!a.instances[s]))if(DS(l)){const c=(l.__vccOpts||l)[e];c&&i.push(Ws(c,t,r,a,s,o))}else{let c=l();i.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${s}" at "${a.path}"`);const d=nk(u)?u.default:u;a.mods[s]=u,a.components[s]=d;const f=(d.__vccOpts||d)[e];return f&&Ws(f,t,r,a,s,o)()}))}}return i}function Nk(n,e){const t=[],r=[],o=[],i=Math.max(e.matched.length,n.matched.length);for(let a=0;ajc(c,s))?r.push(s):t.push(s));const l=n.matched[a];l&&(e.matched.find(c=>jc(c,l))||o.push(l))}return[t,r,o]}/*! + * vue-router v4.6.3 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Ok=()=>location.protocol+"//"+location.host;function YS(n,e){const{pathname:t,search:r,hash:o}=e,i=n.indexOf("#");if(i>-1){let a=o.includes(n.slice(i))?n.slice(i).length:1,s=o.slice(a);return s[0]!=="/"&&(s="/"+s),US(s,"")}return US(t,n)+r+o}function kk(n,e,t,r){let o=[],i=[],a=null;const s=({state:f})=>{const h=YS(n,location),p=t.value,m=e.value;let g=0;if(f){if(t.value=h,e.value=f,a&&a===p){a=null;return}g=m?f.position-m.position:0}else r(h);o.forEach(_=>{_(t.value,p,{delta:g,type:mv.pop,direction:g?g>0?gv.forward:gv.back:gv.unknown})})};function l(){a=t.value}function c(f){o.push(f);const h=()=>{const p=o.indexOf(f);p>-1&&o.splice(p,1)};return i.push(h),h}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(yn({},f.state,{scroll:rm()}),"")}}function d(){for(const f of i)f();i=[],window.removeEventListener("popstate",s),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",s),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function XS(n,e,t,r=!1,o=!1){return{back:n,current:e,forward:t,replaced:r,position:window.history.length,scroll:o?rm():null}}function Fk(n){const{history:e,location:t}=window,r={value:YS(n,t)},o={value:e.state};o.value||i(r.value,{back:null,current:r.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function i(l,c,u){const d=n.indexOf("#"),f=d>-1?(t.host&&document.querySelector("base")?n:n.slice(d))+l:Ok()+n+l;try{e[u?"replaceState":"pushState"](c,"",f),o.value=c}catch(h){console.error(h),t[u?"replace":"assign"](f)}}function a(l,c){i(l,yn({},e.state,XS(o.value.back,l,o.value.forward,!0),c,{position:o.value.position}),!0),r.value=l}function s(l,c){const u=yn({},o.value,e.state,{forward:l,scroll:rm()});i(u.current,u,!0),i(l,yn({},XS(r.value,l,null),{position:u.position+1},c),!1),r.value=l}return{location:r,state:o,push:s,replace:a}}function Vk(n){n=xk(n);const e=Fk(n),t=kk(n,e.state,e.location,e.replace);function r(i,a=!0){a||t.pauseListeners(),history.go(i)}const o=yn({location:"",base:n,go:r,createHref:Ck.bind(null,n)},e,t);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let Nl=(function(n){return n[n.Static=0]="Static",n[n.Param=1]="Param",n[n.Group=2]="Group",n})({});var Er=(function(n){return n[n.Static=0]="Static",n[n.Param=1]="Param",n[n.ParamRegExp=2]="ParamRegExp",n[n.ParamRegExpEnd=3]="ParamRegExpEnd",n[n.EscapeNext=4]="EscapeNext",n})(Er||{});const Uk={type:Nl.Static,value:""},zk=/[a-zA-Z0-9_]/;function Gk(n){if(!n)return[[]];if(n==="/")return[[Uk]];if(!n.startsWith("/"))throw new Error(`Invalid path "${n}"`);function e(h){throw new Error(`ERR (${t})/"${c}": ${h}`)}let t=Er.Static,r=t;const o=[];let i;function a(){i&&o.push(i),i=[]}let s=0,l,c="",u="";function d(){c&&(t===Er.Static?i.push({type:Nl.Static,value:c}):t===Er.Param||t===Er.ParamRegExp||t===Er.ParamRegExpEnd?(i.length>1&&(l==="*"||l==="+")&&e(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Nl.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):e("Invalid state to consume buffer"),c="")}function f(){c+=l}for(;se.length?e.length===1&&e[0]===po.Static+po.Segment?1:-1:0}function KS(n,e){let t=0;const r=n.score,o=e.score;for(;t0&&e[e.length-1]<0}const $k={strict:!1,end:!0,sensitive:!1};function Yk(n,e,t){const r=jk(Gk(n.path),t),o=yn(r,{record:n,parent:e,children:[],alias:[]});return e&&!o.record.aliasOf==!e.record.aliasOf&&e.children.push(o),o}function Xk(n,e){const t=[],r=new Map;e=BS($k,e);function o(d){return r.get(d)}function i(d,f,h){const p=!h,m=ew(d);m.aliasOf=h&&h.record;const g=BS(e,d),_=[m];if("alias"in d){const b=typeof d.alias=="string"?[d.alias]:d.alias;for(const E of b)_.push(ew(yn({},m,{components:h?h.record.components:m.components,path:E,aliasOf:h?h.record:m})))}let A,y;for(const b of _){const{path:E}=b;if(f&&E[0]!=="/"){const x=f.record.path,w=x[x.length-1]==="/"?"":"/";b.path=f.record.path+(E&&w+E)}if(A=Yk(b,f,g),h?h.alias.push(A):(y=y||A,y!==A&&y.alias.push(A),p&&d.name&&!tw(A)&&a(d.name)),nw(A)&&l(A),m.children){const x=m.children;for(let w=0;w{a(y)}:uf}function a(d){if(WS(d)){const f=r.get(d);f&&(r.delete(d),t.splice(t.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{const f=t.indexOf(d);f>-1&&(t.splice(f,1),d.record.name&&r.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function s(){return t}function l(d){const f=Zk(d,t);t.splice(f,0,d),d.record.name&&!tw(d)&&r.set(d.record.name,d)}function c(d,f){let h,p={},m,g;if("name"in d&&d.name){if(h=r.get(d.name),!h)throw Qc(Jn.MATCHER_NOT_FOUND,{location:d});g=h.record.name,p=yn(JS(f.params,h.keys.filter(y=>!y.optional).concat(h.parent?h.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),d.params&&JS(d.params,h.keys.map(y=>y.name))),m=h.stringify(p)}else if(d.path!=null)m=d.path,h=t.find(y=>y.re.test(m)),h&&(p=h.parse(m),g=h.record.name);else{if(h=f.name?r.get(f.name):t.find(y=>y.re.test(f.path)),!h)throw Qc(Jn.MATCHER_NOT_FOUND,{location:d,currentLocation:f});g=h.record.name,p=yn({},f.params,d.params),m=h.stringify(p)}const _=[];let A=h;for(;A;)_.unshift(A.record),A=A.parent;return{name:g,path:m,params:p,matched:_,meta:Kk(_)}}n.forEach(d=>i(d));function u(){t.length=0,r.clear()}return{addRoute:i,resolve:c,removeRoute:a,clearRoutes:u,getRoutes:s,getRecordMatcher:o}}function JS(n,e){const t={};for(const r of e)r in n&&(t[r]=n[r]);return t}function ew(n){const e={path:n.path,redirect:n.redirect,name:n.name,meta:n.meta||{},aliasOf:n.aliasOf,beforeEnter:n.beforeEnter,props:qk(n),children:n.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in n?n.components||null:n.component&&{default:n.component}};return Object.defineProperty(e,"mods",{value:{}}),e}function qk(n){const e={},t=n.props||!1;if("component"in n)e.default=t;else for(const r in n.components)e[r]=typeof t=="object"?t[r]:t;return e}function tw(n){for(;n;){if(n.record.aliasOf)return!0;n=n.parent}return!1}function Kk(n){return n.reduce((e,t)=>yn(e,t.meta),{})}function Zk(n,e){let t=0,r=e.length;for(;t!==r;){const i=t+r>>1;KS(n,e[i])<0?r=i:t=i+1}const o=Jk(n);return o&&(r=e.lastIndexOf(o,r-1)),r}function Jk(n){let e=n;for(;e=e.parent;)if(nw(e)&&KS(n,e)===0)return e}function nw({record:n}){return!!(n.name||n.components&&Object.keys(n.components).length||n.redirect)}function rw(n){const e=Lo(vv),t=Lo(Av),r=bt(()=>{const l=Ct(n.to);return e.resolve(l)}),o=bt(()=>{const{matched:l}=r.value,{length:c}=l,u=l[c-1],d=t.matched;if(!u||!d.length)return-1;const f=d.findIndex(jc.bind(null,u));if(f>-1)return f;const h=ow(l[c-2]);return c>1&&ow(u)===h&&d[d.length-1].path!==h?d.findIndex(jc.bind(null,l[c-2])):f}),i=bt(()=>o.value>-1&&rF(t.params,r.value.params)),a=bt(()=>o.value>-1&&o.value===t.matched.length-1&&zS(t.params,r.value.params));function s(l={}){if(nF(l)){const c=e[Ct(n.replace)?"replace":"push"](Ct(n.to)).catch(uf);return n.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:r,href:bt(()=>r.value.href),isActive:i,isExactActive:a,navigate:s}}function eF(n){return n.length===1?n[0]:n}const tF=Ml({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:rw,setup(n,{slots:e}){const t=Zr(rw(n)),{options:r}=Lo(vv),o=bt(()=>({[iw(n.activeClass,r.linkActiveClass,"router-link-active")]:t.isActive,[iw(n.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:t.isExactActive}));return()=>{const i=e.default&&eF(e.default(t));return n.custom?i:Zd("a",{"aria-current":t.isExactActive?n.ariaCurrentValue:null,href:t.href,onClick:t.navigate,class:o.value},i)}}});function nF(n){if(!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)&&!n.defaultPrevented&&!(n.button!==void 0&&n.button!==0)){if(n.currentTarget&&n.currentTarget.getAttribute){const e=n.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return n.preventDefault&&n.preventDefault(),!0}}function rF(n,e){for(const t in e){const r=e[t],o=n[t];if(typeof r=="string"){if(r!==o)return!1}else if(!Vi(o)||o.length!==r.length||r.some((i,a)=>i!==o[a]))return!1}return!0}function ow(n){return n?n.aliasOf?n.aliasOf.path:n.path:""}const iw=(n,e,t)=>n??e??t,oF=Ml({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(n,{attrs:e,slots:t}){const r=Lo(yv),o=bt(()=>n.route||r.value),i=Lo($S,0),a=bt(()=>{let c=Ct(i);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=bt(()=>o.value.matched[a.value]);Vp($S,bt(()=>a.value+1)),Vp(Bk,s),Vp(yv,o);const l=vt();return dr(()=>[l.value,s.value,n.name],([c,u,d],[f,h,p])=>{u&&(u.instances[d]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!jc(u,h)||!f)&&(u.enterCallbacks[d]||[]).forEach(m=>m(c))},{flush:"post"}),()=>{const c=o.value,u=n.name,d=s.value,f=d&&d.components[u];if(!f)return aw(t.default,{Component:f,route:c});const h=d.props[u],p=h?h===!0?c.params:typeof h=="function"?h(c):h:null,g=Zd(f,yn({},p,e,{onVnodeUnmounted:_=>{_.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return aw(t.default,{Component:g,route:c})||g}}});function aw(n,e){if(!n)return null;const t=n(e);return t.length===1?t[0]:t}const sw=oF;function iF(n){const e=Xk(n.routes,n),t=n.parseQuery||Pk,r=n.stringifyQuery||QS,o=n.history,i=ff(),a=ff(),s=ff(),l=Jr(Hs);let c=Hs;Wc&&n.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=dv.bind(null,k=>""+k),d=dv.bind(null,mk),f=dv.bind(null,df);function h(k,q){let j,U;return WS(k)?(j=e.getRecordMatcher(k),U=q):U=k,e.addRoute(U,j)}function p(k){const q=e.getRecordMatcher(k);q&&e.removeRoute(q)}function m(){return e.getRoutes().map(k=>k.record)}function g(k){return!!e.getRecordMatcher(k)}function _(k,q){if(q=yn({},q||l.value),typeof k=="string"){const S=pv(t,k,q.path),I=e.resolve({path:S.path},q),J=o.createHref(S.fullPath);return yn(S,I,{params:f(I.params),hash:df(S.hash),redirectedFrom:void 0,href:J})}let j;if(k.path!=null)j=yn({},k,{path:pv(t,k.path,q.path).path});else{const S=yn({},k.params);for(const I in S)S[I]==null&&delete S[I];j=yn({},k,{params:d(S)}),q.params=d(q.params)}const U=e.resolve(j,q),z=k.hash||"";U.params=u(f(U.params));const v=vk(r,yn({},k,{hash:fk(z),path:U.path})),M=o.createHref(v);return yn({fullPath:v,hash:z,query:r===QS?Dk(k.query):k.query||{}},U,{redirectedFrom:void 0,href:M})}function A(k){return typeof k=="string"?pv(t,k,l.value.path):yn({},k)}function y(k,q){if(c!==k)return Qc(Jn.NAVIGATION_CANCELLED,{from:q,to:k})}function b(k){return w(k)}function E(k){return b(yn(A(k),{replace:!0}))}function x(k,q){const j=k.matched[k.matched.length-1];if(j&&j.redirect){const{redirect:U}=j;let z=typeof U=="function"?U(k,q):U;return typeof z=="string"&&(z=z.includes("?")||z.includes("#")?z=A(z):{path:z},z.params={}),yn({query:k.query,hash:k.hash,params:z.path!=null?{}:k.params},z)}}function w(k,q){const j=c=_(k),U=l.value,z=k.state,v=k.force,M=k.replace===!0,S=x(j,U);if(S)return w(yn(A(S),{state:typeof S=="object"?yn({},z,S.state):z,force:v,replace:M}),q||j);const I=j;I.redirectedFrom=q;let J;return!v&&Ak(r,U,j)&&(J=Qc(Jn.NAVIGATION_DUPLICATED,{to:I,from:U}),O(U,U,!0,!1)),(J?Promise.resolve(J):P(I,U)).catch($=>Xa($)?Xa($,Jn.NAVIGATION_GUARD_REDIRECT)?$:R($):H($,I,U)).then($=>{if($){if(Xa($,Jn.NAVIGATION_GUARD_REDIRECT))return w(yn({replace:M},A($.to),{state:typeof $.to=="object"?yn({},z,$.to.state):z,force:v}),q||I)}else $=Q(I,U,!0,M,z);return D(I,U,$),$})}function L(k,q){const j=y(k,q);return j?Promise.reject(j):Promise.resolve()}function C(k){const q=ne.values().next().value;return q&&typeof q.runWithContext=="function"?q.runWithContext(k):k()}function P(k,q){let j;const[U,z,v]=Nk(k,q);j=bv(U.reverse(),"beforeRouteLeave",k,q);for(const S of U)S.leaveGuards.forEach(I=>{j.push(Ws(I,k,q))});const M=L.bind(null,k,q);return j.push(M),F(j).then(()=>{j=[];for(const S of i.list())j.push(Ws(S,k,q));return j.push(M),F(j)}).then(()=>{j=bv(z,"beforeRouteUpdate",k,q);for(const S of z)S.updateGuards.forEach(I=>{j.push(Ws(I,k,q))});return j.push(M),F(j)}).then(()=>{j=[];for(const S of v)if(S.beforeEnter)if(Vi(S.beforeEnter))for(const I of S.beforeEnter)j.push(Ws(I,k,q));else j.push(Ws(S.beforeEnter,k,q));return j.push(M),F(j)}).then(()=>(k.matched.forEach(S=>S.enterCallbacks={}),j=bv(v,"beforeRouteEnter",k,q,C),j.push(M),F(j))).then(()=>{j=[];for(const S of a.list())j.push(Ws(S,k,q));return j.push(M),F(j)}).catch(S=>Xa(S,Jn.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function D(k,q,j){s.list().forEach(U=>C(()=>U(k,q,j)))}function Q(k,q,j,U,z){const v=y(k,q);if(v)return v;const M=q===Hs,S=Wc?history.state:{};j&&(U||M?o.replace(k.fullPath,yn({scroll:M&&S&&S.scroll},z)):o.push(k.fullPath,z)),l.value=k,O(k,q,j,M),R()}let re;function G(){re||(re=o.listen((k,q,j)=>{if(!oe.listening)return;const U=_(k),z=x(U,oe.currentRoute.value);if(z){w(yn(z,{replace:!0,force:!0}),U).catch(uf);return}c=U;const v=l.value;Wc&&Mk(HS(v.fullPath,j.delta),rm()),P(U,v).catch(M=>Xa(M,Jn.NAVIGATION_ABORTED|Jn.NAVIGATION_CANCELLED)?M:Xa(M,Jn.NAVIGATION_GUARD_REDIRECT)?(w(yn(A(M.to),{force:!0}),U).then(S=>{Xa(S,Jn.NAVIGATION_ABORTED|Jn.NAVIGATION_DUPLICATED)&&!j.delta&&j.type===mv.pop&&o.go(-1,!1)}).catch(uf),Promise.reject()):(j.delta&&o.go(-j.delta,!1),H(M,U,v))).then(M=>{M=M||Q(U,v,!1),M&&(j.delta&&!Xa(M,Jn.NAVIGATION_CANCELLED)?o.go(-j.delta,!1):j.type===mv.pop&&Xa(M,Jn.NAVIGATION_ABORTED|Jn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),D(U,v,M)}).catch(uf)}))}let se=ff(),ee=ff(),ie;function H(k,q,j){R(k);const U=ee.list();return U.length?U.forEach(z=>z(k,q,j)):console.error(k),Promise.reject(k)}function T(){return ie&&l.value!==Hs?Promise.resolve():new Promise((k,q)=>{se.add([k,q])})}function R(k){return ie||(ie=!k,G(),se.list().forEach(([q,j])=>k?j(k):q()),se.reset()),k}function O(k,q,j,U){const{scrollBehavior:z}=n;if(!Wc||!z)return Promise.resolve();const v=!j&&Tk(HS(k.fullPath,0))||(U||!j)&&history.state&&history.state.scroll||null;return Va().then(()=>z(k,q,v)).then(M=>M&&wk(M)).catch(M=>H(M,k,q))}const W=k=>o.go(k);let ae;const ne=new Set,oe={currentRoute:l,listening:!0,addRoute:h,removeRoute:p,clearRoutes:e.clearRoutes,hasRoute:g,getRoutes:m,resolve:_,options:n,push:b,replace:E,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:i.add,beforeResolve:a.add,afterEach:s.add,onError:ee.add,isReady:T,install(k){k.component("RouterLink",tF),k.component("RouterView",sw),k.config.globalProperties.$router=oe,Object.defineProperty(k.config.globalProperties,"$route",{enumerable:!0,get:()=>Ct(l)}),Wc&&!ae&&l.value===Hs&&(ae=!0,b(o.location).catch(U=>{}));const q={};for(const U in Hs)Object.defineProperty(q,U,{get:()=>l.value[U],enumerable:!0});k.provide(vv,oe),k.provide(Av,Wx(q)),k.provide(yv,l);const j=k.unmount;ne.add(k),k.unmount=function(){ne.delete(k),ne.size<1&&(c=Hs,re&&re(),re=null,l.value=Hs,ae=!1,ie=!1),j()}}};function F(k){return k.reduce((q,j)=>q.then(()=>C(j)),Promise.resolve())}return oe}function aF(n){return Lo(Av)}const sF=Ml({__name:"App",setup(n){return(e,t)=>(he(),gt(Ct(sw)))}});function xv(n){return Sx()?(NN(n),!0):!1}const Ev=new WeakMap,lF=(...n)=>{var e;const t=n[0],r=(e=Po())==null?void 0:e.proxy;if(r==null&&!TE())throw new Error("injectLocal must be called in setup");return r&&Ev.has(r)&&t in Ev.get(r)?Ev.get(r)[t]:Lo(...n)},cF=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const uF=n=>n!=null,dF=Object.prototype.toString,fF=n=>dF.call(n)==="[object Object]";function lw(n){return n.endsWith("rem")?Number.parseFloat(n)*16:Number.parseFloat(n)}function om(n){return Array.isArray(n)?n:[n]}function hF(n){return Po()}function cw(n,e=!0,t){hF()?$o(n,t):e?n():Va(n)}function pF(n,e,t){return dr(n,e,{...t,immediate:!0})}const hf=cF?window:void 0;function $c(n){var e;const t=Bs(n);return(e=t==null?void 0:t.$el)!=null?e:t}function pf(...n){const e=[],t=()=>{e.forEach(s=>s()),e.length=0},r=(s,l,c,u)=>(s.addEventListener(l,c,u),()=>s.removeEventListener(l,c,u)),o=bt(()=>{const s=om(Bs(n[0])).filter(l=>l!=null);return s.every(l=>typeof l!="string")?s:void 0}),i=pF(()=>{var s,l;return[(l=(s=o.value)==null?void 0:s.map(c=>$c(c)))!=null?l:[hf].filter(c=>c!=null),om(Bs(o.value?n[1]:n[0])),om(Ct(o.value?n[2]:n[1])),Bs(o.value?n[3]:n[2])]},([s,l,c,u])=>{if(t(),!(s!=null&&s.length)||!(l!=null&&l.length)||!(c!=null&&c.length))return;const d=fF(u)?{...u}:u;e.push(...s.flatMap(f=>l.flatMap(h=>c.map(p=>r(f,h,p,d)))))},{flush:"post"}),a=()=>{i(),t()};return xv(t),a}function mF(){const n=Jr(!1),e=Po();return e&&$o(()=>{n.value=!0},e),n}function Cv(n){const e=mF();return bt(()=>(e.value,!!n()))}function gF(n,e,t={}){const{window:r=hf,...o}=t;let i;const a=Cv(()=>r&&"MutationObserver"in r),s=()=>{i&&(i.disconnect(),i=void 0)},l=bt(()=>{const f=Bs(n),h=om(f).map($c).filter(uF);return new Set(h)}),c=dr(l,f=>{s(),a.value&&f.size&&(i=new MutationObserver(e),f.forEach(h=>i.observe(h,o)))},{immediate:!0,flush:"post"}),u=()=>i==null?void 0:i.takeRecords(),d=()=>{c(),s()};return xv(d),{isSupported:a,stop:d,takeRecords:u}}const _F=Symbol("vueuse-ssr-width");function vF(){const n=TE()?lF(_F,null):null;return typeof n=="number"?n:void 0}function AF(n,e={}){const{window:t=hf,ssrWidth:r=vF()}=e,o=Cv(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function"),i=Jr(typeof r=="number"),a=Jr(),s=Jr(!1),l=c=>{s.value=c.matches};return UE(()=>{if(i.value){i.value=!o.value;const c=Bs(n).split(",");s.value=c.some(u=>{const d=u.includes("not all"),f=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),h=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let p=!!(f||h);return f&&p&&(p=r>=lw(f[1])),h&&p&&(p=r<=lw(h[1])),d?!p:p});return}o.value&&(a.value=t.matchMedia(Bs(n)),s.value=a.value.matches)}),pf(a,"change",l,{passive:!0}),bt(()=>s.value)}function yF(n,e,t={}){const{window:r=hf,...o}=t;let i;const a=Cv(()=>r&&"ResizeObserver"in r),s=()=>{i&&(i.disconnect(),i=void 0)},l=bt(()=>{const d=Bs(n);return Array.isArray(d)?d.map(f=>$c(f)):[$c(d)]}),c=dr(l,d=>{if(s(),a.value&&r){i=new ResizeObserver(e);for(const f of d)f&&i.observe(f,o)}},{immediate:!0,flush:"post"}),u=()=>{s(),c()};return xv(u),{isSupported:a,stop:u}}function bF(n,e={}){const{reset:t=!0,windowResize:r=!0,windowScroll:o=!0,immediate:i=!0,updateTiming:a="sync"}=e,s=Jr(0),l=Jr(0),c=Jr(0),u=Jr(0),d=Jr(0),f=Jr(0),h=Jr(0),p=Jr(0);function m(){const _=$c(n);if(!_){t&&(s.value=0,l.value=0,c.value=0,u.value=0,d.value=0,f.value=0,h.value=0,p.value=0);return}const A=_.getBoundingClientRect();s.value=A.height,l.value=A.bottom,c.value=A.left,u.value=A.right,d.value=A.top,f.value=A.width,h.value=A.x,p.value=A.y}function g(){a==="sync"?m():a==="next-frame"&&requestAnimationFrame(()=>m())}return yF(n,g),dr(()=>$c(n),_=>!_&&g()),gF(n,g,{attributeFilter:["style","class"]}),o&&pf("scroll",g,{capture:!0,passive:!0}),r&&pf("resize",g,{passive:!0}),cw(()=>{i&&g()}),{height:s,bottom:l,left:c,right:u,top:d,width:f,x:h,y:p,update:g}}function xF(n={}){const{window:e=hf,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:i=!0,type:a="inner"}=n,s=Jr(t),l=Jr(r),c=()=>{if(e)if(a==="outer")s.value=e.outerWidth,l.value=e.outerHeight;else if(a==="visual"&&e.visualViewport){const{width:d,height:f,scale:h}=e.visualViewport;s.value=Math.round(d*h),l.value=Math.round(f*h)}else i?(s.value=e.innerWidth,l.value=e.innerHeight):(s.value=e.document.documentElement.clientWidth,l.value=e.document.documentElement.clientHeight)};c(),cw(c);const u={passive:!0};if(pf("resize",c,u),e&&a==="visual"&&e.visualViewport&&pf(e.visualViewport,"resize",c,u),o){const d=AF("(orientation: portrait)");dr(d,()=>c())}return{width:s,height:l}}function EF(n){return{all:n=n||new Map,on:function(e,t){var r=n.get(e);r?r.push(t):n.set(e,[t])},off:function(e,t){var r=n.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):n.set(e,[]))},emit:function(e,t){var r=n.get(e);r&&r.slice().map(function(o){o(t)}),(r=n.get("*"))&&r.slice().map(function(o){o(e,t)})}}}{let n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};n.SENTRY_RELEASE={id:"6da10dcfc82ede279c1d039b0b13a2659edfe3db"}}const Lr=EF();var im=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function am(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Sv,uw;function CF(){if(uw)return Sv;uw=1;var n="Expected a function",e=NaN,t="[object Symbol]",r=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,a=/^0o[0-7]+$/i,s=parseInt,l=typeof im=="object"&&im&&im.Object===Object&&im,c=typeof self=="object"&&self&&self.Object===Object&&self,u=l||c||Function("return this")(),d=Object.prototype,f=d.toString,h=Math.max,p=Math.min,m=function(){return u.Date.now()};function g(E,x,w){var L,C,P,D,Q,re,G=0,se=!1,ee=!1,ie=!0;if(typeof E!="function")throw new TypeError(n);x=b(x)||0,_(w)&&(se=!!w.leading,ee="maxWait"in w,P=ee?h(b(w.maxWait)||0,x):P,ie="trailing"in w?!!w.trailing:ie);function H(k){var q=L,j=C;return L=C=void 0,G=k,D=E.apply(j,q),D}function T(k){return G=k,Q=setTimeout(W,x),se?H(k):D}function R(k){var q=k-re,j=k-G,U=x-q;return ee?p(U,P-j):U}function O(k){var q=k-re,j=k-G;return re===void 0||q>=x||q<0||ee&&j>=P}function W(){var k=m();if(O(k))return ae(k);Q=setTimeout(W,R(k))}function ae(k){return Q=void 0,ie&&L?H(k):(L=C=void 0,D)}function ne(){Q!==void 0&&clearTimeout(Q),G=0,L=re=C=Q=void 0}function oe(){return Q===void 0?D:ae(m())}function F(){var k=m(),q=O(k);if(L=arguments,C=this,re=k,q){if(Q===void 0)return T(re);if(ee)return Q=setTimeout(W,x),H(re)}return Q===void 0&&(Q=setTimeout(W,x)),D}return F.cancel=ne,F.flush=oe,F}function _(E){var x=typeof E;return!!E&&(x=="object"||x=="function")}function A(E){return!!E&&typeof E=="object"}function y(E){return typeof E=="symbol"||A(E)&&f.call(E)==t}function b(E){if(typeof E=="number")return E;if(y(E))return e;if(_(E)){var x=typeof E.valueOf=="function"?E.valueOf():E;E=_(x)?x+"":x}if(typeof E!="string")return E===0?E:+E;E=E.replace(r,"");var w=i.test(E);return w||a.test(E)?s(E.slice(2),w?2:8):o.test(E)?e:+E}return Sv=g,Sv}var SF=CF();const wF=am(SF);var sm={exports:{}};sm.exports;var dw;function MF(){return dw||(dw=1,(function(n){const t=(i=0)=>a=>`\x1B[${38+i};5;${a}m`,r=(i=0)=>(a,s,l)=>`\x1B[${38+i};2;${a};${s};${l}m`;function o(){const i=new Map,a={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};a.color.gray=a.color.blackBright,a.bgColor.bgGray=a.bgColor.bgBlackBright,a.color.grey=a.color.blackBright,a.bgColor.bgGrey=a.bgColor.bgBlackBright;for(const[s,l]of Object.entries(a)){for(const[c,u]of Object.entries(l))a[c]={open:`\x1B[${u[0]}m`,close:`\x1B[${u[1]}m`},l[c]=a[c],i.set(u[0],u[1]);Object.defineProperty(a,s,{value:l,enumerable:!1})}return Object.defineProperty(a,"codes",{value:i,enumerable:!1}),a.color.close="\x1B[39m",a.bgColor.close="\x1B[49m",a.color.ansi256=t(),a.color.ansi16m=r(),a.bgColor.ansi256=t(10),a.bgColor.ansi16m=r(10),Object.defineProperties(a,{rgbToAnsi256:{value:(s,l,c)=>s===l&&l===c?s<8?16:s>248?231:Math.round((s-8)/247*24)+232:16+36*Math.round(s/255*5)+6*Math.round(l/255*5)+Math.round(c/255*5),enumerable:!1},hexToRgb:{value:s=>{const l=/(?[a-f\d]{6}|[a-f\d]{3})/i.exec(s.toString(16));if(!l)return[0,0,0];let{colorString:c}=l.groups;c.length===3&&(c=c.split("").map(d=>d+d).join(""));const u=Number.parseInt(c,16);return[u>>16&255,u>>8&255,u&255]},enumerable:!1},hexToAnsi256:{value:s=>a.rgbToAnsi256(...a.hexToRgb(s)),enumerable:!1}}),a}Object.defineProperty(n,"exports",{enumerable:!0,get:o})})(sm)),sm.exports}var TF=MF();const IF=am(TF);var RF=Object.defineProperty,un=(n,e)=>RF(n,"name",{value:e,configurable:!0}),LF=un(n=>{const e=Object.keys(n).sort();return Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(n).forEach(t=>{Object.getOwnPropertyDescriptor(n,t).enumerable&&e.push(t)}),e},"getKeysOfEnumerableProperties");function fw(n,e,t,r,o,i,a=": "){let s="",l=n.next();if(!l.done){s+=e.spacingOuter;const c=t+e.indent;for(;!l.done;){const u=i(l.value[0],e,c,r,o),d=i(l.value[1],e,c,r,o);s+=c+u+a+d,l=n.next(),l.done?e.min||(s+=","):s+=","+e.spacingInner}s+=e.spacingOuter+t}return s}un(fw,"printIteratorEntries");function hw(n,e,t,r,o,i){let a="",s=n.next();if(!s.done){a+=e.spacingOuter;const l=t+e.indent;for(;!s.done;)a+=l+i(s.value,e,l,r,o),s=n.next(),s.done?e.min||(a+=","):a+=","+e.spacingInner;a+=e.spacingOuter+t}return a}un(hw,"printIteratorValues");function wv(n,e,t,r,o,i){let a="";if(n.length){a+=e.spacingOuter;const s=t+e.indent;for(let l=0;l/g,">")}un(PF,"escapeHTML");var DF=3,BF=8,NF=11;function OF(n){return n.nodeType===DF}un(OF,"nodeIsText");function kF(n){return n.nodeType===BF}un(kF,"nodeIsComment");function FF(n){return n.nodeType===NF}un(FF,"nodeIsFragment");var mw=Object.prototype.toString,VF=Date.prototype.toISOString,UF=Error.prototype.toString,gw=RegExp.prototype.toString,_w=un(n=>typeof n.constructor=="function"&&n.constructor.name||"Object","getConstructorName"),zF=un(n=>typeof window<"u"&&n===window,"isWindow"),GF=/^Symbol\((.*)\)(.*)$/,HF=/\n/gi,Mv=class extends Error{constructor(n,e){super(n),this.stack=e,this.name=this.constructor.name}};un(Mv,"PrettyFormatPluginError");function vw(n){return n==="[object Array]"||n==="[object ArrayBuffer]"||n==="[object DataView]"||n==="[object Float32Array]"||n==="[object Float64Array]"||n==="[object Int8Array]"||n==="[object Int16Array]"||n==="[object Int32Array]"||n==="[object Uint8Array]"||n==="[object Uint8ClampedArray]"||n==="[object Uint16Array]"||n==="[object Uint32Array]"}un(vw,"isToStringedArrayType");function Aw(n){return Object.is(n,-0)?"-0":String(n)}un(Aw,"printNumber");function yw(n){return`${n}n`}un(yw,"printBigInt");function Tv(n,e){return e?"[Function "+(n.name||"anonymous")+"]":"[Function]"}un(Tv,"printFunction");function Iv(n){return String(n).replace(GF,"Symbol($1)")}un(Iv,"printSymbol");function Rv(n){return"["+UF.call(n)+"]"}un(Rv,"printError");function Lv(n,e,t,r){if(n===!0||n===!1)return""+n;if(n===void 0)return"undefined";if(n===null)return"null";const o=typeof n;if(o==="number")return Aw(n);if(o==="bigint")return yw(n);if(o==="string")return r?'"'+n.replace(/"|\\/g,"\\$&")+'"':'"'+n+'"';if(o==="function")return Tv(n,e);if(o==="symbol")return Iv(n);const i=mw.call(n);return i==="[object WeakMap]"?"WeakMap {}":i==="[object WeakSet]"?"WeakSet {}":i==="[object Function]"||i==="[object GeneratorFunction]"?Tv(n,e):i==="[object Symbol]"?Iv(n):i==="[object Date]"?isNaN(+n)?"Date { NaN }":VF.call(n):i==="[object Error]"?Rv(n):i==="[object RegExp]"?t?gw.call(n).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&"):gw.call(n):n instanceof Error?Rv(n):null}un(Lv,"printBasicValue");function Pv(n,e,t,r,o,i){if(o.indexOf(n)!==-1)return"[Circular]";o=o.slice(),o.push(n);const a=++r>e.maxDepth,s=e.min;if(e.callToJSON&&!a&&n.toJSON&&typeof n.toJSON=="function"&&!i)return qa(n.toJSON(),e,t,r,o,!0);const l=mw.call(n);return l==="[object Arguments]"?a?"[Arguments]":(s?"":"Arguments ")+"["+wv(n,e,t,r,o,qa)+"]":vw(l)?a?"["+n.constructor.name+"]":(s?"":n.constructor.name+" ")+"["+wv(n,e,t,r,o,qa)+"]":l==="[object Map]"?a?"[Map]":"Map {"+fw(n.entries(),e,t,r,o,qa," => ")+"}":l==="[object Set]"?a?"[Set]":"Set {"+hw(n.values(),e,t,r,o,qa)+"}":a||zF(n)?"["+_w(n)+"]":(s?"":_w(n)+" ")+"{"+pw(n,e,t,r,o,qa)+"}"}un(Pv,"printComplexValue");function bw(n){return n.serialize!=null}un(bw,"isNewPlugin");function Dv(n,e,t,r,o,i){let a;try{a=bw(n)?n.serialize(e,t,r,o,i,qa):n.print(e,s=>qa(s,t,r,o,i),s=>{const l=r+t.indent;return l+s.replace(HF,` +`+l)},{edgeSpacing:t.spacingOuter,min:t.min,spacing:t.spacingInner},t.colors)}catch(s){throw new Mv(s.message,s.stack)}if(typeof a!="string")throw new Error(`pretty-format: Plugin must return type "string" but instead returned "${typeof a}".`);return a}un(Dv,"printPlugin");function Bv(n,e){for(let t=0;t{if(!Ka.hasOwnProperty(e))throw new Error(`pretty-format: Unknown option "${e}".`)}),n.min&&n.indent!==void 0&&n.indent!==0)throw new Error('pretty-format: Options "min" and "indent" cannot be used together.');if(n.theme!==void 0){if(n.theme===null)throw new Error('pretty-format: Option "theme" must not be null.');if(typeof n.theme!="object")throw new Error(`pretty-format: Option "theme" must be of type "object" but instead received "${typeof n.theme}".`)}}un(Ew,"validateOptions");var WF=un(n=>xw.reduce((e,t)=>{const r=n.theme&&n.theme[t]!==void 0?n.theme[t]:Nv[t],o=r&&IF[r];if(o&&typeof o.close=="string"&&typeof o.open=="string")e[t]=o;else throw new Error(`pretty-format: Option "theme" has a key "${t}" whose value "${r}" is undefined in ansi-styles.`);return e},Object.create(null)),"getColorsHighlight"),jF=un(()=>xw.reduce((n,e)=>(n[e]={close:"",open:""},n),Object.create(null)),"getColorsEmpty"),Cw=un(n=>n&&n.printFunctionName!==void 0?n.printFunctionName:Ka.printFunctionName,"getPrintFunctionName"),Sw=un(n=>n&&n.escapeRegex!==void 0?n.escapeRegex:Ka.escapeRegex,"getEscapeRegex"),ww=un(n=>n&&n.escapeString!==void 0?n.escapeString:Ka.escapeString,"getEscapeString"),Mw=un(n=>({callToJSON:n&&n.callToJSON!==void 0?n.callToJSON:Ka.callToJSON,colors:n&&n.highlight?WF(n):jF(),escapeRegex:Sw(n),escapeString:ww(n),indent:n&&n.min?"":Tw(n&&n.indent!==void 0?n.indent:Ka.indent),maxDepth:n&&n.maxDepth!==void 0?n.maxDepth:Ka.maxDepth,min:n&&n.min!==void 0?n.min:Ka.min,plugins:n&&n.plugins!==void 0?n.plugins:Ka.plugins,printFunctionName:Cw(n),spacingInner:n&&n.min?" ":` +`,spacingOuter:n&&n.min?"":` +`}),"getConfig");function Tw(n){return new Array(n+1).join(" ")}un(Tw,"createIndent");function Ol(n,e){if(e&&(Ew(e),e.plugins)){const r=Bv(e.plugins,n);if(r!==null)return Dv(r,n,Mw(e),"",0,[])}const t=Lv(n,Cw(e),Sw(e),ww(e));return t!==null?t:Pv(n,Mw(e),"",0,[])}un(Ol,"format");function Iw(n,e){return function(){return n.apply(e,arguments)}}const{toString:QF}=Object.prototype,{getPrototypeOf:Ov}=Object,{iterator:lm,toStringTag:Rw}=Symbol,cm=(n=>e=>{const t=QF.call(e);return n[t]||(n[t]=t.slice(8,-1).toLowerCase())})(Object.create(null)),Ui=n=>(n=n.toLowerCase(),e=>cm(e)===n),um=n=>e=>typeof e===n,{isArray:Yc}=Array,Xc=um("undefined");function mf(n){return n!==null&&!Xc(n)&&n.constructor!==null&&!Xc(n.constructor)&&Bo(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}const Lw=Ui("ArrayBuffer");function $F(n){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(n):e=n&&n.buffer&&Lw(n.buffer),e}const YF=um("string"),Bo=um("function"),Pw=um("number"),gf=n=>n!==null&&typeof n=="object",XF=n=>n===!0||n===!1,dm=n=>{if(cm(n)!=="object")return!1;const e=Ov(n);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Rw in n)&&!(lm in n)},qF=n=>{if(!gf(n)||mf(n))return!1;try{return Object.keys(n).length===0&&Object.getPrototypeOf(n)===Object.prototype}catch{return!1}},KF=Ui("Date"),ZF=Ui("File"),JF=Ui("Blob"),eV=Ui("FileList"),tV=n=>gf(n)&&Bo(n.pipe),nV=n=>{let e;return n&&(typeof FormData=="function"&&n instanceof FormData||Bo(n.append)&&((e=cm(n))==="formdata"||e==="object"&&Bo(n.toString)&&n.toString()==="[object FormData]"))},rV=Ui("URLSearchParams"),[oV,iV,aV,sV]=["ReadableStream","Request","Response","Headers"].map(Ui),lV=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function _f(n,e,{allOwnKeys:t=!1}={}){if(n===null||typeof n>"u")return;let r,o;if(typeof n!="object"&&(n=[n]),Yc(n))for(r=0,o=n.length;r0;)if(o=t[r],e===o.toLowerCase())return o;return null}const kl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Bw=n=>!Xc(n)&&n!==kl;function kv(){const{caseless:n,skipUndefined:e}=Bw(this)&&this||{},t={},r=(o,i)=>{const a=n&&Dw(t,i)||i;dm(t[a])&&dm(o)?t[a]=kv(t[a],o):dm(o)?t[a]=kv({},o):Yc(o)?t[a]=o.slice():(!e||!Xc(o))&&(t[a]=o)};for(let o=0,i=arguments.length;o(_f(e,(o,i)=>{t&&Bo(o)?n[i]=Iw(o,t):n[i]=o},{allOwnKeys:r}),n),uV=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),dV=(n,e,t,r)=>{n.prototype=Object.create(e.prototype,r),n.prototype.constructor=n,Object.defineProperty(n,"super",{value:e.prototype}),t&&Object.assign(n.prototype,t)},fV=(n,e,t,r)=>{let o,i,a;const s={};if(e=e||{},n==null)return e;do{for(o=Object.getOwnPropertyNames(n),i=o.length;i-- >0;)a=o[i],(!r||r(a,n,e))&&!s[a]&&(e[a]=n[a],s[a]=!0);n=t!==!1&&Ov(n)}while(n&&(!t||t(n,e))&&n!==Object.prototype);return e},hV=(n,e,t)=>{n=String(n),(t===void 0||t>n.length)&&(t=n.length),t-=e.length;const r=n.indexOf(e,t);return r!==-1&&r===t},pV=n=>{if(!n)return null;if(Yc(n))return n;let e=n.length;if(!Pw(e))return null;const t=new Array(e);for(;e-- >0;)t[e]=n[e];return t},mV=(n=>e=>n&&e instanceof n)(typeof Uint8Array<"u"&&Ov(Uint8Array)),gV=(n,e)=>{const r=(n&&n[lm]).call(n);let o;for(;(o=r.next())&&!o.done;){const i=o.value;e.call(n,i[0],i[1])}},_V=(n,e)=>{let t;const r=[];for(;(t=n.exec(e))!==null;)r.push(t);return r},vV=Ui("HTMLFormElement"),AV=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(t,r,o){return r.toUpperCase()+o}),Nw=(({hasOwnProperty:n})=>(e,t)=>n.call(e,t))(Object.prototype),yV=Ui("RegExp"),Ow=(n,e)=>{const t=Object.getOwnPropertyDescriptors(n),r={};_f(t,(o,i)=>{let a;(a=e(o,i,n))!==!1&&(r[i]=a||o)}),Object.defineProperties(n,r)},bV=n=>{Ow(n,(e,t)=>{if(Bo(n)&&["arguments","caller","callee"].indexOf(t)!==-1)return!1;const r=n[t];if(Bo(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+t+"'")})}})},xV=(n,e)=>{const t={},r=o=>{o.forEach(i=>{t[i]=!0})};return Yc(n)?r(n):r(String(n).split(e)),t},EV=()=>{},CV=(n,e)=>n!=null&&Number.isFinite(n=+n)?n:e;function SV(n){return!!(n&&Bo(n.append)&&n[Rw]==="FormData"&&n[lm])}const wV=n=>{const e=new Array(10),t=(r,o)=>{if(gf(r)){if(e.indexOf(r)>=0)return;if(mf(r))return r;if(!("toJSON"in r)){e[o]=r;const i=Yc(r)?[]:{};return _f(r,(a,s)=>{const l=t(a,o+1);!Xc(l)&&(i[s]=l)}),e[o]=void 0,i}}return r};return t(n,0)},MV=Ui("AsyncFunction"),TV=n=>n&&(gf(n)||Bo(n))&&Bo(n.then)&&Bo(n.catch),kw=((n,e)=>n?setImmediate:e?((t,r)=>(kl.addEventListener("message",({source:o,data:i})=>{o===kl&&i===t&&r.length&&r.shift()()},!1),o=>{r.push(o),kl.postMessage(t,"*")}))(`axios@${Math.random()}`,[]):t=>setTimeout(t))(typeof setImmediate=="function",Bo(kl.postMessage)),IV=typeof queueMicrotask<"u"?queueMicrotask.bind(kl):typeof process<"u"&&process.nextTick||kw,Le={isArray:Yc,isArrayBuffer:Lw,isBuffer:mf,isFormData:nV,isArrayBufferView:$F,isString:YF,isNumber:Pw,isBoolean:XF,isObject:gf,isPlainObject:dm,isEmptyObject:qF,isReadableStream:oV,isRequest:iV,isResponse:aV,isHeaders:sV,isUndefined:Xc,isDate:KF,isFile:ZF,isBlob:JF,isRegExp:yV,isFunction:Bo,isStream:tV,isURLSearchParams:rV,isTypedArray:mV,isFileList:eV,forEach:_f,merge:kv,extend:cV,trim:lV,stripBOM:uV,inherits:dV,toFlatObject:fV,kindOf:cm,kindOfTest:Ui,endsWith:hV,toArray:pV,forEachEntry:gV,matchAll:_V,isHTMLForm:vV,hasOwnProperty:Nw,hasOwnProp:Nw,reduceDescriptors:Ow,freezeMethods:bV,toObjectSet:xV,toCamelCase:AV,noop:EV,toFiniteNumber:CV,findKey:Dw,global:kl,isContextDefined:Bw,isSpecCompliantForm:SV,toJSONObject:wV,isAsyncFn:MV,isThenable:TV,setImmediate:kw,asap:IV,isIterable:n=>n!=null&&Bo(n[lm])};function Ut(n,e,t,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=n,this.name="AxiosError",e&&(this.code=e),t&&(this.config=t),r&&(this.request=r),o&&(this.response=o,this.status=o.status?o.status:null)}Le.inherits(Ut,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Le.toJSONObject(this.config),code:this.code,status:this.status}}});const Fw=Ut.prototype,Vw={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(n=>{Vw[n]={value:n}}),Object.defineProperties(Ut,Vw),Object.defineProperty(Fw,"isAxiosError",{value:!0}),Ut.from=(n,e,t,r,o,i)=>{const a=Object.create(Fw);Le.toFlatObject(n,a,function(u){return u!==Error.prototype},c=>c!=="isAxiosError");const s=n&&n.message?n.message:"Error",l=e==null&&n?n.code:e;return Ut.call(a,s,l,t,r,o),n&&a.cause==null&&Object.defineProperty(a,"cause",{value:n,configurable:!0}),a.name=n&&n.name||"Error",i&&Object.assign(a,i),a};const RV=null;function Fv(n){return Le.isPlainObject(n)||Le.isArray(n)}function Uw(n){return Le.endsWith(n,"[]")?n.slice(0,-2):n}function zw(n,e,t){return n?n.concat(e).map(function(o,i){return o=Uw(o),!t&&i?"["+o+"]":o}).join(t?".":""):e}function LV(n){return Le.isArray(n)&&!n.some(Fv)}const PV=Le.toFlatObject(Le,{},null,function(e){return/^is[A-Z]/.test(e)});function fm(n,e,t){if(!Le.isObject(n))throw new TypeError("target must be an object");e=e||new FormData,t=Le.toFlatObject(t,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,g){return!Le.isUndefined(g[m])});const r=t.metaTokens,o=t.visitor||u,i=t.dots,a=t.indexes,l=(t.Blob||typeof Blob<"u"&&Blob)&&Le.isSpecCompliantForm(e);if(!Le.isFunction(o))throw new TypeError("visitor must be a function");function c(p){if(p===null)return"";if(Le.isDate(p))return p.toISOString();if(Le.isBoolean(p))return p.toString();if(!l&&Le.isBlob(p))throw new Ut("Blob is not supported. Use a Buffer instead.");return Le.isArrayBuffer(p)||Le.isTypedArray(p)?l&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function u(p,m,g){let _=p;if(p&&!g&&typeof p=="object"){if(Le.endsWith(m,"{}"))m=r?m:m.slice(0,-2),p=JSON.stringify(p);else if(Le.isArray(p)&&LV(p)||(Le.isFileList(p)||Le.endsWith(m,"[]"))&&(_=Le.toArray(p)))return m=Uw(m),_.forEach(function(y,b){!(Le.isUndefined(y)||y===null)&&e.append(a===!0?zw([m],b,i):a===null?m:m+"[]",c(y))}),!1}return Fv(p)?!0:(e.append(zw(g,m,i),c(p)),!1)}const d=[],f=Object.assign(PV,{defaultVisitor:u,convertValue:c,isVisitable:Fv});function h(p,m){if(!Le.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+m.join("."));d.push(p),Le.forEach(p,function(_,A){(!(Le.isUndefined(_)||_===null)&&o.call(e,_,Le.isString(A)?A.trim():A,m,f))===!0&&h(_,m?m.concat(A):[A])}),d.pop()}}if(!Le.isObject(n))throw new TypeError("data must be an object");return h(n),e}function Gw(n){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(n).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Vv(n,e){this._pairs=[],n&&fm(n,this,e)}const Hw=Vv.prototype;Hw.append=function(e,t){this._pairs.push([e,t])},Hw.toString=function(e){const t=e?function(r){return e.call(this,r,Gw)}:Gw;return this._pairs.map(function(o){return t(o[0])+"="+t(o[1])},"").join("&")};function DV(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Ww(n,e,t){if(!e)return n;const r=t&&t.encode||DV;Le.isFunction(t)&&(t={serialize:t});const o=t&&t.serialize;let i;if(o?i=o(e,t):i=Le.isURLSearchParams(e)?e.toString():new Vv(e,t).toString(r),i){const a=n.indexOf("#");a!==-1&&(n=n.slice(0,a)),n+=(n.indexOf("?")===-1?"?":"&")+i}return n}class jw{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Le.forEach(this.handlers,function(r){r!==null&&e(r)})}}const Qw={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},BV={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:Vv,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},Uv=typeof window<"u"&&typeof document<"u",zv=typeof navigator=="object"&&navigator||void 0,NV=Uv&&(!zv||["ReactNative","NativeScript","NS"].indexOf(zv.product)<0),OV=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",kV=Uv&&window.location.href||"http://localhost",no={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Uv,hasStandardBrowserEnv:NV,hasStandardBrowserWebWorkerEnv:OV,navigator:zv,origin:kV},Symbol.toStringTag,{value:"Module"})),...BV};function FV(n,e){return fm(n,new no.classes.URLSearchParams,{visitor:function(t,r,o,i){return no.isNode&&Le.isBuffer(t)?(this.append(r,t.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function VV(n){return Le.matchAll(/\w+|\[(\w*)]/g,n).map(e=>e[0]==="[]"?"":e[1]||e[0])}function UV(n){const e={},t=Object.keys(n);let r;const o=t.length;let i;for(r=0;r=t.length;return a=!a&&Le.isArray(o)?o.length:a,l?(Le.hasOwnProp(o,a)?o[a]=[o[a],r]:o[a]=r,!s):((!o[a]||!Le.isObject(o[a]))&&(o[a]=[]),e(t,r,o[a],i)&&Le.isArray(o[a])&&(o[a]=UV(o[a])),!s)}if(Le.isFormData(n)&&Le.isFunction(n.entries)){const t={};return Le.forEachEntry(n,(r,o)=>{e(VV(r),o,t,0)}),t}return null}function zV(n,e,t){if(Le.isString(n))try{return(e||JSON.parse)(n),Le.trim(n)}catch(r){if(r.name!=="SyntaxError")throw r}return(t||JSON.stringify)(n)}const vf={transitional:Qw,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",o=r.indexOf("application/json")>-1,i=Le.isObject(e);if(i&&Le.isHTMLForm(e)&&(e=new FormData(e)),Le.isFormData(e))return o?JSON.stringify($w(e)):e;if(Le.isArrayBuffer(e)||Le.isBuffer(e)||Le.isStream(e)||Le.isFile(e)||Le.isBlob(e)||Le.isReadableStream(e))return e;if(Le.isArrayBufferView(e))return e.buffer;if(Le.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return FV(e,this.formSerializer).toString();if((s=Le.isFileList(e))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return fm(s?{"files[]":e}:e,l&&new l,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),zV(e)):e}],transformResponse:[function(e){const t=this.transitional||vf.transitional,r=t&&t.forcedJSONParsing,o=this.responseType==="json";if(Le.isResponse(e)||Le.isReadableStream(e))return e;if(e&&Le.isString(e)&&(r&&!this.responseType||o)){const a=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e,this.parseReviver)}catch(s){if(a)throw s.name==="SyntaxError"?Ut.from(s,Ut.ERR_BAD_RESPONSE,this,null,this.response):s}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:no.classes.FormData,Blob:no.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Le.forEach(["delete","get","head","post","put","patch"],n=>{vf.headers[n]={}});const GV=Le.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),HV=n=>{const e={};let t,r,o;return n&&n.split(` +`).forEach(function(a){o=a.indexOf(":"),t=a.substring(0,o).trim().toLowerCase(),r=a.substring(o+1).trim(),!(!t||e[t]&&GV[t])&&(t==="set-cookie"?e[t]?e[t].push(r):e[t]=[r]:e[t]=e[t]?e[t]+", "+r:r)}),e},Yw=Symbol("internals");function Af(n){return n&&String(n).trim().toLowerCase()}function hm(n){return n===!1||n==null?n:Le.isArray(n)?n.map(hm):String(n)}function WV(n){const e=Object.create(null),t=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=t.exec(n);)e[r[1]]=r[2];return e}const jV=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function Gv(n,e,t,r,o){if(Le.isFunction(r))return r.call(this,e,t);if(o&&(e=t),!!Le.isString(e)){if(Le.isString(r))return e.indexOf(r)!==-1;if(Le.isRegExp(r))return r.test(e)}}function QV(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r)}function $V(n,e){const t=Le.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(n,r+t,{value:function(o,i,a){return this[r].call(this,e,o,i,a)},configurable:!0})})}let No=class{constructor(e){e&&this.set(e)}set(e,t,r){const o=this;function i(s,l,c){const u=Af(l);if(!u)throw new Error("header name must be a non-empty string");const d=Le.findKey(o,u);(!d||o[d]===void 0||c===!0||c===void 0&&o[d]!==!1)&&(o[d||l]=hm(s))}const a=(s,l)=>Le.forEach(s,(c,u)=>i(c,u,l));if(Le.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(Le.isString(e)&&(e=e.trim())&&!jV(e))a(HV(e),t);else if(Le.isObject(e)&&Le.isIterable(e)){let s={},l,c;for(const u of e){if(!Le.isArray(u))throw TypeError("Object iterator must return a key-value pair");s[c=u[0]]=(l=s[c])?Le.isArray(l)?[...l,u[1]]:[l,u[1]]:u[1]}a(s,t)}else e!=null&&i(t,e,r);return this}get(e,t){if(e=Af(e),e){const r=Le.findKey(this,e);if(r){const o=this[r];if(!t)return o;if(t===!0)return WV(o);if(Le.isFunction(t))return t.call(this,o,r);if(Le.isRegExp(t))return t.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Af(e),e){const r=Le.findKey(this,e);return!!(r&&this[r]!==void 0&&(!t||Gv(this,this[r],r,t)))}return!1}delete(e,t){const r=this;let o=!1;function i(a){if(a=Af(a),a){const s=Le.findKey(r,a);s&&(!t||Gv(r,r[s],s,t))&&(delete r[s],o=!0)}}return Le.isArray(e)?e.forEach(i):i(e),o}clear(e){const t=Object.keys(this);let r=t.length,o=!1;for(;r--;){const i=t[r];(!e||Gv(this,this[i],i,e,!0))&&(delete this[i],o=!0)}return o}normalize(e){const t=this,r={};return Le.forEach(this,(o,i)=>{const a=Le.findKey(r,i);if(a){t[a]=hm(o),delete t[i];return}const s=e?QV(i):String(i).trim();s!==i&&delete t[i],t[s]=hm(o),r[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Le.forEach(this,(r,o)=>{r!=null&&r!==!1&&(t[o]=e&&Le.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach(o=>r.set(o)),r}static accessor(e){const r=(this[Yw]=this[Yw]={accessors:{}}).accessors,o=this.prototype;function i(a){const s=Af(a);r[s]||($V(o,a),r[s]=!0)}return Le.isArray(e)?e.forEach(i):i(e),this}};No.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Le.reduceDescriptors(No.prototype,({value:n},e)=>{let t=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(r){this[t]=r}}}),Le.freezeMethods(No);function Hv(n,e){const t=this||vf,r=e||t,o=No.from(r.headers);let i=r.data;return Le.forEach(n,function(s){i=s.call(t,i,o.normalize(),e?e.status:void 0)}),o.normalize(),i}function Xw(n){return!!(n&&n.__CANCEL__)}function qc(n,e,t){Ut.call(this,n??"canceled",Ut.ERR_CANCELED,e,t),this.name="CanceledError"}Le.inherits(qc,Ut,{__CANCEL__:!0});function qw(n,e,t){const r=t.config.validateStatus;!t.status||!r||r(t.status)?n(t):e(new Ut("Request failed with status code "+t.status,[Ut.ERR_BAD_REQUEST,Ut.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t))}function YV(n){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function XV(n,e){n=n||10;const t=new Array(n),r=new Array(n);let o=0,i=0,a;return e=e!==void 0?e:1e3,function(l){const c=Date.now(),u=r[i];a||(a=c),t[o]=l,r[o]=c;let d=i,f=0;for(;d!==o;)f+=t[d++],d=d%n;if(o=(o+1)%n,o===i&&(i=(i+1)%n),c-a{t=u,o=null,i&&(clearTimeout(i),i=null),n(...c)};return[(...c)=>{const u=Date.now(),d=u-t;d>=r?a(c,u):(o=c,i||(i=setTimeout(()=>{i=null,a(o)},r-d)))},()=>o&&a(o)]}const pm=(n,e,t=3)=>{let r=0;const o=XV(50,250);return qV(i=>{const a=i.loaded,s=i.lengthComputable?i.total:void 0,l=a-r,c=o(l),u=a<=s;r=a;const d={loaded:a,total:s,progress:s?a/s:void 0,bytes:l,rate:c||void 0,estimated:c&&s&&u?(s-a)/c:void 0,event:i,lengthComputable:s!=null,[e?"download":"upload"]:!0};n(d)},t)},Kw=(n,e)=>{const t=n!=null;return[r=>e[0]({lengthComputable:t,total:n,loaded:r}),e[1]]},Zw=n=>(...e)=>Le.asap(()=>n(...e)),KV=no.hasStandardBrowserEnv?((n,e)=>t=>(t=new URL(t,no.origin),n.protocol===t.protocol&&n.host===t.host&&(e||n.port===t.port)))(new URL(no.origin),no.navigator&&/(msie|trident)/i.test(no.navigator.userAgent)):()=>!0,ZV=no.hasStandardBrowserEnv?{write(n,e,t,r,o,i,a){if(typeof document>"u")return;const s=[`${n}=${encodeURIComponent(e)}`];Le.isNumber(t)&&s.push(`expires=${new Date(t).toUTCString()}`),Le.isString(r)&&s.push(`path=${r}`),Le.isString(o)&&s.push(`domain=${o}`),i===!0&&s.push("secure"),Le.isString(a)&&s.push(`SameSite=${a}`),document.cookie=s.join("; ")},read(n){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+n+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(n){this.write(n,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function JV(n){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function eU(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function Jw(n,e,t){let r=!JV(e);return n&&(r||t==!1)?eU(n,e):e}const eM=n=>n instanceof No?{...n}:n;function Fl(n,e){e=e||{};const t={};function r(c,u,d,f){return Le.isPlainObject(c)&&Le.isPlainObject(u)?Le.merge.call({caseless:f},c,u):Le.isPlainObject(u)?Le.merge({},u):Le.isArray(u)?u.slice():u}function o(c,u,d,f){if(Le.isUndefined(u)){if(!Le.isUndefined(c))return r(void 0,c,d,f)}else return r(c,u,d,f)}function i(c,u){if(!Le.isUndefined(u))return r(void 0,u)}function a(c,u){if(Le.isUndefined(u)){if(!Le.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function s(c,u,d){if(d in e)return r(c,u);if(d in n)return r(void 0,c)}const l={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(c,u,d)=>o(eM(c),eM(u),d,!0)};return Le.forEach(Object.keys({...n,...e}),function(u){const d=l[u]||o,f=d(n[u],e[u],u);Le.isUndefined(f)&&d!==s||(t[u]=f)}),t}const tM=n=>{const e=Fl({},n);let{data:t,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:i,headers:a,auth:s}=e;if(e.headers=a=No.from(a),e.url=Ww(Jw(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),s&&a.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):""))),Le.isFormData(t)){if(no.hasStandardBrowserEnv||no.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(Le.isFunction(t.getHeaders)){const l=t.getHeaders(),c=["content-type","content-length"];Object.entries(l).forEach(([u,d])=>{c.includes(u.toLowerCase())&&a.set(u,d)})}}if(no.hasStandardBrowserEnv&&(r&&Le.isFunction(r)&&(r=r(e)),r||r!==!1&&KV(e.url))){const l=o&&i&&ZV.read(i);l&&a.set(o,l)}return e},tU=typeof XMLHttpRequest<"u"&&function(n){return new Promise(function(t,r){const o=tM(n);let i=o.data;const a=No.from(o.headers).normalize();let{responseType:s,onUploadProgress:l,onDownloadProgress:c}=o,u,d,f,h,p;function m(){h&&h(),p&&p(),o.cancelToken&&o.cancelToken.unsubscribe(u),o.signal&&o.signal.removeEventListener("abort",u)}let g=new XMLHttpRequest;g.open(o.method.toUpperCase(),o.url,!0),g.timeout=o.timeout;function _(){if(!g)return;const y=No.from("getAllResponseHeaders"in g&&g.getAllResponseHeaders()),E={data:!s||s==="text"||s==="json"?g.responseText:g.response,status:g.status,statusText:g.statusText,headers:y,config:n,request:g};qw(function(w){t(w),m()},function(w){r(w),m()},E),g=null}"onloadend"in g?g.onloadend=_:g.onreadystatechange=function(){!g||g.readyState!==4||g.status===0&&!(g.responseURL&&g.responseURL.indexOf("file:")===0)||setTimeout(_)},g.onabort=function(){g&&(r(new Ut("Request aborted",Ut.ECONNABORTED,n,g)),g=null)},g.onerror=function(b){const E=b&&b.message?b.message:"Network Error",x=new Ut(E,Ut.ERR_NETWORK,n,g);x.event=b||null,r(x),g=null},g.ontimeout=function(){let b=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const E=o.transitional||Qw;o.timeoutErrorMessage&&(b=o.timeoutErrorMessage),r(new Ut(b,E.clarifyTimeoutError?Ut.ETIMEDOUT:Ut.ECONNABORTED,n,g)),g=null},i===void 0&&a.setContentType(null),"setRequestHeader"in g&&Le.forEach(a.toJSON(),function(b,E){g.setRequestHeader(E,b)}),Le.isUndefined(o.withCredentials)||(g.withCredentials=!!o.withCredentials),s&&s!=="json"&&(g.responseType=o.responseType),c&&([f,p]=pm(c,!0),g.addEventListener("progress",f)),l&&g.upload&&([d,h]=pm(l),g.upload.addEventListener("progress",d),g.upload.addEventListener("loadend",h)),(o.cancelToken||o.signal)&&(u=y=>{g&&(r(!y||y.type?new qc(null,n,g):y),g.abort(),g=null)},o.cancelToken&&o.cancelToken.subscribe(u),o.signal&&(o.signal.aborted?u():o.signal.addEventListener("abort",u)));const A=YV(o.url);if(A&&no.protocols.indexOf(A)===-1){r(new Ut("Unsupported protocol "+A+":",Ut.ERR_BAD_REQUEST,n));return}g.send(i||null)})},nU=(n,e)=>{const{length:t}=n=n?n.filter(Boolean):[];if(e||t){let r=new AbortController,o;const i=function(c){if(!o){o=!0,s();const u=c instanceof Error?c:this.reason;r.abort(u instanceof Ut?u:new qc(u instanceof Error?u.message:u))}};let a=e&&setTimeout(()=>{a=null,i(new Ut(`timeout ${e} of ms exceeded`,Ut.ETIMEDOUT))},e);const s=()=>{n&&(a&&clearTimeout(a),a=null,n.forEach(c=>{c.unsubscribe?c.unsubscribe(i):c.removeEventListener("abort",i)}),n=null)};n.forEach(c=>c.addEventListener("abort",i));const{signal:l}=r;return l.unsubscribe=()=>Le.asap(s),l}},rU=function*(n,e){let t=n.byteLength;if(t{const o=oU(n,e);let i=0,a,s=l=>{a||(a=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:c,value:u}=await o.next();if(c){s(),l.close();return}let d=u.byteLength;if(t){let f=i+=d;t(f)}l.enqueue(new Uint8Array(u))}catch(c){throw s(c),c}},cancel(l){return s(l),o.return()}},{highWaterMark:2})},rM=64*1024,{isFunction:mm}=Le,aU=(({Request:n,Response:e})=>({Request:n,Response:e}))(Le.global),{ReadableStream:oM,TextEncoder:iM}=Le.global,aM=(n,...e)=>{try{return!!n(...e)}catch{return!1}},sU=n=>{n=Le.merge.call({skipUndefined:!0},aU,n);const{fetch:e,Request:t,Response:r}=n,o=e?mm(e):typeof fetch=="function",i=mm(t),a=mm(r);if(!o)return!1;const s=o&&mm(oM),l=o&&(typeof iM=="function"?(p=>m=>p.encode(m))(new iM):async p=>new Uint8Array(await new t(p).arrayBuffer())),c=i&&s&&aM(()=>{let p=!1;const m=new t(no.origin,{body:new oM,method:"POST",get duplex(){return p=!0,"half"}}).headers.has("Content-Type");return p&&!m}),u=a&&s&&aM(()=>Le.isReadableStream(new r("").body)),d={stream:u&&(p=>p.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(p=>{!d[p]&&(d[p]=(m,g)=>{let _=m&&m[p];if(_)return _.call(m);throw new Ut(`Response type '${p}' is not supported`,Ut.ERR_NOT_SUPPORT,g)})});const f=async p=>{if(p==null)return 0;if(Le.isBlob(p))return p.size;if(Le.isSpecCompliantForm(p))return(await new t(no.origin,{method:"POST",body:p}).arrayBuffer()).byteLength;if(Le.isArrayBufferView(p)||Le.isArrayBuffer(p))return p.byteLength;if(Le.isURLSearchParams(p)&&(p=p+""),Le.isString(p))return(await l(p)).byteLength},h=async(p,m)=>{const g=Le.toFiniteNumber(p.getContentLength());return g??f(m)};return async p=>{let{url:m,method:g,data:_,signal:A,cancelToken:y,timeout:b,onDownloadProgress:E,onUploadProgress:x,responseType:w,headers:L,withCredentials:C="same-origin",fetchOptions:P}=tM(p),D=e||fetch;w=w?(w+"").toLowerCase():"text";let Q=nU([A,y&&y.toAbortSignal()],b),re=null;const G=Q&&Q.unsubscribe&&(()=>{Q.unsubscribe()});let se;try{if(x&&c&&g!=="get"&&g!=="head"&&(se=await h(L,_))!==0){let O=new t(m,{method:"POST",body:_,duplex:"half"}),W;if(Le.isFormData(_)&&(W=O.headers.get("content-type"))&&L.setContentType(W),O.body){const[ae,ne]=Kw(se,pm(Zw(x)));_=nM(O.body,rM,ae,ne)}}Le.isString(C)||(C=C?"include":"omit");const ee=i&&"credentials"in t.prototype,ie={...P,signal:Q,method:g.toUpperCase(),headers:L.normalize().toJSON(),body:_,duplex:"half",credentials:ee?C:void 0};re=i&&new t(m,ie);let H=await(i?D(re,P):D(m,ie));const T=u&&(w==="stream"||w==="response");if(u&&(E||T&&G)){const O={};["status","statusText","headers"].forEach(oe=>{O[oe]=H[oe]});const W=Le.toFiniteNumber(H.headers.get("content-length")),[ae,ne]=E&&Kw(W,pm(Zw(E),!0))||[];H=new r(nM(H.body,rM,ae,()=>{ne&&ne(),G&&G()}),O)}w=w||"text";let R=await d[Le.findKey(d,w)||"text"](H,p);return!T&&G&&G(),await new Promise((O,W)=>{qw(O,W,{data:R,headers:No.from(H.headers),status:H.status,statusText:H.statusText,config:p,request:re})})}catch(ee){throw G&&G(),ee&&ee.name==="TypeError"&&/Load failed|fetch/i.test(ee.message)?Object.assign(new Ut("Network Error",Ut.ERR_NETWORK,p,re),{cause:ee.cause||ee}):Ut.from(ee,ee&&ee.code,p,re)}}},lU=new Map,sM=n=>{let e=n&&n.env||{};const{fetch:t,Request:r,Response:o}=e,i=[r,o,t];let a=i.length,s=a,l,c,u=lU;for(;s--;)l=i[s],c=u.get(l),c===void 0&&u.set(l,c=s?new Map:sU(e)),u=c;return c};sM();const Wv={http:RV,xhr:tU,fetch:{get:sM}};Le.forEach(Wv,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});const lM=n=>`- ${n}`,cU=n=>Le.isFunction(n)||n===null||n===!1;function uU(n,e){n=Le.isArray(n)?n:[n];const{length:t}=n;let r,o;const i={};for(let a=0;a`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let s=t?a.length>1?`since : +`+a.map(lM).join(` +`):" "+lM(a[0]):"as no adapter specified";throw new Ut("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return o}const cM={getAdapter:uU,adapters:Wv};function jv(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new qc(null,n)}function uM(n){return jv(n),n.headers=No.from(n.headers),n.data=Hv.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),cM.getAdapter(n.adapter||vf.adapter,n)(n).then(function(r){return jv(n),r.data=Hv.call(n,n.transformResponse,r),r.headers=No.from(r.headers),r},function(r){return Xw(r)||(jv(n),r&&r.response&&(r.response.data=Hv.call(n,n.transformResponse,r.response),r.response.headers=No.from(r.response.headers))),Promise.reject(r)})}const dM="1.13.2",gm={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{gm[n]=function(r){return typeof r===n||"a"+(e<1?"n ":" ")+n}});const fM={};gm.transitional=function(e,t,r){function o(i,a){return"[Axios v"+dM+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,s)=>{if(e===!1)throw new Ut(o(a," has been removed"+(t?" in "+t:"")),Ut.ERR_DEPRECATED);return t&&!fM[a]&&(fM[a]=!0,console.warn(o(a," has been deprecated since v"+t+" and will be removed in the near future"))),e?e(i,a,s):!0}},gm.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function dU(n,e,t){if(typeof n!="object")throw new Ut("options must be an object",Ut.ERR_BAD_OPTION_VALUE);const r=Object.keys(n);let o=r.length;for(;o-- >0;){const i=r[o],a=e[i];if(a){const s=n[i],l=s===void 0||a(s,i,n);if(l!==!0)throw new Ut("option "+i+" must be "+l,Ut.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new Ut("Unknown option "+i,Ut.ERR_BAD_OPTION)}}const _m={assertOptions:dU,validators:gm},ma=_m.validators;let Vl=class{constructor(e){this.defaults=e||{},this.interceptors={request:new jw,response:new jw}}async request(e,t){try{return await this._request(e,t)}catch(r){if(r instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const i=o.stack?o.stack.replace(/^.+\n/,""):"";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+i):r.stack=i}catch{}}throw r}}_request(e,t){typeof e=="string"?(t=t||{},t.url=e):t=e||{},t=Fl(this.defaults,t);const{transitional:r,paramsSerializer:o,headers:i}=t;r!==void 0&&_m.assertOptions(r,{silentJSONParsing:ma.transitional(ma.boolean),forcedJSONParsing:ma.transitional(ma.boolean),clarifyTimeoutError:ma.transitional(ma.boolean)},!1),o!=null&&(Le.isFunction(o)?t.paramsSerializer={serialize:o}:_m.assertOptions(o,{encode:ma.function,serialize:ma.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),_m.assertOptions(t,{baseUrl:ma.spelling("baseURL"),withXsrfToken:ma.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=i&&Le.merge(i.common,i[t.method]);i&&Le.forEach(["delete","get","head","post","put","patch","common"],p=>{delete i[p]}),t.headers=No.concat(a,i);const s=[];let l=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(t)===!1||(l=l&&m.synchronous,s.unshift(m.fulfilled,m.rejected))});const c=[];this.interceptors.response.forEach(function(m){c.push(m.fulfilled,m.rejected)});let u,d=0,f;if(!l){const p=[uM.bind(this),void 0];for(p.unshift(...s),p.push(...c),f=p.length,u=Promise.resolve(t);d{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](o);r._listeners=null}),this.promise.then=o=>{let i;const a=new Promise(s=>{r.subscribe(s),i=s}).then(o);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,s){r.reason||(r.reason=new qc(i,a,s),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=r=>{e.abort(r)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new xN(function(o){e=o}),cancel:e}}};function hU(n){return function(t){return n.apply(null,t)}}function pU(n){return Le.isObject(n)&&n.isAxiosError===!0}const Qv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Qv).forEach(([n,e])=>{Qv[e]=n});function hM(n){const e=new Vl(n),t=Iw(Vl.prototype.request,e);return Le.extend(t,Vl.prototype,e,{allOwnKeys:!0}),Le.extend(t,e,null,{allOwnKeys:!0}),t.create=function(o){return hM(Fl(n,o))},t}const Gt=hM(vf);Gt.Axios=Vl,Gt.CanceledError=qc,Gt.CancelToken=fU,Gt.isCancel=Xw,Gt.VERSION=dM,Gt.toFormData=fm,Gt.AxiosError=Ut,Gt.Cancel=Gt.CanceledError,Gt.all=function(e){return Promise.all(e)},Gt.spread=hU,Gt.isAxiosError=pU,Gt.mergeConfig=Fl,Gt.AxiosHeaders=No,Gt.formToJSON=n=>$w(Le.isHTMLForm(n)?new FormData(n):n),Gt.getAdapter=cM.getAdapter,Gt.HttpStatusCode=Qv,Gt.default=Gt;const{Axios:uEe,AxiosError:dEe,CanceledError:fEe,isCancel:hEe,CancelToken:pEe,VERSION:mEe,all:gEe,Cancel:_Ee,isAxiosError:vEe,spread:AEe,toFormData:yEe,AxiosHeaders:bEe,HttpStatusCode:xEe,formToJSON:EEe,getAdapter:CEe,mergeConfig:SEe}=Gt;let vm;const mU=new Uint8Array(16);function gU(){if(!vm&&(vm=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!vm))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return vm(mU)}const Hr=[];for(let n=0;n<256;++n)Hr.push((n+256).toString(16).slice(1));function _U(n,e=0){return Hr[n[e+0]]+Hr[n[e+1]]+Hr[n[e+2]]+Hr[n[e+3]]+"-"+Hr[n[e+4]]+Hr[n[e+5]]+"-"+Hr[n[e+6]]+Hr[n[e+7]]+"-"+Hr[n[e+8]]+Hr[n[e+9]]+"-"+Hr[n[e+10]]+Hr[n[e+11]]+Hr[n[e+12]]+Hr[n[e+13]]+Hr[n[e+14]]+Hr[n[e+15]]}const pM={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function vU(n,e,t){if(pM.randomUUID&&!n)return pM.randomUUID();n=n||{};const r=n.random||(n.rng||gU)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,_U(r)}var Am={exports:{}},ym={exports:{}},bm={exports:{}},AU=bm.exports,mM;function $v(){return mM||(mM=1,(function(n,e){(function(t,r){n.exports=r()})(AU,function(){function t(m){return!isNaN(parseFloat(m))&&isFinite(m)}function r(m){return m.charAt(0).toUpperCase()+m.substring(1)}function o(m){return function(){return this[m]}}var i=["isConstructor","isEval","isNative","isToplevel"],a=["columnNumber","lineNumber"],s=["fileName","functionName","source"],l=["args"],c=["evalOrigin"],u=i.concat(a,s,l,c);function d(m){if(m)for(var g=0;g-1&&(u=u.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var d=u.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),f=d.match(/ (\(.+\)$)/);d=f?d.replace(f[0],""):d;var h=this.extractLocation(f?f[1]:d),p=f&&d||void 0,m=["eval",""].indexOf(h[0])>-1?void 0:h[0];return new r({functionName:p,fileName:m,lineNumber:h[1],columnNumber:h[2],source:u})},this)},parseFFOrSafari:function(l){var c=l.stack.split(` +`).filter(function(u){return!u.match(a)},this);return c.map(function(u){if(u.indexOf(" > eval")>-1&&(u=u.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),u.indexOf("@")===-1&&u.indexOf(":")===-1)return new r({functionName:u});var d=/((.*".+"[^@]*)?[^@]*)(?:@)/,f=u.match(d),h=f&&f[1]?f[1]:void 0,p=this.extractLocation(u.replace(d,""));return new r({functionName:h,fileName:p[0],lineNumber:p[1],columnNumber:p[2],source:u})},this)},parseOpera:function(l){return!l.stacktrace||l.message.indexOf(` +`)>-1&&l.message.split(` +`).length>l.stacktrace.split(` +`).length?this.parseOpera9(l):l.stack?this.parseOpera11(l):this.parseOpera10(l)},parseOpera9:function(l){for(var c=/Line (\d+).*script (?:in )?(\S+)/i,u=l.message.split(` +`),d=[],f=2,h=u.length;f/,"$2").replace(/\([^)]*\)/g,"")||void 0,m;h.match(/\(([^)]*)\)/)&&(m=h.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var g=m===void 0||m==="[arguments not available]"?void 0:m.split(",");return new r({functionName:p,args:g,fileName:f[0],lineNumber:f[1],columnNumber:f[2],source:u})},this)}}})})(ym)),ym.exports}var xm={exports:{}},xU=xm.exports,_M;function EU(){return _M||(_M=1,(function(n,e){(function(t,r){n.exports=r($v())})(xU,function(t){return{backtrace:function(o){var i=[],a=10;typeof o=="object"&&typeof o.maxStackSize=="number"&&(a=o.maxStackSize);for(var s=arguments.callee;s&&i.length=0;C--)w=x[C],w==="."?x.splice(C,1):w===".."?L++:L>0&&(w===""?(x.splice(C+1,L),L=0):(x.splice(C,2),L--));return y=x.join("/"),y===""&&(y=E?"/":"."),b?(b.path=y,i(b)):y}n.normalize=a;function s(A,y){A===""&&(A="."),y===""&&(y=".");var b=o(y),E=o(A);if(E&&(A=E.path||"/"),b&&!b.scheme)return E&&(b.scheme=E.scheme),i(b);if(b||y.match(r))return y;if(E&&!E.host&&!E.path)return E.host=y,i(E);var x=y.charAt(0)==="/"?y:a(A.replace(/\/+$/,"")+"/"+y);return E?(E.path=x,i(E)):x}n.join=s,n.isAbsolute=function(A){return A.charAt(0)==="/"||!!A.match(t)};function l(A,y){A===""&&(A="."),A=A.replace(/\/$/,"");for(var b=0;y.indexOf(A+"/")!==0;){var E=A.lastIndexOf("/");if(E<0||(A=A.slice(0,E),A.match(/^([^\/]+:\/)?\/*$/)))return y;++b}return Array(b+1).join("../")+y.substr(A.length+1)}n.relative=l;var c=(function(){var A=Object.create(null);return!("__proto__"in A)})();function u(A){return A}function d(A){return h(A)?"$"+A:A}n.toSetString=c?u:d;function f(A){return h(A)?A.slice(1):A}n.fromSetString=c?u:f;function h(A){if(!A)return!1;var y=A.length;if(y<9||A.charCodeAt(y-1)!==95||A.charCodeAt(y-2)!==95||A.charCodeAt(y-3)!==111||A.charCodeAt(y-4)!==116||A.charCodeAt(y-5)!==111||A.charCodeAt(y-6)!==114||A.charCodeAt(y-7)!==112||A.charCodeAt(y-8)!==95||A.charCodeAt(y-9)!==95)return!1;for(var b=y-10;b>=0;b--)if(A.charCodeAt(b)!==36)return!1;return!0}function p(A,y,b){var E=A.source-y.source;return E!==0||(E=A.originalLine-y.originalLine,E!==0)||(E=A.originalColumn-y.originalColumn,E!==0||b)||(E=A.generatedColumn-y.generatedColumn,E!==0)||(E=A.generatedLine-y.generatedLine,E!==0)?E:A.name-y.name}n.compareByOriginalPositions=p;function m(A,y,b){var E=A.generatedLine-y.generatedLine;return E!==0||(E=A.generatedColumn-y.generatedColumn,E!==0||b)||(E=A.source-y.source,E!==0)||(E=A.originalLine-y.originalLine,E!==0)||(E=A.originalColumn-y.originalColumn,E!==0)?E:A.name-y.name}n.compareByGeneratedPositionsDeflated=m;function g(A,y){return A===y?0:A>y?1:-1}function _(A,y){var b=A.generatedLine-y.generatedLine;return b!==0||(b=A.generatedColumn-y.generatedColumn,b!==0)||(b=g(A.source,y.source),b!==0)||(b=A.originalLine-y.originalLine,b!==0)||(b=A.originalColumn-y.originalColumn,b!==0)?b:g(A.name,y.name)}n.compareByGeneratedPositionsInflated=_})(Yv)),Yv}var Xv={},yM;function CU(){return yM||(yM=1,(function(n){n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2;function e(t,r,o,i,a,s){var l=Math.floor((r-t)/2)+t,c=a(o,i[l],!0);return c===0?l:c>0?r-l>1?e(l,r,o,i,a,s):s==n.LEAST_UPPER_BOUND?r1?e(t,l,o,i,a,s):s==n.LEAST_UPPER_BOUND?l:t<0?-1:t}n.search=function(r,o,i,a){if(o.length===0)return-1;var s=e(-1,o.length,r,o,i,a||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&i(o[s],o[s-1],!0)===0;)--s;return s}})(Xv)),Xv}var qv={},bM;function SU(){if(bM)return qv;bM=1;var n=AM(),e=Object.prototype.hasOwnProperty;function t(){this._array=[],this._set=Object.create(null)}return t.fromArray=function(o,i){for(var a=new t,s=0,l=o.length;s=0&&o>1;return l?-c:c}return Cm.encode=function(l){var c="",u,d=i(l);do u=d&r,d>>>=e,d>0&&(u|=o),c+=n.encode(u);while(d>0);return c},Cm.decode=function(l,c,u){var d=l.length,f=0,h=0,p,m;do{if(c>=d)throw new Error("Expected more digits in base 64 VLQ value.");if(m=n.decode(l.charCodeAt(c++)),m===-1)throw new Error("Invalid base64 digit: "+l.charAt(c-1));p=!!(m&o),m&=r,f=f+(m<=0){var m=this._originalMappings[p];if(u.column===void 0)for(var g=m.originalLine;m&&m.originalLine===g;)h.push({line:n.getArg(m,"generatedLine",null),column:n.getArg(m,"generatedColumn",null),lastColumn:n.getArg(m,"lastGeneratedColumn",null)}),m=this._originalMappings[++p];else for(var _=m.originalColumn;m&&m.originalLine===d&&m.originalColumn==_;)h.push({line:n.getArg(m,"generatedLine",null),column:n.getArg(m,"generatedColumn",null),lastColumn:n.getArg(m,"lastGeneratedColumn",null)}),m=this._originalMappings[++p]}return h},yf.SourceMapConsumer=i;function a(c){var u=c;typeof c=="string"&&(u=JSON.parse(c.replace(/^\)\]\}'/,"")));var d=n.getArg(u,"version"),f=n.getArg(u,"sources"),h=n.getArg(u,"names",[]),p=n.getArg(u,"sourceRoot",null),m=n.getArg(u,"sourcesContent",null),g=n.getArg(u,"mappings"),_=n.getArg(u,"file",null);if(d!=this._version)throw new Error("Unsupported version: "+d);f=f.map(String).map(n.normalize).map(function(A){return p&&n.isAbsolute(p)&&n.isAbsolute(A)?n.relative(p,A):A}),this._names=t.fromArray(h.map(String),!0),this._sources=t.fromArray(f,!0),this.sourceRoot=p,this.sourcesContent=m,this._mappings=g,this.file=_}a.prototype=Object.create(i.prototype),a.prototype.consumer=i,a.fromSourceMap=function(u){var d=Object.create(a.prototype),f=d._names=t.fromArray(u._names.toArray(),!0),h=d._sources=t.fromArray(u._sources.toArray(),!0);d.sourceRoot=u._sourceRoot,d.sourcesContent=u._generateSourcesContent(d._sources.toArray(),d.sourceRoot),d.file=u._file;for(var p=u._mappings.toArray().slice(),m=d.__generatedMappings=[],g=d.__originalMappings=[],_=0,A=p.length;_1&&(L.source=g+P[1],g+=P[1],L.originalLine=p+P[2],p=L.originalLine,L.originalLine+=1,L.originalColumn=m+P[3],m=L.originalColumn,P.length>4&&(L.name=_+P[4],_+=P[4])),w.push(L),typeof L.originalLine=="number"&&x.push(L)}o(w,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=w,o(x,n.compareByOriginalPositions),this.__originalMappings=x},a.prototype._findMapping=function(u,d,f,h,p,m){if(u[f]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+u[f]);if(u[h]<0)throw new TypeError("Column must be greater than or equal to 0, got "+u[h]);return e.search(u,d,p,m)},a.prototype.computeColumnSpans=function(){for(var u=0;u=0){var h=this._generatedMappings[f];if(h.generatedLine===d.generatedLine){var p=n.getArg(h,"source",null);p!==null&&(p=this._sources.at(p),this.sourceRoot!=null&&(p=n.join(this.sourceRoot,p)));var m=n.getArg(h,"name",null);return m!==null&&(m=this._names.at(m)),{source:p,line:n.getArg(h,"originalLine",null),column:n.getArg(h,"originalColumn",null),name:m}}}return{source:null,line:null,column:null,name:null}},a.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(u){return u==null}):!1},a.prototype.sourceContentFor=function(u,d){if(!this.sourcesContent)return null;if(this.sourceRoot!=null&&(u=n.relative(this.sourceRoot,u)),this._sources.has(u))return this.sourcesContent[this._sources.indexOf(u)];var f;if(this.sourceRoot!=null&&(f=n.urlParse(this.sourceRoot))){var h=u.replace(/^file:\/\//,"");if(f.scheme=="file"&&this._sources.has(h))return this.sourcesContent[this._sources.indexOf(h)];if((!f.path||f.path=="/")&&this._sources.has("/"+u))return this.sourcesContent[this._sources.indexOf("/"+u)]}if(d)return null;throw new Error('"'+u+'" is not in the SourceMap.')},a.prototype.generatedPositionFor=function(u){var d=n.getArg(u,"source");if(this.sourceRoot!=null&&(d=n.relative(this.sourceRoot,d)),!this._sources.has(d))return{line:null,column:null,lastColumn:null};d=this._sources.indexOf(d);var f={source:d,originalLine:n.getArg(u,"line"),originalColumn:n.getArg(u,"column")},h=this._findMapping(f,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,n.getArg(u,"bias",i.GREATEST_LOWER_BOUND));if(h>=0){var p=this._originalMappings[h];if(p.source===f.source)return{line:n.getArg(p,"generatedLine",null),column:n.getArg(p,"generatedColumn",null),lastColumn:n.getArg(p,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},yf.BasicSourceMapConsumer=a;function l(c){var u=c;typeof c=="string"&&(u=JSON.parse(c.replace(/^\)\]\}'/,"")));var d=n.getArg(u,"version"),f=n.getArg(u,"sections");if(d!=this._version)throw new Error("Unsupported version: "+d);this._sources=new t,this._names=new t;var h={line:-1,column:0};this._sections=f.map(function(p){if(p.url)throw new Error("Support for url field in sections not implemented.");var m=n.getArg(p,"offset"),g=n.getArg(m,"line"),_=n.getArg(m,"column");if(g=200&&m.status<300||f.substr(0,7)==="file://"&&m.responseText?h(m.responseText):p(new Error("HTTP status: "+m.status+" retrieving "+f)))},m.send()})}function i(f){if(typeof window<"u"&&window.atob)return window.atob(f);throw new Error("You must supply a polyfill for window.atob in this environment")}function a(f){if(typeof JSON<"u"&&JSON.parse)return JSON.parse(f);throw new Error("You must supply a polyfill for JSON.parse in this environment")}function s(f,h){for(var p=[/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*function\b/,/function\s+([^('"`]*?)\s*\(([^)]*)\)/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*(?:eval|new Function)\b/,/\b(?!(?:if|for|switch|while|with|catch)\b)(?:(?:static)\s+)?(\S+)\s*\(.*?\)\s*\{/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*\(.*?\)\s*=>/],m=f.split(` +`),g="",_=Math.min(h,20),A=0;A<_;++A){var y=m[h-A-1],b=y.indexOf("//");if(b>=0&&(y=y.substr(0,b)),y){g=y+g;for(var E=p.length,x=0;x"u"&&(E.sourceRoot=g),y(new t.SourceMapConsumer(E))}).catch(b)}).bind(this));this.sourceMapConsumerCache[m]=A,_(A)}}).bind(this))},this.pinpoint=function(m){return new Promise((function(g,_){this.getMappedLocation(m).then((function(A){function y(){g(A)}this.findFunctionName(A).then(g,y).catch(y)}).bind(this),_)}).bind(this))},this.findFunctionName=function(m){return new Promise((function(g,_){c(m),this._get(m.fileName).then(function(y){var b=m.lineNumber,E=m.columnNumber,x=s(y,b);g(x?new r({functionName:x,args:m.args,fileName:m.fileName,lineNumber:b,columnNumber:E}):m)},_).catch(_)}).bind(this))},this.getMappedLocation=function(m){return new Promise((function(g,_){l(),c(m);var A=this.sourceCache,y=m.fileName;this._get(y).then((function(b){var E=u(b),x=E.substr(0,5)==="data:",w=y.substring(0,y.lastIndexOf("/")+1);return E[0]!=="/"&&!x&&!/^https?:\/\/|^\/\//i.test(E)&&(E=w+E),this._getSourceMapConsumer(E,w).then(function(L){return d(m,L,A).then(g).catch(function(){g(m)})})}).bind(this),_).catch(_)}).bind(this))}}})})(Em)),Em.exports}var PU=Am.exports,MM;function DU(){return MM||(MM=1,(function(n,e){(function(t,r){n.exports=r(bU(),EU(),LU())})(PU,function(r,o,i){var a={filter:function(d){return(d.functionName||"").indexOf("StackTrace$$")===-1&&(d.functionName||"").indexOf("ErrorStackParser$$")===-1&&(d.functionName||"").indexOf("StackTraceGPS$$")===-1&&(d.functionName||"").indexOf("StackGenerator$$")===-1},sourceCache:{}},s=function(){try{throw new Error}catch(f){return f}};function l(d,f){var h={};return[d,f].forEach(function(p){for(var m in p)Object.prototype.hasOwnProperty.call(p,m)&&(h[m]=p[m]);return h}),h}function c(d){return d.stack||d["opera#sourceloc"]}function u(d,f){return typeof f=="function"?d.filter(f):d}return{get:function(f){var h=s();return c(h)?this.fromError(h,f):this.generateArtificially(f)},getSync:function(f){f=l(a,f);var h=s(),p=c(h)?r.parse(h):o.backtrace(f);return u(p,f.filter)},fromError:function(f,h){h=l(a,h);var p=new i(h);return new Promise((function(m){var g=u(r.parse(f),h.filter);m(Promise.all(g.map(function(_){return new Promise(function(A){function y(){A(_)}p.pinpoint(_).then(A,y).catch(y)})})))}).bind(this))},generateArtificially:function(f){f=l(a,f);var h=o.backtrace(f);return typeof f.filter=="function"&&(h=h.filter(f.filter)),Promise.resolve(h)},instrument:function(f,h,p,m){if(typeof f!="function")throw new Error("Cannot instrument non-function object");if(typeof f.__stacktraceOriginalFn=="function")return f;var g=(function(){try{return this.get().then(h,p).catch(p),f.apply(m||this,arguments)}catch(A){throw c(A)&&this.fromError(A).then(h,p).catch(p),A}}).bind(this);return g.__stacktraceOriginalFn=f,g},deinstrument:function(f){if(typeof f!="function")throw new Error("Cannot de-instrument non-function object");return typeof f.__stacktraceOriginalFn=="function"?f.__stacktraceOriginalFn:f},report:function(f,h,p,m){return new Promise(function(g,_){var A=new XMLHttpRequest;if(A.onerror=_,A.onreadystatechange=function(){A.readyState===4&&(A.status>=200&&A.status<400?g(A.responseText):_(new Error("POST to "+h+" failed with status: "+A.status)))},A.open("post",h),A.setRequestHeader("Content-Type","application/json"),m&&typeof m.headers=="object"){var y=m.headers;for(var b in y)Object.prototype.hasOwnProperty.call(y,b)&&A.setRequestHeader(b,y[b])}var E={stack:f};p!=null&&(E.message=p),A.send(JSON.stringify(E))})}}})})(Am)),Am.exports}var BU=DU();const bf=am(BU);var xf={exports:{}},wm={exports:{}},TM;function NU(){return TM||(TM=1,(function(n,e){Object.defineProperty(e,"__esModule",{value:!0}),e.ParsingError=void 0;class t extends Error{constructor(b,E){super(b),this.cause=E}}e.ParsingError=t;let r;function o(){return l(!1)||f()||d()||u()||s()}function i(){return m(/\s*/),l(!0)||d()||c()||s()}function a(){const y=s(),b=[];let E,x=i();for(;x;){if(x.node.type==="Element"){if(E)throw new Error("Found multiple root nodes");E=x.node}x.excluded||b.push(x.node),x=i()}if(!E)throw new t("Failed to parse XML","Root Element not found");if(r.xml.length!==0)throw new t("Failed to parse XML","Not Well-Formed XML");return{declaration:y?y.node:null,root:E,children:b}}function s(){const y=m(/^<\?([\w-:.]+)\s*/);if(!y)return;const b={name:y[1],type:"ProcessingInstruction",content:""},E=r.xml.indexOf("?>");if(E>-1)b.content=r.xml.substring(0,E).trim(),r.xml=r.xml.slice(E);else throw new t("Failed to parse XML","ProcessingInstruction closing tag not found");return m(/\?>/),{excluded:r.options.filter(b)===!1,node:b}}function l(y){const b=m(/^<([^?!\s]+)\s*/);if(!b)return;const E={type:"Element",name:b[1],attributes:{},children:[]},x=y?!1:r.options.filter(E)===!1;for(;!(g()||_(">")||_("?>")||_("/>"));){const L=h();if(L)E.attributes[L.name]=L.value;else return}if(m(/^\s*\/>/))return E.children=null,{excluded:x,node:E};m(/\??>/);let w=o();for(;w;)w.excluded||E.children.push(w.node),w=o();if(r.options.strictMode){const L=``;if(r.xml.startsWith(L))r.xml=r.xml.slice(L.length);else throw new t("Failed to parse XML",`Closing tag not matching "${L}"`)}else m(/^<\/[\w-:.\u00C0-\u00FF]+\s*>/);return{excluded:x,node:E}}function c(){const y=m(/^]*>/)||m(/^]*>/)||m(/^/)||m(/^/);if(y){const b={type:"DocumentType",content:y[0]};return{excluded:r.options.filter(b)===!1,node:b}}}function u(){if(r.xml.startsWith("");if(y>-1){const b=y+3,E={type:"CDATA",content:r.xml.substring(0,b)};return r.xml=r.xml.slice(b),{excluded:r.options.filter(E)===!1,node:E}}}}function d(){const y=m(/^/);if(y){const b={type:"Comment",content:y[0]};return{excluded:r.options.filter(b)===!1,node:b}}}function f(){const y=m(/^([^<]+)/);if(y){const b={type:"Text",content:y[1]};return{excluded:r.options.filter(b)===!1,node:b}}}function h(){const y=m(/([^=]+)\s*=\s*("[^"]*"|'[^']*'|[^>\s]+)\s*/);if(y)return{name:y[1].trim(),value:p(y[2].trim())}}function p(y){return y.replace(/^['"]|['"]$/g,"")}function m(y){const b=r.xml.match(y);if(b)return r.xml=r.xml.slice(b[0].length),b}function g(){return r.xml.length===0}function _(y){return r.xml.indexOf(y)===0}function A(y,b={}){y=y.trim();const E=b.filter||(()=>!0);return r={xml:y,options:Object.assign(Object.assign({},b),{filter:E,strictMode:b.strictMode===!0})},a()}n.exports=A,e.default=A})(wm,wm.exports)),wm.exports}var IM=xf.exports,RM;function OU(){return RM||(RM=1,(function(n,e){var t=IM&&IM.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(e,"__esModule",{value:!0});const r=t(NU());function o(p){if(!p.options.indentation&&!p.options.lineSeparator)return;p.content+=p.options.lineSeparator;let m;for(m=0;m0&&(!g&&m.content.length>0&&o(m),a(m,p))}function c(p,m){const g="/"+p.join("/"),_=p[p.length-1];return m.includes(_)||m.includes(g)}function u(p,m,g){if(m.path.push(p.name),!g&&m.content.length>0&&o(m),a(m,"<"+p.name),d(m,p.attributes),p.children===null||m.options.forceSelfClosingEmptyTag&&p.children.length===0){const _=m.options.whiteSpaceAtEndOfSelfclosingTag?" />":"/>";a(m,_)}else if(p.children.length===0)a(m,">");else{const _=p.children;a(m,">"),m.level++;let A=p.attributes["xml:space"]==="preserve"||g,y=!1;if(!A&&m.options.ignoredPaths&&(y=c(m.path,m.options.ignoredPaths),A=y),!A&&m.options.collapseContent){let b=!1,E=!1,x=!1;_.forEach(function(w,L){w.type==="Text"?(w.content.includes(` +`)?(E=!0,w.content=w.content.trim()):(L===0||L===_.length-1)&&!g&&w.content.trim().length===0&&(w.content=""),(w.content.trim().length>0||_.length===1)&&(b=!0)):w.type==="CDATA"?b=!0:x=!0}),b&&(!x||!E)&&(A=!0)}_.forEach(function(b){s(b,m,g||A)}),m.level--,!g&&!A&&o(m),y&&i(m),a(m,"")}m.path.pop()}function d(p,m){Object.keys(m).forEach(function(g){const _=m[g].replace(/"/g,""");a(p," "+g+'="'+_+'"')})}function f(p,m){m.content.length>0&&o(m),a(m,"")}function h(p,m={}){m.indentation="indentation"in m?m.indentation:" ",m.collapseContent=m.collapseContent===!0,m.lineSeparator="lineSeparator"in m?m.lineSeparator:`\r +`,m.whiteSpaceAtEndOfSelfclosingTag=m.whiteSpaceAtEndOfSelfclosingTag===!0,m.throwOnFailure=m.throwOnFailure!==!1;try{const g=(0,r.default)(p,{filter:m.filter,strictMode:m.strictMode}),_={content:"",level:0,options:m,path:[]};return g.declaration&&f(g.declaration,_),g.children.forEach(function(A){s(A,_,!1)}),m.lineSeparator?_.content.replace(/\r\n/g,` +`).replace(/\n/g,m.lineSeparator):_.content}catch(g){if(m.throwOnFailure)throw g;return p}}h.minify=(p,m={})=>h(p,Object.assign(Object.assign({},m),{indentation:"",lineSeparator:""})),n.exports=h,e.default=h})(xf,xf.exports)),xf.exports}var kU=OU();const LM=am(kU);var FU=Object.defineProperty,VU=(n,e,t)=>e in n?FU(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ze=(n,e,t)=>(VU(n,typeof e!="symbol"?e+"":e,t),t);const Zv=class mi{constructor(e=23517,t="localhost",r="http"){this.portNumber=e,this.host=t,this.scheme=r}async init(){await this.updateRayAvailability()}isRayAvailable(){return this.attemptAvailableReset(),mi.rayState===null&&this.updateRayAvailability(),mi.rayState!==null?mi.rayState:!0}attemptAvailableReset(){mi.lastRayStateCheck!==null&&new Date().getTime()-mi.lastRayStateCheck>=3e4&&(mi.rayState=null)}async updateRayAvailability(){let e=!0;if(mi.lastRayStateCheck!==null&&new Date().getTime()-mi.lastRayStateCheck<3e4)return!0;mi.lastRayStateCheck=new Date().getTime();try{await Gt.get(this.getUrlForPath("/locks/__availabilty_check"),{})}catch(t){e=!1,t.response&&(e=!0)}finally{mi.rayState=e}}getUrlForPath(e){var t;return e=e.replace(/^\//,""),`${(t=this.scheme)!=null?t:"http"}://${this.host}:${this.portNumber}/${e}`}async send(e){(mi.rayState===null||mi.lastRayStateCheck===null)&&this.updateRayAvailability();try{e.payloads=this.ensureAllPayloadsHaveAnOrigin(e.payloads),await Gt.post(this.getUrlForPath("/"),e.toArray(),{withCredentials:!1}),await new Promise(t=>setTimeout(t,50))}catch{}}ensureAllPayloadsHaveAnOrigin(e){return e.forEach(t=>{(t.data.origin.file===null||t.data.origin.file===""||typeof t.data.origin.file>"u")&&(t.data.origin.file="/unknown-file.js",t.data.origin.line_number=1,t.data.origin.function_name="unknown")}),e}async lockExists(e){return new Promise(async(t,r)=>{let o;try{o=await Gt.get(this.getUrlForPath(`/locks/${e}`))}catch{return!1}if(o.data.stop_execution){r(new Error("stopping execution"));return}if(typeof o.data.active>"u"){t(o.data);return}t(o.data)})}};ze(Zv,"rayState",!0),ze(Zv,"lastRayStateCheck",null);let Ef=Zv;class UU{color(e){return this}green(){return this.color("green")}orange(){return this.color("orange")}red(){return this.color("red")}purple(){return this.color("purple")}blue(){return this.color("blue")}gray(){return this.color("gray")}}class zU{screenColor(e){return this}screenGreen(){return this.screenColor("green")}screenOrange(){return this.screenColor("orange")}screenRed(){return this.screenColor("red")}screenPurple(){return this.screenColor("purple")}screenBlue(){return this.screenColor("blue")}screenGray(){return this.screenColor("gray")}}class GU{size(e){return this}small(){return this.size("sm")}large(){return this.size("lg")}}class Kc{static removeRayFrames(e){return e.filter(t=>!Kc.isRayFrame(t)&&!Kc.isNodeFrame(t))}static isRayFrame(e){var t;for(const r of this.rayNamespaces())if((t=e.fileName)!=null&&t.includes(r))return!0;return!1}static isNodeFrame(e){var t,r;return((t=e.fileName)==null?void 0:t.includes("node:"))||((r=e.fileName)==null?void 0:r.includes("node_modules"))||!1}static rayNamespaces(){return["ray-node/dist","node-ray/dist","vue-ray/dist","-ray"]}}const PM=console.log.bind({}),HU=(...n)=>{typeof js.client<"u"&&js.client.isRayAvailable()&&js.create().then(e=>e.send(...n)),PM(...n)},DM=class o_{enable(){o_.active=!0,console.log=HU}disable(){o_.active=!1,console.log=PM}active(){return o_.active}};ze(DM,"active",!1);let WU=DM;const BM=class hx{static get(){var e;return(e=hx.hostname)!=null?e:"remote"}static set(e){hx.hostname=e}};ze(BM,"hostname",null);let Jv=BM;class Ul{static convertToPrimitive(e){return e===null?{value:null,isHtml:!1}:typeof e=="string"?{value:e,isHtml:!1}:typeof e=="number"?{value:e,isHtml:!1}:typeof e=="boolean"?{value:e,isHtml:!1}:{value:Ul.prettyFormatForHtml(e),isHtml:!0}}static buildHtmlElement(e,t,r){return`<${e} style="font-size: 0.8rem!important;" class="${t}">${r}`}static prettyFormatForHtml(e){const t=Ol(e,{indent:" "}).replaceAll(" "," ").replace(/\r\n|\r|\n/g,"
").replace(/("[^"]+")/g,this.buildHtmlElement("code","bold text-green-600 p-0","$1")).replace(/Array( |\s)+(\[[^\]]+\])/g,this.buildHtmlElement("code","bold text-gray-500 p-0","$1$2")).replace(/^(\[[^\]]+\])$/g,this.buildHtmlElement("code","bold text-gray-500 p-0","$1")).replace(/(\{.+\})/g,this.buildHtmlElement("code","text-gray-600","$1")).replace(/(Array|Object|Number|Function|Circular|Symbol|WeakMap|Map)/g,this.buildHtmlElement("span","bold text-yellow-600","$1")).replaceAll(/(true|false|null|undefined|NaN)/g,this.buildHtmlElement("span","bold text-indigo-600","$1")).replace(/(: |[,[\]{}])/g,this.buildHtmlElement("span","bold text-orange-400","$1"));return this.buildHtmlElement("code","",t)}}class dn{constructor(){ze(this,"remotePath",null),ze(this,"localPath",null),ze(this,"initialized",!1),ze(this,"data",{type:"",content:"",origin:{function_name:"",file:"",line_number:0,hostname:"remote"}})}replaceRemotePathWithLocalPath(e){if(this.remotePath===null||this.localPath===null)return e;const t=new RegExp(`^${this.remotePath}`);return e.replace(t,this.localPath)}getContent(){return{}}toArray(){return this.initialized||(this.initialized=!0,this.data.type=this.getType(),this.data.content=this.getContent(),this.data.origin.file=this.replaceRemotePathWithLocalPath(this.data.origin.file)),this.data}toJson(){return JSON.stringify(this.toArray())}}class jU extends dn{constructor(e){super(),ze(this,"value"),this.value=e}getType(){return"custom"}getContent(){return{content:this.value,label:"Boolean"}}}class NM extends dn{constructor(e=""){super(),ze(this,"html"),this.html=e}getType(){return"custom"}getContent(){return{content:this.html,label:"HTML"}}}class OM extends dn{constructor(e){super(),ze(this,"values"),this.values=Array.isArray(e)?e:[e]}static createForArguments(e){const t=e.map(r=>Ul.convertToPrimitive(r).value);return new this(t)}getType(){return"log"}getContent(){return{values:this.values}}}class QU extends dn{getType(){return"custom"}getContent(){return{content:null,label:"Null"}}}class kM{constructor(e){ze(this,"values"),this.values=e}static createForValues(e){return new this(e).getPayloads()}static registerPayloadFinder(e){this.payloadFinder=e}getPayloads(){return this.values.map(e=>this.getPayload(e))}getPayload(e){if(typeof e=="boolean")return new jU(e);if(e===null)return new QU;const t=Ul.convertToPrimitive(e);return t.isHtml?new NM(t.value):new OM(t.value)}}ze(kM,"payloadFinder",null);class $U extends dn{constructor(e){super(),ze(this,"frames"),this.frames=Kc.removeRayFrames(e)}getType(){return"caller"}getContent(){var e,t,r,o,i,a,s,l;const c=this.frames.slice(0)[0]||null,u=(o=(r=(t=(e=c==null?void 0:c.getFunctionName())==null?void 0:e.replace("Proxy.",""))==null?void 0:t.split("."))==null?void 0:r.slice(0))!=null?o:[];return{frame:{file_name:this.replaceRemotePathWithLocalPath((i=c==null?void 0:c.getFileName())!=null?i:""),line_number:(c==null?void 0:c.getLineNumber())||0,class:(a=u[0])!=null?a:"",method:u?u.slice(1).join("."):"",vendor_frame:(l=(s=c==null?void 0:c.getFileName())==null?void 0:s.includes("node_modules"))!=null?l:!1}}}}class YU extends dn{getType(){return"clear_all"}}class XU extends dn{constructor(e){super(),ze(this,"color"),this.color=e}getType(){return"color"}getContent(){return{color:this.color}}}class qU extends dn{getType(){return"confetti"}}class KU extends dn{constructor(e){super(),ze(this,"name"),this.name=e}getType(){return"create_lock"}getContent(){return{name:this.name}}}class FM extends dn{constructor(e,t=""){super(),ze(this,"content"),ze(this,"label"),this.content=e,this.label=t}getType(){return"custom"}getContent(){return{content:this.content,label:this.label}}}function ro(n,e){return Math.floor(Math.random()*(e-n+1)+n)}const ZU=n=>JU(n*1e3),JU=n=>{const e=new Date().getTime();for(;new Date().getTime(){const e={"¢":"cent","£":"pound","¥":"yen","€":"euro","©":"copy","®":"reg","<":"lt",">":"gt",'"':"quot","&":"amp","'":"#39"},t=Object.keys(e),r=new RegExp(`[${t.join("")}]`,"g");return n.replace(r,o=>`&${e[o]};`)},tz=n=>" ".repeat(n.length),nz=n=>n.replace(/(\r\n|\r|\n)/g,"
"),eA=(n,e={encodeEntities:!0})=>(e.encodeEntities&&(n=ez(n)),nz(n.replace(/^(\s+)/gm,t=>`${tz(t)}`))),rz=()=>{const n={random:[ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255),ro(1,255)]};return vU(n).toString()},VM=n=>n.length?n[n.length-1]:!1;function UM(n){const e="0123456789abcdef";function t(E){let x,w="";for(x=0;x<=3;x++)w+=e.charAt(E>>x*8+4&15)+e.charAt(E>>x*8&15);return w}function r(E,x){const w=(E&65535)+(x&65535);return(E>>16)+(x>>16)+(w>>16)<<16|w&65535}function o(E,x){return E<>>32-x}function i(E,x,w,L,C,P){return r(o(r(r(x,E),r(L,P)),C),w)}function a(E,x,w,L,C,P,D){return i(x&w|~x&L,E,x,C,P,D)}function s(E,x,w,L,C,P,D){return i(x&L|w&~L,E,x,C,P,D)}function l(E,x,w,L,C,P,D){return i(x^w^L,E,x,C,P,D)}function c(E,x,w,L,C,P,D){return i(w^(x|~L),E,x,C,P,D)}function u(E){let x;const w=(E.length+8>>6)+1,L=new Array(w*16);for(x=0;x>2]|=E.charCodeAt(x)<>2]|=128<s<10?`0${s}`:s,r=s=>{const l=new Intl.DateTimeFormat("en",{timeZoneName:"short"}).formatToParts(s).find(c=>c.type==="timeZoneName");return l?l.value:""},o={YYYY:()=>n.getFullYear(),YY:()=>String(n.getFullYear()).slice(-2),MM:()=>t(n.getMonth()+1),M:()=>n.getMonth()+1,DD:()=>t(n.getDate()),D:()=>n.getDate(),HH:()=>t(n.getHours()),H:()=>n.getHours(),hh:()=>t(n.getHours()%12||12),h:()=>n.getHours()%12||12,mm:()=>t(n.getMinutes()),m:()=>n.getMinutes(),ss:()=>t(n.getSeconds()),s:()=>n.getSeconds(),A:()=>n.getHours()<12?"AM":"PM",a:()=>n.getHours()<12?"am":"pm",T:()=>r(n),Z:()=>{const s=n.getTimezoneOffset();return`${(s>0?"-":"+")+t(Math.floor(Math.abs(s)/60))}:${t(Math.abs(s)%60)}`},z:()=>{const s=n.getTimezoneOffset();return`${(s>0?"-":"+")+t(Math.floor(Math.abs(s)/60))+t(Math.abs(s)%60)}`}};let i="",a=!1;for(let s=0;s${this.err.name}:
${this.err.message}`}}class sz extends dn{constructor(e,t){super(),ze(this,"eventName"),ze(this,"payload"),this.eventName=e,this.payload=t}getType(){return"event"}getContent(){return{name:this.eventName,event:this.payload[0],payload:Ul.convertToPrimitive(this.payload).value,class_based_event:!0}}}class tA extends dn{constructor(e,t={}){super(),ze(this,"exception"),ze(this,"meta",{}),ze(this,"stack"),this.exception=e,this.meta=t}static async make(e,t={}){const r=new tA(e,t);return r.stack=await bf.get(),r}getType(){return"exception"}getContent(){return{class:this.exception.name,message:this.exception.message,frames:this.getFrames(),meta:this.meta}}getFrames(){return this.stack.slice(1).map(e=>{var t,r,o,i;const a=(r=(t=e.functionName)==null?void 0:t.split("."))!=null?r:["unknown","unknown"],s=a.pop();let l=typeof e.functionName!="string"?"unknown":a.pop();return typeof e.functionName>"u"&&(l="unknown"),{file_name:this.replaceRemotePathWithLocalPath((o=e.getFileName())!=null?o:""),line_number:e.getLineNumber(),class:l,method:typeof e.fileName>"u"?"":s,vendor_frame:(i=e.getFileName())==null?void 0:i.includes("node_modules"),snippet:[]}}).filter(e=>!e.file_name.startsWith("node:")).filter(e=>!e.file_name.includes("jest-circus")).filter(e=>e.class!=="Ray"&&e.method!=="exception")}}class lz extends dn{getType(){return"hide_app"}}class cz extends dn{getType(){return"hide"}}class uz extends dn{constructor(e,t={highlight:"none"}){super(),ze(this,"value"),ze(this,"options"),this.value=e,this.options=t}getType(){return"custom"}getContent(){return{content:this.formatMarkupForDisplay(this.value),label:"Markup"}}formatMarkupForDisplay(e){const t=this.formatAndIndentMarkup(e);return this.highlightHtmlMarkup(eA(t,{encodeEntities:!0}))}formatAndIndentMarkup(e){return LM(e.toString(),{indentation:" ",collapseContent:!0,lineSeparator:` +`})}highlightHtmlMarkup(e){return e.replace(/"/g,'"').replace(/="([^"]+)"/g,"="$1"").replace(/(<[A-Za-z\d-]+)(\s| |>)/g,'$1$2').replace(/(<\/[A-Za-z\d-]+)(>)/g,'$1$2')}}class dz extends dn{constructor(e){super(),ze(this,"location"),this.location=e}getType(){return"custom"}getContent(){return{content:``,label:"Image"}}}class fz extends dn{constructor(e){super(),ze(this,"value"),this.value=e}getType(){return"json_string"}getContent(){return{value:JSON.stringify(this.value)}}}class hz extends dn{constructor(e){super(),ze(this,"label"),this.label=e}getType(){return"label"}getContent(){return{label:this.label}}}class pz extends dn{constructor(e,t){super(),ze(this,"name"),ze(this,"isNewTimer",!1),ze(this,"totalTime",0),ze(this,"maxMemoryUsageDuringTotalTime",0),ze(this,"timeSinceLastCall",0),ze(this,"maxMemoryUsageSinceLastCall",0),this.name=e,this.totalTime=t.getDuration(),this.maxMemoryUsageDuringTotalTime=t.getMemory();const r=t.getPeriods();r.length>1&&(this.timeSinceLastCall=VM(r),this.maxMemoryUsageSinceLastCall=0)}getType(){return"measure"}concernsNewTimer(){return this.isNewTimer=!0,this.totalTime=0,this.maxMemoryUsageDuringTotalTime=0,this.timeSinceLastCall=0,this.maxMemoryUsageSinceLastCall=0,this}getContent(){return{name:this.name,is_new_timer:this.isNewTimer,total_time:this.totalTime,max_memory_usage_during_total_time:this.maxMemoryUsageDuringTotalTime,time_since_last_call:this.timeSinceLastCall,max_memory_usage_since_last_call:this.maxMemoryUsageSinceLastCall}}}class mz extends dn{constructor(e){super(),ze(this,"name"),this.name=e}getType(){return"new_screen"}getContent(){return{name:this.name}}}class gz extends dn{constructor(e){super(),ze(this,"text"),this.text=e}getType(){return"notify"}getContent(){return{value:this.text}}}class _z extends dn{getType(){return"remove"}}class vz extends dn{constructor(e){super(),ze(this,"color"),this.color=e}getType(){return"screen_color"}getContent(){return{color:this.color}}}class Az extends dn{getType(){return"separator"}}class yz extends dn{getType(){return"show_app"}}class bz extends dn{constructor(e){super(),ze(this,"size"),this.size=e}getType(){return"size"}getContent(){return{size:this.size}}}class xz extends dn{constructor(e,t="Table"){super(),ze(this,"values"),ze(this,"label"),this.values=e,this.label=t}getType(){return"table"}getContent(){return{values:this.getValues(),label:this.label}}getValues(){if(Array.isArray(this.values))return this.values.map(t=>Ul.convertToPrimitive(t).value);const e={};for(const t in this.values)e[t]=Ul.convertToPrimitive(this.values[t]).value;return e}}class Ez extends dn{constructor(e){super(),this.text=e}getType(){return"custom"}getContent(){return{content:eA(this.text,{encodeEntities:!0}),label:"Text"}}}class Cz extends dn{constructor(e){super(),ze(this,"frames"),ze(this,"startFromIndexNum",null),ze(this,"limitNum",null),this.frames=Kc.removeRayFrames(e)}getType(){return"trace"}getContent(){var e;let t=this.frames.map(r=>{var o,i,a,s;const l=(o=r.getFunctionName())==null?void 0:o.replace("Proxy.","").split(".").slice(0),c=l!=null&&l.length?l.shift():"",u=(i=l==null?void 0:l.join("."))!=null?i:"";return{file_name:this.replaceRemotePathWithLocalPath((a=r.getFileName())!=null?a:""),line_number:r.getLineNumber(),class:c,method:u,vendor_frame:(s=r.getFileName())==null?void 0:s.includes("node_modules")}});return this.limitNum!==null&&(t=t.slice((e=this.startFromIndexNum)!=null?e:0,this.limitNum)),{frames:t}}}class Sz extends dn{constructor(e){super(),ze(this,"value"),this.value=e}getType(){return"custom"}getContent(){return{content:this.formatXmlForDisplay(this.value),label:"XML"}}formatXmlForDisplay(e){const t=this.formatAndIndentXml(e);return this.encodeXml(t)}encodeXml(e){return eA(e,{encodeEntities:!0})}formatAndIndentXml(e){return LM(e.toString(),{indentation:" ",collapseContent:!0,lineSeparator:` +`})}}let GM=class{constructor(e,t,r={}){ze(this,"uuid"),ze(this,"payloads"),ze(this,"meta"),this.uuid=e,this.payloads=t,this.meta=r}toArray(){return{uuid:this.uuid,payloads:this.payloads.map(e=>e.toArray()),meta:this.meta}}toJson(){return JSON.stringify(this.toArray())}};class HM{constructor(e){ze(this,"enable",!0),ze(this,"_host","localhost"),ze(this,"_port",23517),ze(this,"_scheme","http"),ze(this,"remote_path",null),ze(this,"local_path",null),ze(this,"always_send_raw_values",!1),ze(this,"intercept_console_log",!1),ze(this,"enabled_callback",null),ze(this,"sent_payload_callback",null),ze(this,"sending_payload_callback",null),ze(this,"originalSettings"),this.originalSettings=Object.assign({},e);for(const t in e)this[t]=e[t]}set host(e){this._host=e,js.useClient(new Ef(this.port,this.host,this.scheme))}get host(){return this._host}set port(e){this._port=e,js.useClient(new Ef(this.port,this.host,this.scheme))}get port(){return this._port}get scheme(){return this._scheme}set scheme(e){this._scheme=e,js.useClient(new Ef(this.port,this.host,this.scheme))}toObject(){return this.originalSettings}}class nA{constructor(e,t=null){ze(this,"name"),ze(this,"laps",[]),ze(this,"startedAt"),ze(this,"endedAt"),ze(this,"lapTime");var r;this.name=(r=e.name)==null?void 0:r.slice(0),this.laps=e.laps.slice(0),this.startedAt=e.startedAt,this.endedAt=e.endedAt,this.lapTime=t??new Date().getTime()}getDuration(){return this.laps.reduce((e,t)=>t+e,0)}getMemory(e=null){return 0}getPeriods(){return this.laps.slice()}getPreviousDuration(){return VM(this.laps)-(new Date().getTime()-this.lapTime)}}class wz{constructor(e=void 0){ze(this,"name"),ze(this,"laps",[]),ze(this,"startedAt",0),ze(this,"endedAt",0),this.name=e,this.laps=[],this.startedAt=0,this.endedAt=0}initialize(e){this.name=e,this.laps=[],this.startedAt=0,this.endedAt=0}start(e){return this.startedAt=new Date().getTime(),new nA(this)}lap(){const e=new Date().getTime(),t=e-this.startedAt;return this.laps.push(t-this.totalDuration()),new nA(this,e)}stop(){this.endedAt=new Date().getTime();const e=this.endedAt-this.startedAt;return this.laps.push(e-this.totalDuration()),new nA(this)}totalDuration(){return this.laps.reduce((e,t)=>t+e,0)}reset(){return this.initialize(this.name),this}getLaps(){return this.laps}}class Mz{constructor(){ze(this,"counters",{})}async increment(e){typeof this.counters[e]>"u"&&(this.counters[e]=[await qM(),0]);const t=this.counters[e],r=t[0],i=t[1]+1;return this.counters[e]=[r,i],[r,i]}get(e){return typeof this.counters[e]>"u"?0:this.counters[e][1]}clear(){this.counters=[]}setRay(e,t){this.counters[e][0]=t}getCounters(){return this.counters}}class Tz{constructor(){ze(this,"counters",{})}initialize(e,t){const r=`${e.file}:${e.line_number}`;return typeof this.counters[r]>"u"&&(this.counters[r]={counter:0,limit:t,valid:!0}),this.counters[r]}increment(e){const t=`${e.file}:${e.line_number}`;if(typeof this.counters[t]>"u")return{counter:0,limit:0,valid:!1};const{counter:r,limit:o,valid:i}=this.counters[t];return this.counters[t]={counter:r+1,limit:o,valid:i},this.counters[t]}canSendPayload(e){const t=`${e.file}:${e.line_number}`;if(typeof this.counters[t]>"u")return!0;const{counter:r,limit:o,valid:i}=this.counters[t];return i&&(r{this.isBetween(r,e,this.clock.now())&&t++}),t}isBetween(e,t,r){return e.getTimestamp()>=t.getTimestamp()&&e.getTimestamp()<=r.getTimestamp()}}let Rz=class{};class Cf{constructor(e=null){ze(this,"dateStr"),ze(this,"dateTs"),ze(this,"_date"),this._date=e??new Date,this.date=this._date,this.dateStr=this.date.toISOString(),this.dateTs=this.date.getTime()}get date(){return this._date}set date(e){this.dateTs=e.getTime(),this.dateStr=e.toISOString()}static createFrom(e){return new Cf(e)}getTimestamp(){return Math.floor(this.dateTs/1e3)}addSeconds(e){return Cf.createFrom(new Date(this.dateTs+e*1e3))}subSeconds(e){return Cf.createFrom(new Date(this.dateTs-e*1e3))}}class Lz extends Rz{now(){return new Cf}}class Mm{constructor(e=null,t=null){ze(this,"maxCalls"),ze(this,"maxPerSecond"),ze(this,"cache"),ze(this,"notified",!1),this.maxCalls=e,this.maxPerSecond=t,this.cache=new Iz(new Lz)}static disabled(){return new Mm(null,null)}hit(){return this.cache.hit(),this}max(e=null){return this.maxCalls=e,this}perSecond(e=null){return this.maxPerSecond=e,this}isMaxReached(){if(this.maxCalls===null)return!1;const e=this.cache.count()>=this.maxCalls;return e||(this.notified=!1),e}isMaxPerSecondReached(){if(this.maxPerSecond===null)return!1;const e=this.cache.countLastSecond()>=this.maxPerSecond;return e===!1&&(this.notified=!1),e}clear(){return this.maxCalls=null,this.maxPerSecond=null,this.cache.clear(),this}isNotified(){return this.notified}notify(){this.notified=!0}getCache(){return this.cache}}var Sf=(n=>(n.Sending="sending",n.Sent="sent",n))(Sf||{});const Pz="2.1.2",WM=(n,e,t=[])=>{const r=Object.getOwnPropertyDescriptors(e);for(let o of t)delete r[o];Object.defineProperties(n,r)},wf=(n,e=[n])=>{const t=Object.getPrototypeOf(n);return t===null?e:wf(t,[...e,t])},Dz=(...n)=>{if(n.length===0)return;let e;const t=n.map(r=>wf(r));for(;t.every(r=>r.length>0);){const r=t.map(i=>i.pop()),o=r[0];if(r.every(i=>i===o))e=o;else break}return e},jM=(n,e,t=[])=>{var r;const o=(r=Dz(...n))!==null&&r!==void 0?r:Object.prototype,i=Object.create(o),a=wf(o);for(let s of n){let l=wf(s);for(let c=l.length-1;c>=0;c--){let u=l[c];a.indexOf(u)===-1&&(WM(i,u,["constructor",...t]),a.push(u))}}return i.constructor=e,i},rA=n=>n.filter((e,t)=>n.indexOf(e)==t),QM=new WeakMap,Bz=n=>QM.get(n),Nz=(n,e)=>QM.set(n,e),$M=(n,e)=>{var t,r;const o=rA([...Object.getOwnPropertyNames(n),...Object.getOwnPropertyNames(e)]),i={};for(let a of o)i[a]=rA([...(t=n==null?void 0:n[a])!==null&&t!==void 0?t:[],...(r=e==null?void 0:e[a])!==null&&r!==void 0?r:[]]);return i},YM=(n,e)=>{var t,r,o,i;return{property:$M((t=n==null?void 0:n.property)!==null&&t!==void 0?t:{},(r=e==null?void 0:e.property)!==null&&r!==void 0?r:{}),method:$M((o=n==null?void 0:n.method)!==null&&o!==void 0?o:{},(i=e==null?void 0:e.method)!==null&&i!==void 0?i:{})}},Oz=(n,e)=>{var t,r,o,i,a,s;return{class:rA([...(t=n==null?void 0:n.class)!==null&&t!==void 0?t:[],...(r=e==null?void 0:e.class)!==null&&r!==void 0?r:[]]),static:YM((o=n==null?void 0:n.static)!==null&&o!==void 0?o:{},(i=e==null?void 0:e.static)!==null&&i!==void 0?i:{}),instance:YM((a=n==null?void 0:n.instance)!==null&&a!==void 0?a:{},(s=e==null?void 0:e.instance)!==null&&s!==void 0?s:{})}},kz=new Map,Fz=(...n)=>{var e;const t=new Set,r=new Set([...n]);for(;r.size>0;)for(let o of r){const i=wf(o.prototype).map(c=>c.constructor),a=(e=Bz(o))!==null&&e!==void 0?e:[],l=[...i,...a].filter(c=>!t.has(c));for(let c of l)r.add(c);t.add(o),r.delete(o)}return[...t]},Vz=(...n)=>{const e=Fz(...n).map(t=>kz.get(t)).filter(t=>!!t);return e.length==0?{}:e.length==1?e[0]:e.reduce((t,r)=>Oz(t,r))};function Uz(...n){var e,t,r;const o=n.map(s=>s.prototype);function i(...s){for(const l of n)WM(this,new l(...s))}i.prototype=jM(o,i),Object.setPrototypeOf(i,jM(n,null,["prototype"]));let a=i;{const s=Vz(...n);for(let l of(e=s==null?void 0:s.class)!==null&&e!==void 0?e:[]){const c=l(a);c&&(a=c)}XM((t=s==null?void 0:s.static)!==null&&t!==void 0?t:{},a),XM((r=s==null?void 0:s.instance)!==null&&r!==void 0?r:{},a.prototype)}return Nz(a,n),a}const XM=(n,e)=>{const t=n.property,r=n.method;if(t)for(let o in t)for(let i of t[o])i(e,o);if(r)for(let o in r)for(let i of r[o])i(e,o,Object.getOwnPropertyDescriptor(e,o))},qo=class Et extends Uz(UU,GU,zU){constructor(e,t=null,r=null,o=!1){var i,a,s;super(),ze(this,"inCallback",!1),ze(this,"settings"),ze(this,"uuid"),ze(this,"limitOrigin",null),ze(this,"canSendPayload",!0),ze(this,"chaining",!1),ze(this,"chainedPayloads",[]),Et.defaultSettings.not_defined===!0&&(Et.defaultSettings={enable:!0,host:"localhost",port:23517,scheme:"http",local_path:null,remote_path:null,always_send_raw_values:!1,enabled_callback:null,sending_payload_callback:null,sent_payload_callback:null,not_defined:!1}),Et.defaultSettings=Object.assign({},Et.defaultSettings,e.toObject()),this.inCallback=o,this.settings=new HM(Et.defaultSettings),Et.enabled===null&&(Et.enabled=this.settings.enable!==!1),Et.client=(i=t??Et.client)!=null?i:new Ef(this.settings.port,this.settings.host),Et._rateLimiter=(a=Et._rateLimiter)!=null?a:Mm.disabled(),this.uuid=(s=r??Et.fakeUuid)!=null?s:rz(),this.settings.intercept_console_log&&!this.interceptor().active()&&this.interceptor().enable(),this.loadMacros()}static create(e=null,t=null){Et.defaultSettings.not_defined===!0&&(Et.defaultSettings={enable:!0,host:"localhost",port:23517,scheme:"http",local_path:null,remote_path:null,always_send_raw_values:!1,not_defined:!1,intercept_console_log:!1,enabled_callback:null,sending_payload_callback:null,sent_payload_callback:null});const r=new HM(Et.defaultSettings);return new this(r,e,t)}static useDefaultSettings(e){return Et.defaultSettings.not_defined===!0&&(Et.defaultSettings={enable:!0,host:"localhost",port:23517,scheme:"http",local_path:null,remote_path:null,always_send_raw_values:!1,enabled_callback:null,sending_payload_callback:null,sent_payload_callback:null,not_defined:!1}),Et.defaultSettings=Object.assign({},Et.defaultSettings,e),Et.defaultSettings.not_defined=!1,Et.client=new Ef(this.defaultSettings.port,this.defaultSettings.host),this}loadMacros(){for(const e in Et.macros){const t=Et.macros[e];this[e]=t.bind(this)}return this}interceptor(){return Et.interceptor}client(){return Et.client}enable(){return Et.enabled=!0,this}disable(){return Et.enabled=!1,this}enabled(){return typeof this.settings.enabled_callback=="function"?Et.enabled&&this.settings.enabled_callback():Et.enabled}disabled(){return!this.enabled()}static useClient(e){this.client=e}project(e){return Et.projectName=e,this}newScreen(e=""){const t=new mz(e);return this.sendRequest(t)}clearAll(){const e=new YU;return this.sendRequest(e)}clearScreen(){return this.newScreen()}color(e){const t=new XU(e);return this.sendRequest(t)}confetti(){const e=new qU;return this.sendRequest(e)}screenColor(e){const t=new vz(e);return this.sendRequest(t)}label(e){const t=new hz(e);return this.sendRequest(t)}size(e){const t=new bz(e);return this.sendRequest(t)}remove(){const e=new _z;return this.sendRequest(e)}hide(){const e=new cz;return this.sendRequest(e)}notify(e){const t=new gz(e);return this.sendRequest(t)}toJson(...e){const t=e.map(r=>new fz(r));return this.sendRequest(t)}json(...e){const t=e.map(r=>new iz(r));return this.sendRequest(t)}file(e){throw new Error("file() unsupported on node-ray/web.")}image(e){const t=new dz(e);return this.sendRequest(t)}die(e=""){throw new Error(`Ray.die() called: ${e||"no message"}`)}className(e){return this.send(e.constructor.name)}error(e){const t=new az(e,"Error");return this.sendRequest(t).red()}event(e,t=[]){const r=new sz(e,t);return this.sendRequest(r)}async exception(e,t={}){const r=await tA.make(e,t);return await this.sendRequest(r).red()}ban(){return this.send("🕶")}charles(){return this.send("🎶 🎹 🎷 🕺")}table(e,t="Table"){const r=new xz(e,t);return this.sendRequest(r)}async count(e=null){var t;const r=await this.getCaller(),o=UM(`${r==null?void 0:r.getFileName()}${r==null?void 0:r.getLineNumber()}`),[i,a]=await Et.counters.increment((t=e??o)!=null?t:"none");let s="Called ";return e&&(s+=`'${e}' `),s+=`${a} ${a===1?"time":"times"}.`,i.sendCustom(s,"Count"),i}clearCounters(){return Et.counters.clear(),this}async pause(){Et.lockCounter++;const e=UM(`${new Date().getTime()}-${Et.lockCounter}`),t=new KU(e);return this.sendRequest(t),new Promise(async(r,o)=>{let i;do{ZU(1);try{i=await Et.client.lockExists(e)}catch(a){return o(a),!1}if(i!==!0&&i&&i.stop_execution)return o(!1),!1}while(i.active);r(this)})}stopTime(e=""){return e===""?(Et.stopWatches={},this):(typeof Et.stopWatches[e]<"u"&&delete Et.stopWatches[e],this)}async caller(){const e=await bf.get(),t=new $U(e);return this.sendRequest(t)}async trace(){const e=await bf.get();return this.sendRequest(new Cz(e))}measure(e="default"){if(e instanceof Function)return this.measureClosure(e);if(typeof Et.stopWatches[e]>"u"){const i=this.getStopwatch(e);Et.stopWatches[e]=i;const a=i.start(e),s=this.getMeasurePayload(e,a);return s.concernsNewTimer(),this.sendRequest(s)}const r=Et.stopWatches[e].lap(),o=this.getMeasurePayload(e,r);return this.sendRequest(o)}measureClosure(e){const t=this.getStopwatch("closure");t.start("closure"),e();const r=t.stop(),o=this.getMeasurePayload("closure",r);return this.sendRequest(o)}getStopwatch(e){return new wz(e)}getMeasurePayload(e,t){return new pz(e,t)}separator(){const e=new Az;return this.sendRequest(e)}xml(e){const t=new Sz(e);return this.sendRequest(t)}html(e=""){const t=new NM(e);return this.sendRequest(t)}text(e=""){const t=new Ez(e);return this.sendRequest(t)}date(e){const t=new oz(e);return this.sendRequest(t)}raw(...e){if(!e.length)return this;const t=e.map(r=>OM.createForArguments([r]));return this.sendRequest(t)}send(...e){if(!e.length)return this;if(this.settings.always_send_raw_values)return this.raw(...e);const t=kM.createForValues(e);return this.sendRequest(t)}pass(e){return this.send(e),e}showApp(){const e=new yz;return this.sendRequest(e)}hideApp(){const e=new lz;return this.sendRequest(e)}macro(e,t){return Et.macros[e]=t,this[e]=t.bind(this),this}htmlMarkup(e,t={}){const r=new uz(e,t);return this.sendRequest(r)}if(e,t=null){return typeof e=="function"&&(e=e()),e&&t!==null&&t(this),t===null&&(this.canSendPayload=e),this}async limit(e){const t=await this.getCaller();return this.limitOrigin={function_name:t==null?void 0:t.getFunctionName(),file:t==null?void 0:t.getFileName(),line_number:t==null?void 0:t.getLineNumber(),hostname:Jv.get()},Et.limiters.initialize(this.limitOrigin,e),this}async once(...e){const t=await this.getCaller();return this.limitOrigin={function_name:t==null?void 0:t.getFunctionName(),file:t==null?void 0:t.getFileName(),line_number:t==null?void 0:t.getLineNumber(),hostname:Jv.get()},Et.limiters.initialize(this.limitOrigin,1),e.length>0?this.send(...e):this}chain(e){return this.chaining=!0,e(this),this.chaining=!1,this.sendRequest(this.chainedPayloads.slice(0)),this.chainedPayloads=[],this}sendCustom(e,t=""){const r=new FM(e,t);return this.sendRequest(r)}async getOriginFrame(){const e=await bf.get();let t=e.findIndex(o=>{var i;return(i=o.functionName)==null?void 0:i.includes("Ray.sendRequest")});return t===-1&&(t=0),Kc.removeRayFrames(e.slice(t)).slice(0).shift()}async getCaller(){const e=await bf.get();let t=e.findIndex(o=>{var i;return(i=o.functionName)==null?void 0:i.includes("Ray.getCaller")});t===-1&&(t=0);const r=e.slice(t);return r.length===1?r.shift():r.slice(2).shift()}async getOriginData(){const e=await this.getOriginFrame();return{function_name:e==null?void 0:e.getFunctionName(),file:e==null?void 0:e.getFileName(),line_number:e==null?void 0:e.getLineNumber(),hostname:Jv.get()}}prepareMeta(e){return Object.assign({},{node_ray_package_version:Pz,project_name:Et.projectName},e)}executePayloadCallback(e,t=[]){if(!this.inCallback){this.inCallback=!0;try{e===Sf.Sending&&this.settings.sending_payload_callback!==null&&this.settings.sending_payload_callback(new Et(this.settings,this.client(),this.uuid,!0),t),e===Sf.Sent&&this.settings.sent_payload_callback!==null&&this.settings.sent_payload_callback(this)}catch{}this.inCallback=!1}}sendRequest(e,t=[]){if(!this.enabled())return this;if(!this.canSendPayload)return this;if(this.chaining){const r=Array.isArray(e)?e:[e];return this.chainedPayloads.push(...r),this}if(this.limitOrigin!==null){if(!Et.limiters.canSendPayload(this.limitOrigin))return this;Et.limiters.increment(this.limitOrigin)}return Array.isArray(e)||(e=[e]),this.rateLimiter().isMaxReached()||this.rateLimiter().isMaxPerSecondReached()?(this.rateLimiter().notified=!0,this.notifyWhenRateLimitReached(),this):(e.forEach(r=>{this.getOriginData().then(o=>{r.data.origin=o}),r.remotePath=this.settings.remote_path,r.localPath=this.settings.local_path}),this.executePayloadCallback(Sf.Sending,e),Et.client.send(new GM(this.uuid,e,this.prepareMeta(t))),this.rateLimiter().hit(),this.executePayloadCallback(Sf.Sent,e),this)}rateLimiter(){return Et._rateLimiter}async notifyWhenRateLimitReached(){if(this.rateLimiter().isNotified())return;const e=new FM("Rate limit has been reached...","Rate limit"),t=new GM(this.uuid,[e],[]);await Et.client.send(t),this.rateLimiter().notify()}standalone(e){typeof e<"u"&&(e.ray=qM,e.Ray=Et)}};ze(qo,"lockCounter",0),ze(qo,"defaultSettings",{not_defined:!0}),ze(qo,"client"),ze(qo,"projectName",""),ze(qo,"counters",new Mz),ze(qo,"limiters",new Tz),ze(qo,"interceptor",new WU),ze(qo,"fakeUuid"),ze(qo,"stopWatches",{}),ze(qo,"enabled",null),ze(qo,"macros",{}),ze(qo,"_rateLimiter",Mm.disabled());let js=qo;const qM=(...n)=>js.create().send(...n);var zz=Object.defineProperty,Gz=(n,e,t)=>e in n?zz(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Qs=(n,e,t)=>(Gz(n,typeof e!="symbol"?e+"":e,t),t);const oA=n=>{const e=(n==null?void 0:n.name)??"unknown";let t=(n==null?void 0:n.__file)??"src/unknown.js";return e.length&&e!=="unknown"?e:(t=t.split("/").pop()??"unknown.js",t.replace(/\.[\w-_]+$/,""))},Zc=(n,e,t=null)=>{if(t=t??Za.methods.$ray,e.type&&(e=e.type),!((e==null?void 0:e.__file)??!1))return;const r=oA(e);let o=t;typeof t=="function"&&(o=t()),o.table([`component: ${r}`,`lifecycle event: ${n}`,`filename: ${(e==null?void 0:e.__file)??"unknown.js"}`])},Za={beforeMount(n,e=null){Zc("before-mount",n,e)},beforeUnmount(n,e=null){Zc("before-unmount",n,e)},created(n,e=null){Zc("created",n,e)},mounted(n,e=null){Zc("mounted",n,e)},unmounted(n,e=null){Zc("unmounted",n,e)},updated(n,e=null){Zc("updated",n,e)},methods:{$ray(n){return ZM(n)}}};class KM extends js{constructor(){super(...arguments),Qs(this,"component",{$data:{},$refs:{}}),Qs(this,"$watch",()=>{})}data(){if(this.component){let e=Object.assign({},this.component.data);delete e.trackingRays,delete e.trackingStops,e=Object.freeze(e),this.table([e],"Data")}}props(){this.component&&this.table([this.component.props])}element(e){var t,r;return(t=this.component)!=null&&t.refs[e]?this.html(((r=this.component)==null?void 0:r.refs[e]).outerHTML):this}track(e){if(this.component&&typeof this.component.trackingRays[e]>"u"){this.component.trackingRays[e]=Za.methods.$ray(this.component)(this.component.data.name);const t=(r,o)=>{this.component.trackingRays[e]=this.component.trackingRays[e].sendCustom([`tracking: ${oA(this.component.type)}.data.${e}`,`
new value: ${Ol(r)}`,` old value: ${Ol(o)}`,`
changed at: ${new Date().toISOString()}`].join("
"),"Tracking Data")};this.component.trackingStops[e]=this.$watch(()=>this.component.data[e],t,{deep:!0})}}untrack(e){this.component&&typeof this.component.trackingStops[e]<"u"&&(this.component.trackingStops[e](),delete this.component.trackingStops[e]),this.component&&typeof this.component.trackingRays[e]<"u"&&delete this.component.trackingRays[e]}unwatch(e){this.component&&typeof this.component.trackingStops[e]<"u"&&(this.component.trackingStops[e](),delete this.component.trackingStops[e]),this.component&&typeof this.component.trackingRays[e]<"u"&&delete this.component.trackingRays[e]}watch(e,t){if(this.component&&typeof this.component.trackingRays[e]>"u"){this.component.trackingRays[e]=Za.methods.$ray(this.component)(t.value);const r=(o,i)=>{this.component.trackingRays[e]=this.component.trackingRays[e].sendCustom([`watching: ${oA(this.component.type)} ➞ Ref<${e}>`,`
new value: ${Ol(o)}`,` old value: ${Ol(i)}`,`
changed at: ${new Date().toISOString()}`].join("
"),"Watching Ref")};this.component.trackingStops[e]=this.$watch(t,r,{deep:!0})}}static useDefaultSettings(e){return super.useDefaultSettings(e)}send(...e){return super.send(...e)}}function ZM(n){return function(...e){const t=KM.create();return t.component=n,t.$watch=dr,e.length&&t.send(...e),t}}class Hz{constructor(e=null,t=null,r=null){Qs(this,"window"),Qs(this,"ray"),Qs(this,"additionalInfoCallback",null),Qs(this,"onVueError",(o,i)=>{const a=this.additionalInfoHtml(o,i,"vue"),s=o.stack.replace(/^(\w+):(.+)$/m,'
$1
$2
').replace(/\n/,`Stack Trace: +`).replace(/ at ([^ ]+) (.*)$/gm,'
at $1 $2
');i.$ray().sendCustom(`
${s}${a}
`,"Error").small().red()}),Qs(this,"onWindowError",(o,i,a,s,l)=>{var c;const u=this.additionalInfoHtml(l,{message:o,source:i,lineno:a,colno:s},"error"),d=` +
+
${o}
+
${i}
+
${u}`;(c=this.ray)==null||c.html(`
${d}
`,"Error").small().red()}),Qs(this,"onWindowUnhandledRejectionEvent",o=>{var i;const a=this.additionalInfoHtml(null,o,"unhandled_rejection"),s=` +
+
${o.reason}
+
${JSON.stringify(o)}
+
${a}`;(i=this.ray)==null||i.html(`
${s}
`,"Error").small().red()}),this.additionalInfoCallback=e,this.ray=r??Za.methods.$ray(Po()),this.window=t??globalThis}additionalInfo(e,t,r){return this.additionalInfoCallback?this.additionalInfoCallback(e,t,r):""}additionalInfoHtml(e,t,r){let o=this.additionalInfo(e,t,r);return typeof o=="string"&&o.length===0?"":typeof o!="string"&&typeof o!="number"?(o=Ol(o,{indent:4,highlight:!0}),`
Additional Info:
${o}
`):`
Additional Info:
${o}
`}installVueErrorHandler(e){return e.errorHandler=this.onVueError,e}installWindowErrorHandlers(e=null,t=null){this.window&&(this.window.onerror=e??this.onWindowError,this.window.unhandledrejection=t??this.onWindowUnhandledRejectionEvent)}}new Hz;function Wz(n={},e=null){var t,r,o,i,a,s,l,c,u,d,f,h,p,m,g,_;e=e??Po();const A=ZM(e);if(n||(n={}),e.$ray=A,e.trackingRays={},e.trackingStops={},(t=n==null?void 0:n.connection)!=null&&t.host||(r=n==null?void 0:n.connection)!=null&&r.port){const y={};(o=n.connection)!=null&&o.port&&(y.port=n.connection.port),(i=n.connection)!=null&&i.host&&(y.host=n.connection.host),KM.useDefaultSettings(y)}return n.lifecycleEvents=n.lifecycleEvents??{},n.lifecycleEvents.all=((a=n.lifecycleEvents)==null?void 0:a.all)??!1,((s=n.lifecycleEvents)==null?void 0:s.all)===!0&&(n.lifecycleEvents.beforeMount=!0,n.lifecycleEvents.beforeUnmount=!0,n.lifecycleEvents.updated=!0,n.lifecycleEvents.mounted=!0,n.lifecycleEvents.unmounted=!0),(l=n.lifecycleEvents)!=null&&l.beforeMount&&(((c=n.lifecycleMethods)==null?void 0:c.beforeMount)??gE)(()=>Za.beforeMount(e,A())),(u=n.lifecycleEvents)!=null&&u.beforeUnmount&&(((d=n.lifecycleMethods)==null?void 0:d.beforeUnmount)??Fc)(()=>Za.beforeUnmount(e,A())),(f=n.lifecycleEvents)!=null&&f.updated&&(((h=n.lifecycleMethods)==null?void 0:h.updated)??_E)(()=>Za.updated(e,A())),(p=n.lifecycleEvents)!=null&&p.mounted&&(((m=n.lifecycleMethods)==null?void 0:m.mounted)??$o)(()=>Za.mounted(e,A())),(g=n.lifecycleEvents)!=null&&g.unmounted&&(((_=n.lifecycleMethods)==null?void 0:_.unmounted)??Wd)(()=>Za.unmounted(e,A())),vt(e.$ray)}const zi=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},jz={class:"rounded-xl mb-[8px] md:mb-[10px] xl:mb-5"},Qz={class:"flex items-center space-x-4"},$z={class:"text-base md:text-lg font-medium"},Yz={id:"divContent",class:"bg-gray-50 px-4 py-2 rounded-b-xl"},iA=zi({__name:"Tab",props:{label:{type:String},modelValue:String,tabNumber:{type:String}},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e;return(o,i)=>(he(),ye("div",jz,[K("div",{class:Qt(["h-tabheight-sm md:h-tabheight-md lg:h-tabheight-lg p-[10px] lg:p-5 cursor-pointer select-none rounded-xl flex items-center justify-between w-full transition-colors duration-300 group",n.modelValue==n.tabNumber?"bg-secondary-green text-white":"bg-white text-secondary-green"]),onClick:i[0]||(i[0]=a=>n.modelValue==n.tabNumber?r("update:modelValue",""):r("update:modelValue",t.tabNumber))},[K("div",Qz,[K("div",{class:Qt(["w-8 h-8 border rounded-full flex items-center justify-center text-base lg:text-lg ",n.modelValue==n.tabNumber?"border-white text-white":"border-text-secondary-green text-secondary-green"])},Ae(n.tabNumber),3),K("span",$z,Ae(n.label),1)]),K("div",{class:Qt(["w-15 lg:w-16 h-10 md:h-12 rounded-md flex items-center justify-center transition-colors duration-300 ",n.modelValue==n.tabNumber?"bg-tertiary-green":"bg-background-light group-hover:bg-secondary-green"])},[(he(),ye("svg",{class:Qt(["group-hover:text-white duration-300",n.modelValue==n.tabNumber?"text-white rotate-90":"text-secondary-green rotate-0"]),width:"17",height:"11",viewBox:"0 0 17 11",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...i[1]||(i[1]=[K("path",{d:"M16.457 5.79239L11.957 10.2924L11.6133 10.6361L10.8945 9.91739L11.2695 9.57364L14.8945 5.91739L1.30078 5.91739L0.800781 5.91739L0.800781 4.91739L1.30078 4.91739L14.8945 4.91739L11.2383 1.29239L10.8945 0.917391L11.6133 0.229891L11.957 0.573641L16.457 5.07364L16.8008 5.41739L16.457 5.79239Z",fill:"currentColor"},null,-1)])],2))],2)],2),Kn(K("div",Yz,[Ro(o.$slots,"default",{},void 0,!0)],512),[[hC,n.modelValue==n.tabNumber]])]))}},[["__scopeId","data-v-35c45e13"]]),Pr=1,JM=Zr({internalOverrideLimits:!1}),Ve={maximaleTotaleBreedteCm:600,maximaleTotaleHoogteCm:400,maximaleTotaleHoogteCmMetZijpanelen:300,get zijPaneelMinBreedte(){return Kz(20,10)},zijPaneelMaxBreedte:150,maxZijpanelenLinks:4,maxZijpanelenRechts:4,bovenLichtMinHoogte:20,bovenLichtMaxHoogte:150,vasteWandMinPanelen:1,vasteWandMaxPanelen:6,vasteWandMaxLiggers:4,vasteWandMaxStaanders:4,vasteWandMinBreedte:15,vasteWandMaxBreedte:150,vasteWandMinHoogte:30,vasteWandMaxHoogte:300,vasteWandOffsetMmLiggerStripRoede:30,vasteWandOffsetMmLiggerTRoede:17,taatsDeurSpelingMm:5,taatsDeurMinDeuren:1,taatsDeurMaxDeuren:2,taatsDeurMaxLiggers:4,taatsDeurMaxStaanders:4,taatsDeurMinBreedte:30,taatsDeurMaxBreedte:150,taatsDeurMinHoogte:150,taatsDeurMaxHoogte:300,taatsDeurDefaultBreedteZijpaneel:60,taatsDeurMinBreedteZijpaneel:25,taatsDeurMaxBreedteZijpaneel:150,taatsDeurMinHoogteZijpaneel:150,taatsDeurMaxHoogteZijpaneel:300,taatsDeurHandGreepMinHoogte:90,taatsDeurHandGreepMaxHoogte:120,taatsDeurHandGreepDefaultHoogte:105,taatsDeurHandgreepProfiellengteOffset:150,taatsDeurHandgreepOffset:17,taatsDeurOffsetMmLiggerStripRoede:35,taatsDeurOffsetMmLiggerTRoede:22,taatsDeurOffsetMmHandgreep:17,scharnierDeurMinBreedte:50,scharnierDeurMaxBreedte:120,scharnierDeurMinHoogte:150,scharnierDeurMaxHoogte:300,scharnierDeurMinDeuren:1,scharnierDeurMaxDeuren:2,scharnierDeurMaxZijpanelenLinks:4,scharnierDeurMaxZijpanelenRechts:4,scharnierDeurMinBreedteZijpaneel:25,scharnierDeurMaxBreedteZijpaneel:150,scharnierDeurMinHoogteZijpaneel:150,scharnierDeurMaxHoogteZijpaneel:300,scharnierDeurOffsetMmLiggerStripRoede:36.5,scharnierDeurOffsetMmLiggerTRoede:23.5,scharnierDeurKozijnBreedteMm:17,scharnierDeurFrameBreedteMm:31.5,scharnierDeurSpelingMm:5,scharnierDeurSmalslotStijlBreedteMm:30,scharnierDeurOffsetMmHandgreep:18.5,scharnierDeurProfielSlotstijl:23.5,scharnierDeurValdorpelBreedteMinCm:71,scharnierDeurValdorpelBreedteMaxCm:120,schuifDeurMinBreedte:50,schuifDeurMaxBreedte:150,schuifDeurMinDeuren:1,schuifDeurMaxDeuren:6,schuifDeurMinHoogte:150,schuifDeurMaxHoogte:300,schuifDeurOffsetMmLiggerStripRoede:30,schuifDeurOffsetMmLiggerTRoede:17,schuifDeurOffsetMmHandgreep:17,opdekDeurMinDeuren:1,opdekDeurMaxDeuren:1,opdekDeurMinBreedte:50,opdekDeurMaxBreedte:110,opdekDeurMinHoogte:150,opdekDeurMaxHoogte:280,opdekDeurOffsetMmLiggerStripRoede:33.5,opdekDeurOffsetMmLiggerTRoede:20.5,opdekDeurOffsetMmHandgreep:27.5,vouwwandMinPanelen:2,vouwwandMaxPanelen:7,vouwwandMaxLiggers:4,vouwwandMinBreedte:50,vouwwandMaxBreedte:95,vouwwandMinHoogte:150,vouwwandMaxHoogte:300,vouwwandOffsetMmLiggerStripRoede:10,vouwwandOffsetMmHandgreep:22.5},Xz={indexKey:"",name:"Configuratie",style:"style-1",type:"taatsdeur",deur_aantal:1,breedte:90,hoogte:250,deurbreedtevariabel:!1,bovenlicht:!1,bovenlicht_verberg_tussenstijl:!1,bovenlicht_stijl_zijpaneel:!1,hoogtebovenlicht:20,deurbreedtematen:[],deur_aantal_ligger:2,asymmetrisch:!1,asymmetrisch_ligger_maten:[],asymmetrisch_staander_maten_deur:[],asymmetrisch_staander_maten_zijpaneel:[],deur_aantal_staander:0,zijpaneel:"",zijpaneel_aantal_staander:0,zijpaneel_aantal_links:0,zijpaneel_aantal_rechts:0,zijpaneel_breedte_links:[],zijpaneel_breedte_rechts:[],kleur_materiaal:"KLEUR_ALUMINIUM_ZWART",kleur_ral:9001,ral_opmerking:"",kleur_glas:"GLAS_BLANK",handgreep:"HANDGREEP_HOEK",typeroede:"PLATTE_ROEDE",draairichting:"DRAAI_NTB",schuifrichting:"SCHUIF_NTB",actievedeur:"ACTIEVEDEUR_NTB",materiaalsoortbestaandkozijn:"",antikalk:!1,tienmmglas:!1,verbergtussenstaanders:!0,softclose:!1,verberg_rail_in_wand:!1,softclose_dubbel:!1,fineer:!1,ondergeleiding:!1,industrielerail:!1,hogeonderdorpel:!1,opm_actievedeur:"",opm_draairichting:"",opm_schuifrichting:"",valdorpel:!1,variabeledeurbreedte_maten:[],cilinder:!1,type_vergrendeling:"geen",hoekkoker_aantal:0,stabilisatie_aantal:0,opmerking:"",date_created:new Date,price:0,vat:0,maatvoering_weergeven:!1,roede_configuratie:"RV09",roede_design_keuze:!1,roede_design_roedes_doorlopen_zijlicht_bovenlicht:!1},qz=[{value:"RV01",label:"De Bergense",tooltip:"",imageSrc:"/Uploads/aluwdoors-configurator-roedeconfiguratie-rv01-de-bergense.svg",svg:` + + + + `},{value:"RV02",label:"De Brabantse",tooltip:"",svg:` + + + `},{value:"RV03",label:"De Dokkumse",tooltip:"",svg:` + + + + + + `},{value:"RV04",label:"De Friesse",tooltip:"",svg:` + + + + `},{value:"RV05",label:"De Giethoornse",tooltip:"??",svg:` + + + `},{value:"RV06",label:"De Goudse",tooltip:"??",svg:` + + + `},{value:"RV07",label:"De Hollandse",tooltip:"??",svg:` + + + + `},{value:"RV08",label:"De Laarbeekse",tooltip:"??",svg:` + + + + `},{value:"RV10",label:"De Nunspeetse",tooltip:"??",svg:` + + + + `},{value:"RV11",label:"De Utrechtse",tooltip:"??",svg:` + + + + `},{value:"RV12",label:"De Veluwse",tooltip:"??",svg:` + + + `},{value:"RV13",label:"De Waterlandse",tooltip:"??",svg:` + + + + `},{value:"RV14",label:"De Zaanse",tooltip:"??",svg:` + + + + `},{value:"RV15",label:"De Kinderdijkse",tooltip:"??",svg:` + + + `},{value:"RV16",label:"De Kampense",tooltip:"??",svg:` + + + + `}],aA={RV01:{Links:{1:{min_hoogte:750,max_hoogte:1500}},Rechts:{1:{min_hoogte:750,max_hoogte:1500}},Boven:{1:{min_breedte:250,max_breedte:750}}},RV02:{Boven:{1:{min_breedte:250,max_breedte:750}}},RV03:{Links:{1:{min_hoogte:1285,max_hoogte:2785}},Rechts:{1:{min_hoogte:1285,max_hoogte:2785}},Boven:{1:{min_breedte:90,max_breedte:215},2:{min_breedte:410,max_breedte:1285}}},RV04:{Links:{1:{min_hoogte:915,max_hoogte:1815},2:{min_hoogte:515,max_hoogte:1315}},Rechts:{1:{min_hoogte:1385,max_hoogte:2685}}},RV05:{Links:{1:{min_hoogte:1660,max_hoogte:2410,min_breedte:1810,max_breedte:2410},2:{min_hoogte:-160,max_hoogte:590,min_breedte:1210,max_breedte:590}},Rechts:{1:{min_hoogte:1960,max_hoogte:2710,min_breedte:1910,max_breedte:2710},2:{min_hoogte:-460,max_hoogte:290,min_breedte:1110,max_breedte:290}}},RV06:{Links:{1:{min_hoogte:750,max_hoogte:1500}},Rechts:{1:{min_hoogte:750,max_hoogte:1500}},Boven:{1:{min_breedte:250,max_breedte:750}}},RV07:{Boven:{1:{min_breedte:160,max_breedte:660},2:{min_breedte:340,max_breedte:840}}},RV08:{Links:{1:{min_hoogte:1335,max_hoogte:2685}},Rechts:{1:{min_hoogte:165,max_hoogte:315}},Boven:{1:{min_breedte:115,max_breedte:315}}},RV09:{Links:{},Rechts:{}},RV10:{Links:{},Rechts:{1:{min_hoogte:1335,max_hoogte:2685}}},RV11:{Boven:{1:{min_breedte:250,max_breedte:750}}},RV12:{Links:{1:{min_hoogte:1235,max_hoogte:2735}},Rechts:{1:{min_hoogte:1235,max_hoogte:2735}},Boven:{1:{min_breedte:165,max_breedte:265}}},RV13:{Links:{},Rechts:{1:{min_hoogte:1315,max_hoogte:2615},2:{min_hoogte:1015,max_hoogte:2115}}},RV14:{Links:{1:{min_hoogte:315,max_hoogte:615}},Rechts:{1:{min_hoogte:1285,max_hoogte:2685}}},RV15:{Links:{1:{min_hoogte:1555,max_hoogte:2305,min_breedte:0,max_breedte:0,min_compensatie:1882,max_compensatie:2305},2:{min_hoogte:750,max_hoogte:1500,min_compensatie:1500,max_compensatie:1500},3:{min_hoogte:-55,max_hoogte:695,min_compensatie:1118,max_compensatie:695}},Rechts:{1:{min_hoogte:1555,max_hoogte:2305,min_compensatie:1882,max_compensatie:2305},2:{min_hoogte:750,max_hoogte:1500,min_compensatie:1500,max_compensatie:1500},3:{min_hoogte:-55,max_hoogte:695,min_compensatie:1118,max_compensatie:695}},Boven:{1:{min_breedte:250,max_breedte:750}}},RV16:{Links:{1:{min_hoogte:750,max_hoogte:2115}},Rechts:{1:{min_hoogte:750,max_hoogte:885}},Boven:{1:{min_breedte:250,max_breedte:750}}}},sA=[{value:"KLEUR_ALUMINIUM_ZWART",label:"step3.material_colours.black",image:"/Uploads/aluwdoors-configurator-metaalkleur-zwart.jpg",tooltip:"step3.material_colours_tooltip.black",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur","vouwwand"]},{value:"KLEUR_ALUMINIUM_BRONS",label:"step3.material_colours.bronze",image:"/Uploads/aluwdoors-configurator-metaalkleur-brons.jpg",tooltip:"step3.material_colours_tooltip.bronze",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"KLEUR_ALUMINIUM_ANTRACIET",label:"step3.material_colours.black_grey",image:"/Uploads/aluwdoors-configurator-metaalkleur-antraciet.jpg",tooltip:"step3.material_colours_tooltip.black_grey",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"KLEUR_ALUMINIUM_BEIGE",label:"step3.material_colours.light_grey",image:"/Uploads/aluwdoors-configurator-metaalkleur-beige.jpg",tooltip:"step3.material_colours_tooltip.light_grey",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"KLEUR_ALUMINIUM_GOLD",label:"step3.material_colours.gold",image:"/Uploads/aluwdoors-configurator-metaalkleur-goud.jpg",tooltip:"step3.material_colours_tooltip.gold",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"KLEUR_ALUMINIUM_RAL",label:"step3.material_colours.ral",image:"/Uploads/aluwdoors-configurator-metaalkleur-ral-keuze.jpg",tooltip:"step3.material_colours_tooltip.ral",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]}],lA=[{value:"FINEER_RM_21_NATURAL",label:"step3.veneer_colours.natural",image:"/Uploads/RMC-Oil-Plus-2C_21-Natural_Print.jpg",tooltip:"Fineer",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"FINEER_RM_10_CHOCOLATE",label:"step3.veneer_colours.chocolate",image:"/Uploads/RMC-Oil-Plus-2C_10-Chocolate_Print.jpg",tooltip:"Fineer",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]}],eT=[{value:"GLAS_BLANK",label:"step3.glass_colours.clear",image:"/Uploads/aluwdoors-configurator-glaskleur-blank.jpg",tooltip:"Transparant glas zonder kleuring",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur","vouwwand"]},{value:"GLAS_BRONS",label:"step3.glass_colours.bronze_clear",image:"/Uploads/aluwdoors-configurator-glaskleur-brons.jpg",tooltip:"Licht getint glas met bronskleur",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"GLAS_GRIJS",label:"step3.glass_colours.grey_clear",image:"/Uploads/aluwdoors-configurator-glaskleur-grijs.jpg",tooltip:"Donker getint glas met grijstint",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"GLAS_BRONS_MAT",label:"step3.glass_colours.bronze_satin",image:"/Uploads/aluwdoors-configurator-glaskleur-mat-brons.jpg",tooltip:"Mat glas met bronskleurige tint",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"GLAS_MAT",label:"step3.glass_colours.satin",image:"/Uploads/aluwdoors-configurator-glaskleur-mat-blank.jpg",tooltip:"Mat glas zonder kleuring",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]},{value:"GLAS_GRIJS_MAT",label:"step3.glass_colours.grey_satin",image:"/Uploads/aluwdoors-configurator-glaskleur-mat-zwart.jpg",tooltip:"Mat glas met grijstint",visible:["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"]}],cA=[{value:"HANDGREEP_HOEK",label:"step3.aluminium_handles.corner",image:"/Uploads/aluwdoors-configurator-handgreep-hoekgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_BUIS",label:"step3.aluminium_handles.tube",image:"/Uploads/aluwdoors-configurator-handgreep-buisgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_BEUGEL",label:"step3.aluminium_handles.bracket",image:"/Uploads/aluwdoors-configurator-handgreep-beugelgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_KOKER_VOLLEDIG",label:"step3.aluminium_handles.full_box",image:"/Uploads/aluwdoors-configurator-handgreep-buisgreep-volledig.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_KOKERGREEP",label:"step3.aluminium_handles.box",image:"/Uploads/aluwdoors-configurator-handgreep-kokergreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_MAANGREEP",label:"step3.aluminium_handles.moon",image:"/Uploads/aluwdoors-configurator-handgreep-maangreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_KOMGREEP",label:"step3.aluminium_handles.bowl",image:"/Uploads/aluwdoors-configurator-handgreep-komgreep.svg",tooltip:"??",visible:["schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_GEEN",label:"step3.aluminium_handles.none",image:"/Uploads/aluwdoors-configurator-handgreep-greeploos.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur","vouwwand"],activeFromVersion:0,activeToVersion:Pr},{value:"HANDGREEP_KLINK_1",label:"step3.aluminium_handles.lever",image:"/Uploads/aluwdoors-configurator-handgreep-klink-1.svg",tooltip:"??",visible:["scharnierdeur","opdekdeur","vouwwand"],activeFromVersion:0,activeToVersion:Pr}],tT=[{value:"FINEER_HANDGREEP_HOEKGREEP",label:"step3.wooden_handles.corner",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-hoekgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_OVAALGREEP",label:"step3.wooden_handles.oval",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-ovaalgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_MAANGREEP",label:"step3.wooden_handles.moon",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-maangreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_KOMGREEP",label:"step3.wooden_handles.bowl",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-komgreep.svg",tooltip:"??",visible:["schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_BEUGELGREEP",label:"step3.wooden_handles.bow",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-beugelgreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_KOKERGREEP",label:"step3.wooden_handles.box",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-kokergreep.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:10,activeToVersion:10},{value:"FINEER_HANDGREEP_HOEKGREEP_1050",label:"step3.wooden_handles.corner_1050",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-hoekgreep-1050.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr},{value:"FINEER_HANDGREEP_HOEKGREEP_1200",label:"step3.wooden_handles.corner_1200",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-hoekgreep-1200.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:10,activeToVersion:10},{value:"FINEER_HANDGREEP_GEEN",label:"step3.wooden_handles.none",image:"/Uploads/aluwdoors-configurator-fineer-handgreep-geen.svg",tooltip:"??",visible:["taatsdeur","scharnierdeur","schuifdeur"],activeFromVersion:0,activeToVersion:Pr}];function Kz(n,e){return JM.internalOverrideLimits?e:n}function nT(n){switch(n){case"vaste-wand":return Ve.vasteWandMinPanelen;case"taatsdeur":return Ve.taatsDeurMinDeuren;case"scharnierdeur":return Ve.scharnierDeurMinDeuren;case"schuifdeur":return Ve.schuifDeurMinDeuren;case"opdekdeur":return Ve.opdekDeurMinDeuren;case"vouwwand":return Ve.vouwwandMinPanelen;default:return 1}}function rT(n){switch(n){case"vaste-wand":return Ve.vasteWandMaxPanelen;case"taatsdeur":return Ve.taatsDeurMaxDeuren;case"scharnierdeur":return Ve.scharnierDeurMaxDeuren;case"schuifdeur":return Ve.schuifDeurMaxDeuren;case"opdekdeur":return Ve.opdekDeurMaxDeuren;case"vouwwand":return Ve.vouwwandMaxPanelen;default:return 1}}function oT(n){switch(n){case"vaste-wand":return Ve.vasteWandMinBreedte;case"taatsdeur":return Ve.taatsDeurMinBreedte;case"scharnierdeur":return Ve.scharnierDeurMinBreedte;case"schuifdeur":return Ve.schuifDeurMinBreedte;case"opdekdeur":return Ve.opdekDeurMinBreedte;case"vouwwand":return Ve.vouwwandMinBreedte;default:return 50}}function iT(n){switch(n){case"vaste-wand":return Ve.vasteWandMaxBreedte;case"taatsdeur":return Ve.taatsDeurMaxBreedte;case"scharnierdeur":return Ve.scharnierDeurMaxBreedte;case"schuifdeur":return Ve.schuifDeurMaxBreedte;case"opdekdeur":return Ve.opdekDeurMaxBreedte;case"vouwwand":return Ve.vouwwandMaxBreedte;default:return 100}}function aT(n){switch(n){case"vaste-wand":return Ve.vasteWandMinHoogte;case"taatsdeur":return Ve.taatsDeurMinHoogte;case"scharnierdeur":return Ve.scharnierDeurMinHoogte;case"schuifdeur":return Ve.schuifDeurMinHoogte;case"opdekdeur":return Ve.opdekDeurMinHoogte;case"vouwwand":return Ve.vouwwandMinHoogte;default:return 50}}function sT(n){switch(n){case"vaste-wand":return Ve.vasteWandMaxHoogte;case"taatsdeur":return Ve.taatsDeurMaxHoogte;case"scharnierdeur":return Ve.scharnierDeurMaxHoogte;case"schuifdeur":return Ve.schuifDeurMaxHoogte;case"opdekdeur":return Ve.opdekDeurMaxHoogte;case"vouwwand":return Ve.vouwwandMaxHoogte;default:return 300}}function Zz(n,e,t,r){return e&&(t>0||r>0)?Ve.maximaleTotaleHoogteCmMetZijpanelen:Ve.maximaleTotaleHoogteCm}const Jz={class:"flex items-center justify-center text-center px-5 py-2 h-10.5 md:h-11 xl:h-13 mt-4 mb-3 bg-primary-green rounded text-tertiary-green hover:bg-button-hover-green transition-colors duration-200 focus:outline-hidden"},eG={class:"pr-2 text-base"},Tm={__name:"ButtonNextStep",props:{label:{type:String,required:!0}},setup(n){return(e,t)=>(he(),ye("button",Jz,[K("div",eG,Ae(n.label),1),Ro(e.$slots,"icon")]))}},tG={class:"flex flex-col p-2 lg:p-5 gap-y-7"},nG={class:"grid grid-cols-2 gap-4"},rG={key:0},oG={key:1},iG={class:"grid grid-cols-2 gap-4 mt-2"},aG={key:2},sG={key:3,class:"border-1 border-border-gray rounded-xl p-4 mt-4"},lG={class:"grid grid-cols-2 gap-4 items-center py-1"},cG={class:"grid grid-cols-1 gap-4"},uG={key:0},dG={key:1},fG={key:4},hG={class:"grid grid-cols-2 gap-4"},pG={key:0},mG={class:"flex justify-center"},gG={__name:"Step1",props:{modelValue:{type:Object,required:!0},baseUrl:{type:String,default:""}},emits:["setTabValue","update:modelValue"],setup(n,{emit:e}){const t=n,r=e,o=bt(()=>nT(t.modelValue.type)),i=bt(()=>rT(t.modelValue.type)),a=bt(()=>oT(t.modelValue.type)),s=bt(()=>iT(t.modelValue.type)),l=bt(()=>aT(t.modelValue.type)),c=bt(()=>sT(t.modelValue.type));return(u,d)=>{var y,b,E,x,w,L,C,P,D,Q,re,G,se;const f=Yt("FormHeader"),h=Yt("FormRadioButton"),p=Yt("FormInputCm"),m=Yt("UserMessage"),g=Yt("FormButtonGroupQuantity"),_=Yt("FormInputCheckbox"),A=Yt("FormButtonGroupChoice");return he(),ye(Nt,null,[K("div",tG,[K("div",null,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.door_type")),1)]),_:1}),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[0]||(d[0]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.fixed_panel"),setValueOnClick:"vaste-wand",tooltipTitle:u.$t("step1.fixed_panel"),tooltipDescription:u.$t("step1.fixed_panel_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-vaste-wand.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"]),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[1]||(d[1]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.pivot_door"),setValueOnClick:"taatsdeur",tooltipTitle:u.$t("step1.pivot_door"),tooltipDescription:u.$t("step1.pivot_door_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-taatsdeur.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"]),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[2]||(d[2]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.hinged_door"),setValueOnClick:"scharnierdeur",tooltipTitle:u.$t("step1.hinged_door"),tooltipDescription:u.$t("step1.hinged_door_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-scharnierdeur.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"]),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[3]||(d[3]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.sliding_door"),setValueOnClick:"schuifdeur",tooltipTitle:u.$t("step1.sliding_door"),tooltipDescription:u.$t("step1.sliding_door_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-schuifdeur.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"]),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[4]||(d[4]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.rebated_door"),setValueOnClick:"opdekdeur",tooltipTitle:u.$t("step1.rebated_door"),tooltipDescription:u.$t("step1.rebated_door_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-opdekdeur.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"]),Be(h,{modelValue:n.modelValue.type,"onUpdate:modelValue":d[5]||(d[5]=ee=>n.modelValue.type=ee),labelDescription:u.$t("step1.folding_wall"),setValueOnClick:"vouwwand",tooltipTitle:u.$t("step1.folding_wall"),tooltipDescription:u.$t("step1.folding_wall_explain"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-vouwwand.jpg"},null,8,["modelValue","labelDescription","tooltipTitle","tooltipDescription","tooltipImage"])]),K("div",null,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.dimensions")),1)]),_:1}),K("div",nG,[!n.modelValue.deurbreedtevariabel||n.modelValue.deurbreedtevariabel&&n.modelValue.deur_aantal==1?(he(),gt(p,{key:0,modelValue:n.modelValue.breedte,"onUpdate:modelValue":d[6]||(d[6]=ee=>n.modelValue.breedte=ee),labelDescription:u.$t("step1.width"),min:a.value,max:s.value},null,8,["modelValue","labelDescription","min","max"])):Pe("",!0),Be(p,{modelValue:n.modelValue.hoogte,"onUpdate:modelValue":d[7]||(d[7]=ee=>n.modelValue.hoogte=ee),labelDescription:u.$t("step1.height"),min:l.value,max:c.value},null,8,["modelValue","labelDescription","min","max"])]),(b=(y=n.modelValue)==null?void 0:y.userMessages)!=null&&b.underWidthHeightInput?(he(),gt(m,{key:0,modelValue:n.modelValue.userMessages.underWidthHeightInput,"onUpdate:modelValue":d[8]||(d[8]=ee=>n.modelValue.userMessages.underWidthHeightInput=ee)},null,8,["modelValue"])):Pe("",!0),(x=(E=n.modelValue)==null?void 0:E.userMessages)!=null&&x.limitPanelWidth?(he(),gt(m,{key:1,modelValue:n.modelValue.userMessages.limitPanelWidth,"onUpdate:modelValue":d[9]||(d[9]=ee=>n.modelValue.userMessages.limitPanelWidth=ee)},null,8,["modelValue"])):Pe("",!0),(L=(w=n.modelValue)==null?void 0:w.userMessages)!=null&&L.limitPanelHeight?(he(),gt(m,{key:2,modelValue:n.modelValue.userMessages.limitPanelHeight,"onUpdate:modelValue":d[10]||(d[10]=ee=>n.modelValue.userMessages.limitPanelHeight=ee)},null,8,["modelValue"])):Pe("",!0)]),["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","vouwwand"].includes(n.modelValue.type)?(he(),ye("div",rG,[["vaste-wand"].includes(n.modelValue.type)?(he(),gt(f,{key:0},{default:ot(()=>[Ye(Ae(u.$t("step1.number_of_panels")),1)]),_:1})):Pe("",!0),["taatsdeur","scharnierdeur","schuifdeur","vouwwand"].includes(n.modelValue.type)?(he(),gt(f,{key:1},{default:ot(()=>[Ye(Ae(u.$t("step1.number_of_doors")),1)]),_:1})):Pe("",!0),Be(g,{modelValue:n.modelValue.deur_aantal,"onUpdate:modelValue":d[11]||(d[11]=ee=>n.modelValue.deur_aantal=ee),minCount:o.value,maxCount:i.value},null,8,["modelValue","minCount","maxCount"]),(P=(C=n.modelValue)==null?void 0:C.userMessages)!=null&&P.underPanelQuantityInput?(he(),gt(m,{key:2,modelValue:n.modelValue.userMessages.underPanelQuantityInput,"onUpdate:modelValue":d[12]||(d[12]=ee=>n.modelValue.userMessages.underPanelQuantityInput=ee)},null,8,["modelValue"])):Pe("",!0)])):Pe("",!0),(D=n.modelValue)!=null&&D.bovenlichtVisible?(he(),ye("div",oG,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.top_light")),1)]),_:1}),Be(_,{checked:n.modelValue.bovenlicht,"onUpdate:checked":d[13]||(d[13]=ee=>n.modelValue.bovenlicht=ee),value:u.$t("step1.top_light_above_doorpanel")},null,8,["checked","value"]),n.modelValue.bovenlicht&&n.modelValue.deur_aantal>1?(he(),gt(_,{key:0,checked:n.modelValue.bovenlicht_verberg_tussenstijl,"onUpdate:checked":d[14]||(d[14]=ee=>n.modelValue.bovenlicht_verberg_tussenstijl=ee),value:u.$t("step1.top_light_hide_intermediate_style")},null,8,["checked","value"])):Pe("",!0),n.modelValue.bovenlicht&&(n.modelValue.zijpaneel_aantal_links>0||n.modelValue.zijpaneel_aantal_rechts>0)?(he(),gt(_,{key:1,checked:n.modelValue.bovenlicht_stijl_zijpaneel,"onUpdate:checked":d[15]||(d[15]=ee=>n.modelValue.bovenlicht_stijl_zijpaneel=ee),value:u.$t("step1.top_light_style_continued_in_side_panel")},null,8,["checked","value"])):Pe("",!0),K("div",iG,[n.modelValue.bovenlicht?(he(),gt(p,{key:0,modelValue:n.modelValue.hoogtebovenlicht,"onUpdate:modelValue":d[16]||(d[16]=ee=>n.modelValue.hoogtebovenlicht=ee),labelDescription:u.$t("step1.top_light_height")},null,8,["modelValue","labelDescription"])):Pe("",!0)]),(Q=n.modelValue)!=null&&Q.userMessages?(he(),gt(m,{key:2,modelValue:n.modelValue.userMessages.underBovenlichtInput,"onUpdate:modelValue":d[17]||(d[17]=ee=>n.modelValue.userMessages.underBovenlichtInput=ee)},null,8,["modelValue"])):Pe("",!0)])):Pe("",!0),(re=n.modelValue)!=null&&re.deurbreedtevariabelVisible?(he(),ye("div",aG,[Be(_,{checked:n.modelValue.deurbreedtevariabel,"onUpdate:checked":d[18]||(d[18]=ee=>n.modelValue.deurbreedtevariabel=ee),value:u.$t("step1.user_input_custom_door_width")},null,8,["checked","value"])])):Pe("",!0),n.modelValue.deurbreedtevariabel&&n.modelValue.deur_aantal>1?(he(),ye("div",sG,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.panel_width")),1)]),_:1}),(he(!0),ye(Nt,null,Xn(n.modelValue.deur_aantal,ee=>{var ie,H;return he(),ye("div",null,[K("div",lG,[K("div",null,Ae(u.$t("step1.panel"))+" "+Ae(ee),1),K("div",null,[n.modelValue.deur_aantal>=ee?(he(),gt(p,{key:0,modelValue:n.modelValue.variabeledeurbreedte_maten[ee-1],"onUpdate:modelValue":T=>n.modelValue.variabeledeurbreedte_maten[ee-1]=T},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)])]),(H=(ie=n.modelValue)==null?void 0:ie.userMessages)!=null&&H.underPanelWidthInput[ee-1]?(he(),gt(m,{key:0,modelValue:n.modelValue.userMessages.underPanelWidthInput[ee-1],"onUpdate:modelValue":T=>n.modelValue.userMessages.underPanelWidthInput[ee-1]=T},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)])}),256))])):Pe("",!0),K("div",cG,[["taatsdeur","scharnierdeur","schuifdeur"].includes(n.modelValue.type)?(he(),ye("div",uG,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.side_panels_left")),1)]),_:1}),Be(A,{modelValue:n.modelValue.zijpaneel_aantal_links,"onUpdate:modelValue":d[19]||(d[19]=ee=>n.modelValue.zijpaneel_aantal_links=ee),options:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"}]},null,8,["modelValue"])])):Pe("",!0),["taatsdeur","scharnierdeur","schuifdeur"].includes(n.modelValue.type)?(he(),ye("div",dG,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.side_panels_right")),1)]),_:1}),Be(A,{modelValue:n.modelValue.zijpaneel_aantal_rechts,"onUpdate:modelValue":d[20]||(d[20]=ee=>n.modelValue.zijpaneel_aantal_rechts=ee),options:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"}]},null,8,["modelValue"])])):Pe("",!0)]),n.modelValue.zijpaneel_aantal_links>0||n.modelValue.zijpaneel_aantal_rechts>0?(he(),ye("div",fG,[Be(f,null,{default:ot(()=>[Ye(Ae(u.$t("step1.side_panel_size")),1)]),_:1}),(se=(G=n.modelValue)==null?void 0:G.userMessages)!=null&&se.underSidePanelDimensionInput?(he(),gt(m,{key:0,modelValue:n.modelValue.userMessages.underSidePanelDimensionInput,"onUpdate:modelValue":d[21]||(d[21]=ee=>n.modelValue.userMessages.underSidePanelDimensionInput=ee)},null,8,["modelValue"])):Pe("",!0),K("div",hG,[n.modelValue.zijpaneel_aantal_links>0?(he(),ye("div",pG,[(he(!0),ye(Nt,null,Xn(Ct(Ve).maxZijpanelenLinks,ee=>Ro(u.$slots,"default",{},()=>{var ie,H;return[n.modelValue.zijpaneel_aantal_links>=ee?(he(),gt(p,{key:0,modelValue:n.modelValue.zijpaneel_breedte_links[ee-1],"onUpdate:modelValue":T=>n.modelValue.zijpaneel_breedte_links[ee-1]=T,labelDescription:u.$t("left")+" "+ee},null,8,["modelValue","onUpdate:modelValue","labelDescription"])):Pe("",!0),Array.isArray((H=(ie=n.modelValue)==null?void 0:ie.userMessages)==null?void 0:H.underSidePanelDimensionInputLeft)&&n.modelValue.userMessages.underSidePanelDimensionInputLeft.length>=ee&&n.modelValue.userMessages.underSidePanelDimensionInputLeft[ee-1]?(he(),gt(m,{key:1,modelValue:n.modelValue.userMessages.underSidePanelDimensionInputLeft[ee-1],"onUpdate:modelValue":T=>n.modelValue.userMessages.underSidePanelDimensionInputLeft[ee-1]=T},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)]})),256))])):Pe("",!0),K("div",null,[(he(!0),ye(Nt,null,Xn(Ct(Ve).maxZijpanelenRechts,ee=>Ro(u.$slots,"default",{},()=>{var ie,H;return[n.modelValue.zijpaneel_aantal_rechts>=ee?(he(),gt(p,{key:0,modelValue:n.modelValue.zijpaneel_breedte_rechts[ee-1],"onUpdate:modelValue":T=>n.modelValue.zijpaneel_breedte_rechts[ee-1]=T,labelDescription:u.$t("right")+" "+ee},null,8,["modelValue","onUpdate:modelValue","labelDescription"])):Pe("",!0),Array.isArray((H=(ie=n.modelValue)==null?void 0:ie.userMessages)==null?void 0:H.underSidePanelDimensionInputRight)&&n.modelValue.userMessages.underSidePanelDimensionInputRight.length>=ee&&n.modelValue.userMessages.underSidePanelDimensionInputRight[ee-1]?(he(),gt(m,{key:1,modelValue:n.modelValue.userMessages.underSidePanelDimensionInputRight[ee-1],"onUpdate:modelValue":T=>n.modelValue.userMessages.underSidePanelDimensionInputRight[ee-1]=T},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)]})),256))])])])):Pe("",!0)]),d[24]||(d[24]=K("div",{class:"border-t-1 border-horizontal-line"},null,-1)),K("div",mG,[Be(Tm,{label:u.$t("step2.choose_layout"),onClick:d[22]||(d[22]=ee=>r("setTabValue","2"))},{icon:ot(()=>[...d[23]||(d[23]=[K("svg",{width:"16",height:"12",viewBox:"0 0 16 12",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M15.625 6.375L11.125 10.875L10.7812 11.2188L10.0625 10.5L10.4375 10.1562L14.0625 6.5H0.5H0V5.5H0.5H14.0625L10.4375 1.875L10.0625 1.5L10.7812 0.8125L11.125 1.15625L15.625 5.65625L16 6L15.625 6.375Z"})],-1)])]),_:1},8,["label"])])],64)}}},_G={class:"flex flex-col p-2 lg:p-5 gap-y-7"},vG={key:0},AG={key:1,class:"grid grid-cols-1 gap-4"},yG={key:0},bG={key:1},xG={key:2,class:"grid grid-cols-1 gap-4"},EG={class:"flex flex-wrap gap-2"},CG=["innerHTML"],SG={key:3,class:""},wG={key:0},MG={class:"border border-border-gray rounded-xl p-4 mt-4"},TG={class:"py-1"},IG={class:"text-base font-normal"},RG={class:"py-1"},LG={class:"text-base font-normal"},PG={key:1,class:"p-4"},DG={class:"grid grid-cols-2 gap-4"},BG={key:2},NG={key:0,class:"border border-border-gray rounded-xl p-4 mt-4"},OG={class:"grid grid-cols-2 gap-4 items-center py-1"},kG={key:1,class:"border border-border-gray rounded-xl p-4 mt-4"},FG={class:"grid grid-cols-2 gap-4 items-center py-1"},VG={class:"flex justify-center"},UG={__name:"Step2",props:{modelValue:{type:Object,required:!0},baseUrl:{type:String,default:""}},emits:["setTabValue","update:modelValue"],setup(n,{emit:e}){const t=e;return(r,o)=>{var h,p,m,g;const i=Yt("FormHeader"),a=Yt("FormSegmentedControl"),s=Yt("FormButtonGroupChoice"),l=Yt("FormButtonImageSvg"),c=Yt("FormInputCheckbox"),u=Yt("FormInputCm"),d=Yt("UserMessage"),f=Yt("GroupFormInputCmWithLabel");return he(),ye(Nt,null,[K("div",_G,[n.modelValue.roede_design_keuzeVisible?(he(),ye("div",vG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.type_layout")),1)]),_:1}),Be(a,{modelValue:n.modelValue.roede_design_keuze,"onUpdate:modelValue":o[0]||(o[0]=_=>n.modelValue.roede_design_keuze=_),options:[{value:!1,label:r.$t("step2.custom_layout"),tooltip:r.$t("step2.custom_layout_tooltip")},{value:!0,label:r.$t("step2.predefined_layout"),tooltip:r.$t("step2.predefined_layout_tooltip")}]},null,8,["modelValue","options"])])):Pe("",!0),(h=n.modelValue)!=null&&h.deur_aantal_liggerVisible||(p=n.modelValue)!=null&&p.deur_aantal_staanderVisible?(he(),ye("div",AG,[(m=n.modelValue)!=null&&m.deur_aantal_liggerVisible?(he(),ye("div",yG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.number_of_horizontal_rods")),1)]),_:1}),Be(s,{modelValue:n.modelValue.deur_aantal_ligger_input,"onUpdate:modelValue":o[1]||(o[1]=_=>n.modelValue.deur_aantal_ligger_input=_),options:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"}]},null,8,["modelValue"])])):Pe("",!0),(g=n.modelValue)!=null&&g.deur_aantal_staanderVisible?(he(),ye("div",bG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.number_of_vertical_rods")),1)]),_:1}),Be(s,{modelValue:n.modelValue.deur_aantal_staander_input,"onUpdate:modelValue":o[2]||(o[2]=_=>n.modelValue.deur_aantal_staander_input=_),options:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"}]},null,8,["modelValue"])])):Pe("",!0)])):Pe("",!0),n.modelValue.roede_design_keuze?(he(),ye("div",xG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.layout_templates")),1)]),_:1}),K("div",EG,[(he(!0),ye(Nt,null,Xn(Ct(qz),_=>(he(),gt(l,{key:_.value,modelValue:n.modelValue.roede_configuratie_input,"onUpdate:modelValue":o[3]||(o[3]=A=>n.modelValue.roede_configuratie_input=A),setValueOnClick:_.value,labelDescription:_.label,tooltipDescription:_.tooltip,imageSrc:_.imageSrc},{default:ot(()=>[(he(),ye("svg",{width:"50",height:"75",viewBox:"0 0 50 75",fill:"none",xmlns:"http://www.w3.org/2000/svg",innerHTML:_.svg},null,8,CG))]),_:2},1032,["modelValue","setValueOnClick","labelDescription","tooltipDescription","imageSrc"]))),128))]),n.modelValue.zijpaneel_aantal_links>0||n.modelValue.zijpaneel_aantal_rechts>0||n.modelValue.bovenlicht?(he(),gt(c,{key:0,checked:n.modelValue.roede_design_roedes_doorlopen_zijlicht_bovenlicht,"onUpdate:checked":o[4]||(o[4]=_=>n.modelValue.roede_design_roedes_doorlopen_zijlicht_bovenlicht=_),value:r.$t("step2.continuous_lines_side_panels")},null,8,["checked","value"])):Pe("",!0)])):Pe("",!0),!n.modelValue.roede_design_keuze&&(n.modelValue.deur_aantal_ligger>0||n.modelValue.deur_aantal_staander>0||n.modelValue.zijpaneel_aantal_staander>0)?(he(),ye("div",SG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.positioning")),1)]),_:1}),Be(a,{modelValue:n.modelValue.asymmetrisch,"onUpdate:modelValue":o[5]||(o[5]=_=>n.modelValue.asymmetrisch=_),options:[{value:!1,label:r.$t("step2.positioning_fixed_layout")},{value:!0,label:r.$t("step2.positioning_custom_layout")}]},null,8,["modelValue","options"])])):Pe("",!0)]),n.modelValue.deur_aantal&&!n.modelValue.roede_design_keuze&&n.modelValue.asymmetrisch&&(n.modelValue.deur_aantal_ligger>0||n.modelValue.deur_aantal_staander>0)?(he(),ye("div",wG,[(he(!0),ye(Nt,null,Xn(n.modelValue.deur_aantal,_=>(he(),ye("div",MG,[n.modelValue.type=="vaste-wand"?(he(),gt(i,{key:0,class:"border-b border-border-gray"},{default:ot(()=>[Ye(Ae(r.$t("step2.panel_custom_layout",{index:_})),1)]),_:2},1024)):Pe("",!0),n.modelValue.type!=="vaste-wand"?(he(),gt(i,{key:1,class:"border-b border-border-gray"},{default:ot(()=>[Ye(Ae(r.$t("step2.door_custom_layout",{index:_})),1)]),_:2},1024)):Pe("",!0),(he(!0),ye(Nt,null,Xn(n.modelValue.deur_aantal_ligger,A=>(he(),ye("div",TG,[Be(f,null,{label:ot(()=>[K("span",IG,Ae(r.$t("step2.horizontal_rod",{index:A})),1)]),input:ot(()=>{var y,b;return[n.modelValue.deur_aantal_ligger>=A?(he(),gt(u,{key:0,modelValue:n.modelValue.asymmetrisch_ligger_maten[A-1],"onUpdate:modelValue":E=>n.modelValue.asymmetrisch_ligger_maten[A-1]=E},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0),(b=(y=n.modelValue)==null?void 0:y.userMessages)!=null&&b.underInputLiggerDeur[A-1]?(he(),gt(d,{key:1,modelValue:n.modelValue.userMessages.underInputLiggerDeur[A-1],"onUpdate:modelValue":E=>n.modelValue.userMessages.underInputLiggerDeur[A-1]=E},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)]}),_:2},1024)]))),256)),(he(!0),ye(Nt,null,Xn(n.modelValue.deur_aantal_staander,A=>(he(),ye("div",RG,[Be(f,null,{label:ot(()=>[K("span",LG,Ae(r.$t("step2.vertical_rod",{index:A})),1)]),input:ot(()=>{var y,b;return[Be(u,{modelValue:n.modelValue.asymmetrisch_staander_maten_deur[_*100+A],"onUpdate:modelValue":E=>n.modelValue.asymmetrisch_staander_maten_deur[_*100+A]=E},null,8,["modelValue","onUpdate:modelValue"]),(b=(y=n.modelValue)==null?void 0:y.userMessages)!=null&&b.underInputStaanderDeur[_*100+A]?(he(),gt(d,{key:0,modelValue:n.modelValue.userMessages.underInputStaanderDeur[_*100+A],"onUpdate:modelValue":E=>n.modelValue.userMessages.underInputStaanderDeur[_*100+A]=E},null,8,["modelValue","onUpdate:modelValue"])):Pe("",!0)]}),_:2},1024)]))),256))]))),256))])):Pe("",!0),n.modelValue.zijpaneel_aantal_staanderVisible?(he(),ye("div",PG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.number_of_vertical_rods_side_panel")),1)]),_:1}),K("div",DG,[K("div",null,[Be(s,{modelValue:n.modelValue.zijpaneel_aantal_staander,"onUpdate:modelValue":o[6]||(o[6]=_=>n.modelValue.zijpaneel_aantal_staander=_),options:[{value:0,label:"0"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"}]},null,8,["modelValue"])]),o[8]||(o[8]=K("div",null,null,-1))])])):Pe("",!0),n.modelValue.zijpaneel_aantal_staander>0&&n.modelValue.asymmetrisch?(he(),ye("div",BG,[n.modelValue.zijpaneel_aantal_links>0?(he(),ye("div",NG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.left_side_panel_layout")),1)]),_:1}),(he(!0),ye(Nt,null,Xn(n.modelValue.zijpaneel_aantal_staander,_=>(he(),ye("div",OG,[K("div",null,Ae(r.$t("step2.vertical_rod",{index:_})),1),K("div",null,[Be(u,{modelValue:n.modelValue.asymmetrisch_staander_maten_zijpaneel[100+_],"onUpdate:modelValue":A=>n.modelValue.asymmetrisch_staander_maten_zijpaneel[100+_]=A},null,8,["modelValue","onUpdate:modelValue"])])]))),256))])):Pe("",!0),n.modelValue.zijpaneel_aantal_rechts>0?(he(),ye("div",kG,[Be(i,null,{default:ot(()=>[Ye(Ae(r.$t("step2.right_side_panel_layout")),1)]),_:1}),(he(!0),ye(Nt,null,Xn(n.modelValue.zijpaneel_aantal_staander,_=>(he(),ye("div",FG,[K("div",null,Ae(r.$t("step2.vertical_rod",{index:_})),1),K("div",null,[Be(u,{modelValue:n.modelValue.asymmetrisch_staander_maten_zijpaneel[200+_],"onUpdate:modelValue":A=>n.modelValue.asymmetrisch_staander_maten_zijpaneel[200+_]=A},null,8,["modelValue","onUpdate:modelValue"])])]))),256))])):Pe("",!0)])):Pe("",!0),o[10]||(o[10]=K("div",{class:"border-t border-horizontal-line"},null,-1)),K("div",VG,[Be(Tm,{label:r.$t("step3.choose_detailing"),onClick:o[7]||(o[7]=_=>t("setTabValue","3"))},{icon:ot(()=>[...o[9]||(o[9]=[K("svg",{width:"16",height:"12",viewBox:"0 0 16 12",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M15.625 6.375L11.125 10.875L10.7812 11.2188L10.0625 10.5L10.4375 10.1562L14.0625 6.5H0.5H0V5.5H0.5H14.0625L10.4375 1.875L10.0625 1.5L10.7812 0.8125L11.125 1.15625L15.625 5.65625L16 6L15.625 6.375Z"})],-1)])]),_:1},8,["label"])])],64)}}},zG={key:0,class:"flex flex-col p-2 lg:p-5 gap-y-7"},GG={class:"grid grid-cols-3 gap-4"},HG={key:0,class:"mt-4"},WG={class:"grid grid-cols-1 gap-4"},jG={key:0},QG={class:"grid grid-cols-3 gap-4"},$G={class:"grid grid-cols-3 gap-4"},YG={key:1},XG={key:2},qG={key:0,class:"mb-6"},KG={key:1,class:"grid grid-cols-3 gap-4"},ZG={key:2,class:"grid grid-cols-3 gap-4"},JG={key:3},eH={class:"grid grid-cols-3 gap-4"},tH={key:4},nH={class:"grid grid-cols-3 gap-4"},rH={key:0,class:"mt-4"},oH={key:5},iH={class:"grid grid-cols-3 gap-4","data-name":"draairichting"},aH={key:0,class:"mt-4"},sH={key:6},lH={class:"grid grid-cols-3 gap-4"},cH={key:0,class:"mt-4"},uH={key:7},dH={key:8},fH={key:9},hH={key:10},pH={key:11},mH={key:12},gH={class:"flex justify-center"},_H={__name:"Step3",props:{modelValue:{type:Object,required:!0},baseUrl:{type:String,default:""},buttonQuoteVisible:{type:Boolean,default:!1},companyInternalEdit:{type:Boolean,default:!1},buttonQuoteRequestOrUpdate:{type:Boolean,default:!1},actualUserOptionsVersion:{type:Number,default:0}},emits:["setTabValue","update:modelValue","clickQuoteButton"],setup(n,{emit:e}){const t=e;function r(){t("setTabValue","0"),t("clickQuoteButton")}return(o,i)=>{var h,p,m,g,_,A,y,b,E;const a=Yt("FormHeader"),s=Yt("FormRadioButtonImage"),l=Yt("FormInput"),c=Yt("UserMessage"),u=Yt("FormSegmentedControl"),d=Yt("FormInputCheckbox"),f=Yt("FormInputTextarea");return n.modelValue?(he(),ye("div",zG,[K("div",null,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.material_colour")),1)]),_:1}),K("div",GG,[(he(!0),ye(Nt,null,Xn(Ct(sA),(x,w)=>{var L;return he(),gt(s,{key:x.value,modelValue:n.modelValue.kleur_materiaal,"onUpdate:modelValue":i[0]||(i[0]=C=>n.modelValue.kleur_materiaal=C),setValueOnClick:x.value,labelDescription:o.$t(x.label),imageSrc:n.baseUrl+x.image,imageRatio:"aspect-[104/80]",tooltipDescription:o.$t(x.tooltip),tooltipImage:n.baseUrl+x.image,visible:(L=x.visible)==null?void 0:L.includes(n.modelValue.type),index:w+1,tooltipTitle:o.$t(x.label)},null,8,["modelValue","setValueOnClick","labelDescription","imageSrc","tooltipDescription","tooltipImage","visible","index","tooltipTitle"])}),128))]),n.modelValue.kleur_materiaal=="KLEUR_ALUMINIUM_RAL"?(he(),ye("div",HG,[K("div",WG,[Be(l,{class:"",dataName:"kleur_ral",labelDescription:o.$t("step3.ral_colour_number"),modelValue:n.modelValue.kleur_ral,"onUpdate:modelValue":i[1]||(i[1]=x=>n.modelValue.kleur_ral=x)},null,8,["labelDescription","modelValue"]),(h=n.modelValue)!=null&&h.userMessages?(he(),gt(c,{key:0,modelValue:n.modelValue.userMessages.underRalColorNumberInput,"onUpdate:modelValue":i[2]||(i[2]=x=>n.modelValue.userMessages.underRalColorNumberInput=x)},null,8,["modelValue"])):Pe("",!0),K("div",null,[Be(u,{modelValue:n.modelValue.kleur_ral_type,"onUpdate:modelValue":i[3]||(i[3]=x=>n.modelValue.kleur_ral_type=x),options:[{value:"ntb",label:o.$t("step3.coating_type.tbd"),tooltip:""},{value:"mat",label:o.$t("step3.coating_type.matt"),tooltip:""},{value:"glans",label:o.$t("step3.coating_type.gloss"),tooltip:""},{value:"fijnstructuur",label:o.$t("step3.coating_type.fine_texture"),tooltip:""}]},null,8,["modelValue","options"])]),Be(l,{class:"",dataName:"ral_opmerking",labelDescription:o.$t("step3.ral_colour_note"),modelValue:n.modelValue.ral_opmerking,"onUpdate:modelValue":i[4]||(i[4]=x=>n.modelValue.ral_opmerking=x),inputType:""},null,8,["labelDescription","modelValue"])])])):Pe("",!0)]),["vaste-wand","taatsdeur","scharnierdeur","schuifdeur"].includes(n.modelValue.type)?(he(),ye("div",jG,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.oak_veneer_colour")),1)]),_:1}),K("div",QG,[(he(!0),ye(Nt,null,Xn(Ct(lA),x=>{var w;return he(),gt(s,{key:x.value,modelValue:n.modelValue.kleur_materiaal,"onUpdate:modelValue":i[5]||(i[5]=L=>n.modelValue.kleur_materiaal=L),setValueOnClick:x.value,labelDescription:o.$t(x.label),imageSrc:n.baseUrl+x.image,imageRatio:"aspect-[104/80]",tooltipDescription:x.tooltip,visible:(w=x.visible)==null?void 0:w.includes(n.modelValue.type)},null,8,["modelValue","setValueOnClick","labelDescription","imageSrc","tooltipDescription","visible"])}),128))])])):Pe("",!0),K("div",null,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.glass_colour")),1)]),_:1}),K("div",$G,[(he(!0),ye(Nt,null,Xn(Ct(eT),x=>{var w;return he(),gt(s,{key:x.value,modelValue:n.modelValue.kleur_glas,"onUpdate:modelValue":i[6]||(i[6]=L=>n.modelValue.kleur_glas=L),setValueOnClick:x.value,labelDescription:o.$t(x.label),imageSrc:n.baseUrl+x.image,imageRatio:"aspect-[104/80]",tooltipDescription:x.tooltip,visible:(w=x.visible)==null?void 0:w.includes(n.modelValue.type)},null,8,["modelValue","setValueOnClick","labelDescription","imageSrc","tooltipDescription","visible"])}),128))])]),n.modelValue.tienmmglasVisible?(he(),ye("div",YG,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.glass_option")),1)]),_:1}),Be(d,{checked:n.modelValue.tienmmglas,"onUpdate:checked":i[7]||(i[7]=x=>n.modelValue.tienmmglas=x),value:o.$t("step3.glass_10mm")},null,8,["checked","value"]),(p=n.modelValue)!=null&&p.verbergtussenstaandersVisible?(he(),gt(d,{key:0,checked:n.modelValue.verbergtussenstaanders,"onUpdate:checked":i[8]||(i[8]=x=>n.modelValue.verbergtussenstaanders=x),value:o.$t("step3.glass_10mm_hide_styles")},null,8,["checked","value"])):Pe("",!0)])):Pe("",!0),["taatsdeur","scharnierdeur","schuifdeur","opdekdeur","vouwwand"].includes(n.modelValue.type)?(he(),ye("div",XG,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.handle")),1)]),_:1}),n.modelValue.kleur_materiaal.includes("FINEER")?(he(),ye("div",qG,[Be(u,{modelValue:n.modelValue.type_handgreep,"onUpdate:modelValue":i[9]||(i[9]=x=>n.modelValue.type_handgreep=x),options:[{value:"aluminium",label:o.$t("step3.aluminium_handle"),tooltip:""},{value:"hout",label:o.$t("step3.wooden_handle"),tooltip:""}]},null,8,["modelValue","options"])])):Pe("",!0),n.modelValue.kleur_materiaal.includes("FINEER")&&n.modelValue.type_handgreep=="aluminium"||!n.modelValue.kleur_materiaal.includes("FINEER")?(he(),ye("div",KG,[(he(!0),ye(Nt,null,Xn(Ct(cA),(x,w)=>{var L;return he(),gt(s,{key:x.value,modelValue:n.modelValue.handgreep,"onUpdate:modelValue":C=>n.modelValue.handgreep=C,dataName:"handgreep",setValueOnClick:x.value,labelDescription:o.$t(x.label),imageSrc:n.baseUrl+x.image,imageRatio:"aspect-[104/124]",tooltipDescription:x.tooltip,visible:(L=x.visible)==null?void 0:L.includes(n.modelValue.type),active:n.actualUserOptionsVersion>=x.activeFromVersion&&n.actualUserOptionsVersion<=x.activeToVersion||n.modelValue.handgreep==x.value},null,8,["modelValue","onUpdate:modelValue","setValueOnClick","labelDescription","imageSrc","tooltipDescription","visible","active"])}),128))])):Pe("",!0),n.modelValue.kleur_materiaal.includes("FINEER")&&n.modelValue.type_handgreep=="hout"?(he(),ye("div",ZG,[(he(!0),ye(Nt,null,Xn(Ct(tT),(x,w)=>{var L;return he(),gt(s,{key:x.value,modelValue:n.modelValue.handgreep,"onUpdate:modelValue":C=>n.modelValue.handgreep=C,dataName:"handgreep",setValueOnClick:x.value,labelDescription:o.$t(x.label),imageSrc:n.baseUrl+x.image,imageRatio:"aspect-[104/124]",tooltipDescription:x.tooltip,visible:(L=x.visible)==null?void 0:L.includes(n.modelValue.type),active:n.actualUserOptionsVersion>=x.activeFromVersion&&n.actualUserOptionsVersion<=x.activeToVersion||n.modelValue.handgreep==x.value},null,8,["modelValue","onUpdate:modelValue","setValueOnClick","labelDescription","imageSrc","tooltipDescription","visible","active"])}),128))])):Pe("",!0)])):Pe("",!0),n.modelValue.typeroedeVisible?(he(),ye("div",JG,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.bar_type")),1)]),_:1}),K("div",eH,[n.modelValue.roede_design_keuze?Pe("",!0):(he(),gt(s,{key:0,modelValue:n.modelValue.typeroede,"onUpdate:modelValue":i[10]||(i[10]=x=>n.modelValue.typeroede=x),dataName:"typeroede",setValueOnClick:"T_ROEDE",labelDescription:o.$t("step3.T_bar"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-roedetype-t-roede.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"])),Be(s,{modelValue:n.modelValue.typeroede,"onUpdate:modelValue":i[11]||(i[11]=x=>n.modelValue.typeroede=x),dataName:"typeroede",setValueOnClick:"PLATTE_ROEDE",labelDescription:o.$t("step3.flat_bar"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-roedetype-platte-roede.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"])])])):Pe("",!0),n.modelValue.actievedeurVisible?(he(),ye("div",tH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.active_door")),1)]),_:1}),K("div",nH,[Be(s,{modelValue:n.modelValue.actievedeur,"onUpdate:modelValue":i[12]||(i[12]=x=>n.modelValue.actievedeur=x),dataName:"actievedeur",setValueOnClick:"ACTIEVEDEUR_LINKS",labelDescription:o.$t("step3.din_left"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-links.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.actievedeur,"onUpdate:modelValue":i[13]||(i[13]=x=>n.modelValue.actievedeur=x),dataName:"actievedeur",setValueOnClick:"ACTIEVEDEUR_RECHTS",labelDescription:o.$t("step3.din_right"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-rechts.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.actievedeur,"onUpdate:modelValue":i[14]||(i[14]=x=>n.modelValue.actievedeur=x),dataName:"actievedeur",setValueOnClick:"ACTIEVEDEUR_NTB",labelDescription:o.$t("step3.to_be_determined"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-ntb.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"])]),["ACTIEVEDEUR_LINKS","ACTIEVEDEUR_RECHTS"].includes(n.modelValue.actievedeur)&&n.modelValue.actievedeurVisible?(he(),ye("div",rH,[Ye(Ae(o.$t("step3.active_door_hint"))+" ",1),Be(f,{dataName:"opm_actievedeur",labelDescription:"",modelValue:n.modelValue.opm_actievedeur,"onUpdate:modelValue":i[15]||(i[15]=x=>n.modelValue.opm_actievedeur=x)},null,8,["modelValue"])])):Pe("",!0)])):Pe("",!0),n.modelValue.draairichtingVisible?(he(),ye("div",oH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.opening_direction")),1)]),_:1}),K("div",iH,[Be(s,{modelValue:n.modelValue.draairichting,"onUpdate:modelValue":i[16]||(i[16]=x=>n.modelValue.draairichting=x),dataName:"draairichting",setValueOnClick:"DRAAI_LINKS",labelDescription:o.$t("step3.din_left"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-links.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.draairichting,"onUpdate:modelValue":i[17]||(i[17]=x=>n.modelValue.draairichting=x),dataName:"draairichting",setValueOnClick:"DRAAI_RECHTS",labelDescription:o.$t("step3.din_right"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-rechts.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.draairichting,"onUpdate:modelValue":i[18]||(i[18]=x=>n.modelValue.draairichting=x),dataName:"draairichting",setValueOnClick:"DRAAI_NTB",labelDescription:o.$t("step3.to_be_determined"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-ntb.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"])]),["DRAAI_LINKS","DRAAI_RECHTS"].includes(n.modelValue.draairichting)?(he(),ye("div",aH,[Ye(Ae(o.$t("step3.opening_direction_hint"))+" ",1),Be(f,{dataName:"opm_draairichting",labelDescription:"",modelValue:n.modelValue.opm_draairichting,"onUpdate:modelValue":i[19]||(i[19]=x=>n.modelValue.opm_draairichting=x)},null,8,["modelValue"])])):Pe("",!0)])):Pe("",!0),["schuifdeur"].includes(n.modelValue.type)&&n.modelValue.deur_aantal==1?(he(),ye("div",sH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.sliding_direction")),1)]),_:1}),K("div",lH,[Be(s,{modelValue:n.modelValue.schuifrichting,"onUpdate:modelValue":i[20]||(i[20]=x=>n.modelValue.schuifrichting=x),dataName:"schuifrichting",setValueOnClick:"SCHUIF_LINKS",labelDescription:o.$t("left"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-schuifrichting-links.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.schuifrichting,"onUpdate:modelValue":i[21]||(i[21]=x=>n.modelValue.schuifrichting=x),dataName:"schuifrichting",setValueOnClick:"SCHUIF_RECHTS",labelDescription:o.$t("right"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-schuifrichting-rechts.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"]),Be(s,{modelValue:n.modelValue.schuifrichting,"onUpdate:modelValue":i[22]||(i[22]=x=>n.modelValue.schuifrichting=x),dataName:"schuifrichting",setValueOnClick:"SCHUIF_NTB",labelDescription:o.$t("step3.to_be_determined"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configurator-draairichting-DIN-ntb.svg",imageRatio:"aspect-[104/80]",tooltipDescription:"??"},null,8,["modelValue","labelDescription","imageSrc"])]),["SCHUIF_LINKS","SCHUIF_RECHTS"].includes(n.modelValue.schuifrichting)?(he(),ye("div",cH,[Ye(Ae(o.$t("step3.sliding_direction_hint"))+" ",1),Be(f,{dataName:"opm_schuifrichting",labelDescription:"",modelValue:n.modelValue.opm_schuifrichting,"onUpdate:modelValue":i[23]||(i[23]=x=>n.modelValue.opm_schuifrichting=x)},null,8,["modelValue"])])):Pe("",!0)])):Pe("",!0),["schuifdeur"].includes(n.modelValue.type)?(he(),ye("div",uH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.sliding_door_options")),1)]),_:1}),(m=n.modelValue)!=null&&m.softcloseVisible?(he(),gt(d,{key:0,checked:n.modelValue.softclose,"onUpdate:checked":[i[24]||(i[24]=x=>n.modelValue.softclose=x),i[25]||(i[25]=x=>n.modelValue.softclose_dubbel=!1)],value:o.$t("step3.softclose_single")},null,8,["checked","value"])):Pe("",!0),(g=n.modelValue)!=null&&g.softclose_dubbelVisible?(he(),gt(d,{key:1,checked:n.modelValue.softclose_dubbel,"onUpdate:checked":[i[26]||(i[26]=x=>n.modelValue.softclose_dubbel=x),i[27]||(i[27]=x=>n.modelValue.softclose=!1)],value:o.$t("step3.softclose_double")},null,8,["checked","value"])):Pe("",!0),(_=n.modelValue)!=null&&_.verberg_rail_in_wandVisible?(he(),gt(d,{key:2,checked:n.modelValue.verberg_rail_in_wand,"onUpdate:checked":i[28]||(i[28]=x=>n.modelValue.verberg_rail_in_wand=x),value:o.$t("step3.hide_rail_in_wall"),tooltipTitle:o.$t("step3.hide_rail_in_wall_tooltip_title"),tooltipDescription:o.$t("step3.hide_rail_in_wall_tooltip_description"),tooltipImage:n.baseUrl+"/Uploads/aluwdoors-configurator-verberg-schuifrail-in-wand.jpg"},null,8,["checked","value","tooltipTitle","tooltipDescription","tooltipImage"])):Pe("",!0),(A=n.modelValue)!=null&&A.ondergeleidingVisible?(he(),gt(d,{key:3,checked:n.modelValue.ondergeleiding,"onUpdate:checked":i[29]||(i[29]=x=>n.modelValue.ondergeleiding=x),value:o.$t("step3.bottom_guide")},null,8,["checked","value"])):Pe("",!0)])):Pe("",!0),(y=n.modelValue)!=null&&y.hogeonderdorpelVisible?(he(),ye("div",dH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.high_threshold_option")),1)]),_:1}),Be(d,{checked:n.modelValue.hogeonderdorpel,"onUpdate:checked":i[30]||(i[30]=x=>n.modelValue.hogeonderdorpel=x),value:o.$t("step3.high_threshold")},null,8,["checked","value"])])):Pe("",!0),(b=n.modelValue)!=null&&b.valdorpelVisible?(he(),ye("div",fH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.drop_seal_option")),1)]),_:1}),Be(d,{checked:n.modelValue.valdorpel,"onUpdate:checked":i[31]||(i[31]=x=>n.modelValue.valdorpel=x),value:o.$t("step3.drop_seal")},null,8,["checked","value"])])):Pe("",!0),["opdekdeur"].includes(n.modelValue.type)?(he(),ye("div",hH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.material_existing_frame")),1)]),_:1}),Be(u,{modelValue:n.modelValue.materiaalsoortbestaandkozijn,"onUpdate:modelValue":i[32]||(i[32]=x=>n.modelValue.materiaalsoortbestaandkozijn=x),options:[{value:"hout",label:o.$t("step3.wooden_frame")},{value:"metaal",label:o.$t("step3.metal_frame")}]},null,8,["modelValue","options"])])):Pe("",!0),(E=n.modelValue)!=null&&E.type_vergrendelingVisible?(he(),ye("div",pH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.locking")),1)]),_:1}),Be(u,{modelValue:n.modelValue.type_vergrendeling,"onUpdate:modelValue":i[33]||(i[33]=x=>n.modelValue.type_vergrendeling=x),options:n.modelValue.type_vergrendelingOptions},null,8,["modelValue","options"])])):Pe("",!0),n.companyInternalEdit?(he(),ye("div",mH,[Be(a,null,{default:ot(()=>[Ye(Ae(o.$t("step3.remarks")),1)]),_:1}),Be(f,{dataName:"opmerking",labelDescription:o.$t("step3.any_remarks"),modelValue:n.modelValue.opmerking,"onUpdate:modelValue":i[34]||(i[34]=x=>n.modelValue.opmerking=x)},null,8,["labelDescription","modelValue"])])):Pe("",!0),i[36]||(i[36]=K("div",{class:"border-t border-horizontal-line"},null,-1)),K("div",gH,[n.buttonQuoteVisible?(he(),gt(Tm,{key:0,label:n.buttonQuoteRequestOrUpdate?o.$t("editQuote"):o.$t("requestQuote"),onClick:r},{icon:ot(()=>[...i[35]||(i[35]=[K("svg",{class:"mx-2",width:"12",height:"16",viewBox:"0 0 12 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 15H11V6H6.5H6V5.5V1H1V15ZM7 1.1875V5H10.8125L7 1.1875ZM7.25 0L12 4.75V15V16H11H1H0V15V1V0H1H7.25ZM2 2H2.5H4.5H5V3H4.5H2.5H2V2ZM2 4H2.5H4.5H5V5H4.5H2.5H2V4ZM7 14V13H7.5H9.5H10V14H9.5H7.5H7ZM9 10.5V8.5H3V10.5H9ZM3 7.5H9H10V8.5V10.5V11.5H9H3H2V10.5V8.5V7.5H3Z"})],-1)])]),_:1},8,["label"])):Pe("",!0)])])):Pe("",!0)}}},vH={class:"text-base font-normal truncate"},AH={id:"dropdownMenu",class:"absolute z-10 w-full bg-dropdown-open rounded-b-md shadow-lg"},yH={class:"text-white"},bH=["onClick"],xH={class:"text-base font-normal truncate"},EH={class:"flex items-center w-full"},CH={class:"text-base font-normal truncate"},SH=zi({__name:"HeaderDropdown",props:{configuratorActualConfig:{type:Object,required:!0}},emits:["activateConfiguration","addConfig"],setup(n,{emit:e}){const t=e,r=vt(!1),o=vt(null),i=()=>{r.value=!r.value},a=u=>{o.value.contains(u.target)||(r.value=!1)},s=u=>{a(u)},l=u=>{t("activateConfiguration",u),r.value=!1},c=()=>{t("addConfig"),r.value=!1};return $o(()=>{document.addEventListener("click",s)}),Fc(()=>{document.removeEventListener("click",s)}),(u,d)=>(he(),ye("div",{class:"relative min-w-0 basis-72 max-w-72 shrink",ref_key:"dropdown",ref:o,onClick:a},[K("button",{class:"w-full h-10 sm:h-12 bg-dropdown-open text-white pl-4 pr-2 py-2 cursor-pointer rounded-md select-none flex items-center justify-between",onClick:i,id:"dropdownButton"},[K("span",vH,[Ro(u.$slots,"activeConfigName",{},void 0,!0)]),d[1]||(d[1]=K("svg",{class:"w-4 h-4 mx-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"})],-1))]),Kn(K("div",AH,[K("ul",yH,[(he(!0),ye(Nt,null,Xn(n.configuratorActualConfig.conf,(f,h)=>(he(),ye("li",{key:h,class:"flex items-center justify-between px-4 py-2 h-12 w-full hover:bg-secondary-green cursor-pointer",onClick:p=>l(h)},[K("div",xH,Ae(f.name),1)],8,bH))),128)),K("li",{class:"flex items-center px-4 py-2 h-12 w-full hover:bg-secondary-green cursor-pointer",onClick:d[0]||(d[0]=f=>c())},[K("div",EH,[d[2]||(d[2]=K("span",{class:"mr-2"},[K("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M7.5 1V6.5H13H13.5V7.5H13H7.5V13V13.5H6.5V13V7.5H1H0.5V6.5H1H6.5V1V0.5H7.5V1Z",fill:"currentColor"})])],-1)),K("span",CH,Ae(u.$t("header.add_design")),1)])])])],512),[[hC,r.value]])],512))}},[["__scopeId","data-v-1bd599e9"]]),wH={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},MH={key:1,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},TH={class:"text-[15px] lg:text-base font-normal leading-loose ms-3","data-label":""},IH={key:0,class:"flex items-center"},lT={__name:"FormInputCheckbox",props:{checked:{type:[Array,Boolean],default:!1},value:{type:String,default:null},tooltipTitle:{type:String,default:""},tooltipDescription:{type:String,default:""},tooltipImage:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["update:checked"],setup(n,{emit:e}){const t=e,r=n,o=bt({get(){return r.checked},set(a){t("update:checked",a),Lr.emit("configuratorUserInput")}});function i(){r.disabled||(o.value=!o.value)}return(a,s)=>{const l=Yt("InfoPopup");return he(),ye("div",{class:Qt(["flex items-center justify-between",n.disabled?"cursor-not-allowed opacity-60":"cursor-pointer"])},[K("div",{class:Qt(["flex items-center",n.disabled?"cursor-not-allowed":"cursor-pointer"]),onClick:i},[K("div",null,[o.value?Pe("",!0):(he(),ye("svg",wH,[...s[0]||(s[0]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"1.5",fill:"#F0F3F3",stroke:"#2B3937"},null,-1)])])),o.value?(he(),ye("svg",MH,[...s[1]||(s[1]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"1.5",fill:"#F0F3F3",stroke:"#2B3937"},null,-1),K("path",{d:"M9.35547 1.04297L8.90625 1.47266L4.16016 5.98438L3.73047 6.39453L3.30078 5.98438L1.07422 3.875L0.625 3.44531L1.48438 2.54688L1.93359 2.97656L3.73047 4.65625L8.04688 0.554688L8.49609 0.125L9.35547 1.04297Z",fill:"#2B3937",transform:"translate(3.5, 4.5)"},null,-1)])])):Pe("",!0)]),K("div",null,[K("span",TH,Ae(n.value),1)])],2),n.tooltipTitle?(he(),ye("div",IH,[Be(l,{title:n.tooltipTitle,text:n.tooltipDescription,imageSrc:n.tooltipImage},null,8,["title","text","imageSrc"])])):Pe("",!0)],2)}}};let Jc="/apii";function RH(){const n=document.cookie.match(/XSRF-TOKEN=([^;]+)/);return n?decodeURIComponent(n[1]):null}const ar=Zr({user:null,isAuthenticated:!1,isLoading:!0,error:null}),bn={setApiUrl(n){Jc=n},get state(){return Cp(ar)},async init(){var n;ar.isLoading=!0,ar.error=null;try{await Gt.get(`${Jc}/sanctum/csrf-cookie`,{withCredentials:!0});const e=await Gt.get(`${Jc}/api/auth/user`,{withCredentials:!0});e.data.success&&e.data.user&&(ar.user=e.data.user,ar.isAuthenticated=!0)}catch(e){((n=e.response)==null?void 0:n.status)!==401&&console.error("Auth init error:",e),ar.user=null,ar.isAuthenticated=!1}finally{ar.isLoading=!1}},async login(n,e,t=!1){var r,o,i,a,s,l;ar.isLoading=!0,ar.error=null;try{await Gt.get(`${Jc}/sanctum/csrf-cookie`,{withCredentials:!0});const c=RH(),u=await Gt.post(`${Jc}/api/auth/login`,{email:n,password:e,remember:t},{withCredentials:!0,headers:c?{"X-XSRF-TOKEN":c}:{}});return u.data.success?(ar.user=u.data.user,ar.isAuthenticated=!0,{success:!0}):(ar.error="Login failed",{success:!1,error:ar.error})}catch(c){const u=((o=(r=c.response)==null?void 0:r.data)==null?void 0:o.message)||((l=(s=(a=(i=c.response)==null?void 0:i.data)==null?void 0:a.errors)==null?void 0:s.email)==null?void 0:l[0])||"Login failed. Please try again.";return ar.error=u,{success:!1,error:u}}finally{ar.isLoading=!1}},async logout(){ar.isLoading=!0;try{await Gt.post(`${Jc}/api/auth/logout`,{},{withCredentials:!0})}catch(n){console.error("Logout error:",n)}finally{ar.user=null,ar.isAuthenticated=!1,ar.isLoading=!1}},clearError(){ar.error=null}},LH={class:"px-2.5 mt-2.5 xl:mt-5 w-full"},PH={class:"w-full h-headerheight-sm md:h-headerheight-md lg:h-headerheight-lg bg-secondary-green text-white p-2 md:p-4 mb-[10px] md:mb-0 rounded-xl flex justify-between items-center"},DH={class:"flex items-center gap-2 w-full"},BH={key:0,class:"hidden md:flex items-center gap-2"},NH=["disabled"],OH={key:0,class:"animate-spin",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},kH={key:1,width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},FH={class:"text-base font-normal max-sm:hidden header-add-start:hidden header-add-end:block ml-2"},VH={__name:"Header",props:["configuratorActualConfig","activeConfigName","companyInternalEdit","companyInternalOverrideLimits"],emits:["addConfig","deleteConfig","editName","activateConfiguration","update:companyInternalOverrideLimits","showLogin"],setup(n){const e=vt(!1);async function t(){e.value=!0,await bn.logout(),e.value=!1}return(r,o)=>(he(),ye("div",LH,[K("div",PH,[K("div",DH,[Be(SH,{class:"",configuratorActualConfig:n.configuratorActualConfig,onActivateConfiguration:o[0]||(o[0]=i=>r.$emit("activateConfiguration",i)),onAddConfig:o[1]||(o[1]=i=>r.$emit("addConfig"))},{activeConfigName:ot(()=>[Ye(Ae(n.activeConfigName),1)]),_:1},8,["configuratorActualConfig"]),K("button",{class:"shrink-0 flex items-center justify-center text-center bg-tertiary-green p-2 rounded-md hover:bg-primary-green hover:text-tertiary-green w-10 h-10 md:w-12 md:h-12 cursor-pointer",onClick:o[2]||(o[2]=i=>r.$emit("editName"))},[...o[7]||(o[7]=[K("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M0 16L0.1875 14.9375L1 11L11.2812 0.71875L12 0L12.6875 0.71875L15.2812 3.3125L16 4L15.2812 4.71875L5 15L1.0625 15.8125L0 16ZM4.5 14.0938L12.4375 6.15625L9.84375 3.5625L1.90625 11.5L1.25 14.75L4.5 14.0938ZM13.125 5.46875L14.5625 4L12 1.4375L10.5312 2.875L13.125 5.4375V5.46875Z"})],-1)])]),K("button",{class:"shrink-0 flex items-center justify-center text-center bg-tertiary-green p-2 rounded-md hover:bg-warning-red w-10 h-10 md:w-12 md:h-12 cursor-pointer",onClick:o[3]||(o[3]=i=>r.$emit("deleteConfig"))},[...o[8]||(o[8]=[K("svg",{width:"14",height:"16",viewBox:"0 0 14 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M5 0H9H9.25L9.40625 0.25L10.5 2H11.9688H13H14V3H12.9062L12 16H2L1.0625 3H0V2H1H2H3.46875L4.5625 0.25L4.71875 0H5ZM9.34375 2L8.71875 1H5.25L4.625 2H9.34375ZM2.90625 15H11.0625L11.9062 3H2.0625L2.90625 15ZM4.96875 6.28125L5.3125 6.65625L7 8.3125L8.65625 6.65625L9 6.28125L9.71875 7L9.34375 7.34375L7.6875 9L9.34375 10.6875L9.71875 11.0312L9 11.75L8.65625 11.375L7 9.71875L5.3125 11.375L4.96875 11.75L4.25 11.0312L4.625 10.6875L6.28125 9L4.625 7.34375L4.25 7L4.96875 6.28125Z"})],-1)])]),n.companyInternalEdit?(he(),ye("div",BH,[Ct(bn).state.isAuthenticated?(he(),ye("button",{key:1,class:"shrink-0 flex items-center justify-center text-center bg-tertiary-green p-2 rounded-md hover:bg-warning-red w-10 h-10 md:w-12 md:h-12 cursor-pointer",disabled:e.value,onClick:t},[e.value?(he(),ye("svg",OH,[...o[10]||(o[10]=[K("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),K("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):(he(),ye("svg",kH,[...o[11]||(o[11]=[K("path",{d:"M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"},null,-1)])]))],8,NH)):(he(),ye("button",{key:0,class:"shrink-0 flex items-center justify-center text-center bg-tertiary-green p-2 rounded-md hover:bg-primary-green hover:text-tertiary-green w-10 h-10 md:w-12 md:h-12 cursor-pointer",onClick:o[4]||(o[4]=i=>r.$emit("showLogin"))},[...o[9]||(o[9]=[K("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})],-1)])])),Ct(bn).state.isAuthenticated||n.companyInternalOverrideLimits?(he(),ye("div",{key:2,class:Qt(["shrink-0 px-3 py-2 rounded-md",n.companyInternalOverrideLimits?"bg-warning-red text-white":"bg-tertiary-green"])},[Be(lT,{checked:n.companyInternalOverrideLimits,disabled:!Ct(bn).state.isAuthenticated,"onUpdate:checked":o[5]||(o[5]=i=>r.$emit("update:companyInternalOverrideLimits",i)),value:"Override limits"},null,8,["checked","disabled"])],2)):Pe("",!0)])):Pe("",!0),K("button",{class:"ml-auto shrink-0 bg-background-light text-secondary-green px-4 py-2 rounded-md hover:bg-white flex items-center justify-center h-10.5 w-10.5 md:h-12 md:w-auto cursor-pointer",onClick:o[6]||(o[6]=i=>r.$emit("addConfig"))},[o[12]||(o[12]=K("span",{class:""},[K("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M7.5 1V6.5H13H13.5V7.5H13H7.5V13V13.5H6.5V13V7.5H1H0.5V6.5H1H6.5V1V0.5H7.5V1Z"})])],-1)),K("span",FH,Ae(r.$t("header.add_design")),1)])])])]))}},UH={class:"h-fit overflow-y-auto"},zH={key:0,class:"text-[28px] font-normal mb-4 leading-[1.2]"},GH={key:1,class:"text-[28px] font-normal mb-4 leading-[1.2]"},HH={key:2},WH={key:0,class:"text-base font-normal text-white mb-6 leading-loose"},jH={key:1,class:"text-base font-normal text-white mb-6 leading-loose"},QH={class:"flex flex-row mt-2 mb-2"},$H={class:"space-y-4 mb-4"},YH={key:0,class:"flex flex-col xs:flex-row gap-4"},XH={class:"w-full text-sm"},qH=["placeholder"],KH={class:"w-full text-sm"},ZH=["placeholder"],JH={class:"flex flex-col xs:flex-row gap-4"},eW={class:"w-full text-sm"},tW=["placeholder","aria-invalid"],nW={class:"w-full text-sm"},rW=["placeholder","aria-invalid"],oW={class:"flex flex-col xs:flex-row gap-4"},iW={class:"w-full text-sm"},aW=["placeholder"],sW={class:"w-full text-sm"},lW={class:"flex flex-col xs:flex-row gap-4"},cW={class:"w-full text-sm"},uW=["placeholder"],dW={class:"w-full text-sm"},fW=["placeholder"],hW={class:"block text-sm"},pW=["placeholder"],mW={key:1},gW=["disabled"],_W={key:0,class:"mr-2",width:"12",height:"16",viewBox:"0 0 12 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},vW={key:1,class:"mr-2 inline w-4 h-4 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"},AW={key:0},yW={key:1},bW={key:3},xW={class:"text-base font-normal text-white mb-4 leading-loose"},EW={class:"mb-2 text-sm font-light"},CW={class:"mb-4 text-sm font-light"},SW={class:"mb-4 text-sm font-light"},wW={__name:"OfferteAanvragenOfWijzigen",props:{popupData:Object,baseUrl:String},emits:["submit"],setup(n,{emit:e}){const t=n,r=e,{t:o}=cf(),i=bt(()=>[{value:"zelf_inmeten_en_afhalen",label:o("quoteForm.options.measure_collect")},{value:"zelf_inmeten_en_afleveren",label:o("quoteForm.options.measure_deliver")},{value:"laten_inmeten_en_afleveren",label:o("quoteForm.options.measure_deliver_by_us")},{value:"laten_inmeten_en_monteren",label:o("quoteForm.options.measure_install_by_us")}]),a=Zr({bedrijfsnaam:"",voornaam:"",achternaam:"",emailadres:"",telefoonnummer:"",woonplaatsMontage:""}),s=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,l=/^\+?[0-9\s()-]{6,}$/;bt(()=>f());const c=bt(()=>"w-fit bg-[#e74242] text-white text-[13px] font-normal mt-1 rounded-sm px-2 py-1");function u(){Object.keys(a).forEach(h=>a[h]="")}dr(()=>t.popupData.popup,h=>{h||u()});function d(h){var p;(p=h==null?void 0:h.preventDefault)==null||p.call(h),f()&&r("submit")}function f(){var p,m,g,_,A,y;u();let h=!0;return t.popupData.typeOpdracht==="particulier"&&!((p=t.popupData.voornaam)!=null&&p.trim())&&(a.voornaam=o("validation.required"),h=!1),t.popupData.typeOpdracht==="particulier"&&!((m=t.popupData.achternaam)!=null&&m.trim())&&(a.achternaam=o("validation.required"),h=!1),t.popupData.typeOpdracht==="zakelijk"&&!((g=t.popupData.bedrijfsnaam)!=null&&g.trim())&&(a.bedrijfsnaam=o("validation.required"),h=!1),t.popupData.typeOpdracht==="particulier"&&t.popupData.voornaam&&t.popupData.voornaam.trim().length>100&&(a.voornaam=o("validation.too_long"),h=!1),(_=t.popupData.emailadres)!=null&&_.trim()?s.test(t.popupData.emailadres.trim())||(a.emailadres=o("validation.email"),h=!1):(a.emailadres=o("validation.required"),h=!1),(A=t.popupData.telefoonnummer)!=null&&A.trim()?l.test(t.popupData.telefoonnummer.trim())||(a.telefoonnummer=o("validation.phone"),h=!1):(a.telefoonnummer=o("validation.required"),h=!1),(y=t.popupData.woonplaatsMontage)!=null&&y.trim()||(a.woonplaatsMontage=o("validation.required"),h=!1),h}return(h,p)=>{const m=Yt("FormDropdown"),g=Yt("FormInputCheckbox"),_=Yt("ConfirmDlg");return he(),gt(_,{modelValue:n.popupData.popup,"onUpdate:modelValue":p[14]||(p[14]=A=>n.popupData.popup=A),imageSrc:n.popupData.updateToBackendDone?n.baseUrl+"/Uploads/aluwdoors-offerte-ontvangen.jpg":n.baseUrl+"/Uploads/aluwdoors-offerte-aanvragen.jpg",imageAlt:h.$t("popup.image_alt")},{default:ot(()=>[K("form",{onSubmit:p[13]||(p[13]=ja(()=>{},["prevent"]))},[K("div",UH,[n.popupData.wijzigenPopup?Pe("",!0):(he(),ye("h2",zH,Ae(h.$t("requestQuote")),1)),n.popupData.wijzigenPopup?(he(),ye("h2",GH,Ae(h.$t("editQuote")),1)):Pe("",!0),n.popupData.updateToBackendDone?Pe("",!0):(he(),ye("div",HH,[n.popupData.wijzigenPopup?Pe("",!0):(he(),ye("span",WH,Ae(h.$t("quoteForm.intro")),1)),n.popupData.wijzigenPopup?(he(),ye("span",jH,Ae(h.$t("quoteForm.introEdit")),1)):Pe("",!0),K("div",QH,[K("button",{type:"button",class:Qt(["cursor-pointer h-buttonheight-sm rounded-md px-5 py-2 hover:bg-background-light hover:text-tertiary-green transition text-sm font-normal",n.popupData.typeOpdracht=="particulier"?"bg-background-light text-tertiary-green":"bg-dropdown-open text-white"]),onClick:p[0]||(p[0]=A=>n.popupData.typeOpdracht="particulier")},Ae(h.$t("quoteForm.private")),3),K("button",{type:"button",class:Qt(["cursor-pointer h-buttonheight-sm rounded-md px-5 py-2 hover:bg-background-light hover:text-tertiary-green transition text-sm font-normal",n.popupData.typeOpdracht=="zakelijk"?"bg-background-light text-tertiary-green":"bg-dropdown-open text-white"]),onClick:p[1]||(p[1]=A=>n.popupData.typeOpdracht="zakelijk")},Ae(h.$t("quoteForm.business")),3)]),K("div",$H,[n.popupData.typeOpdracht=="zakelijk"?(he(),ye("div",YH,[K("label",XH,[Ye(Ae(h.$t("quoteForm.companyName"))+" ",1),Kn(K("input",{type:"text",placeholder:h.$t("quoteForm.companyName_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[2]||(p[2]=A=>n.popupData.bedrijfsnaam=A)},null,8,qH),[[Rr,n.popupData.bedrijfsnaam]]),a.bedrijfsnaam?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.bedrijfsnaam),3)):Pe("",!0)]),K("label",KH,[Ye(Ae(h.$t("quoteForm.reference"))+" ",1),Kn(K("input",{type:"text",placeholder:h.$t("quoteForm.reference_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[3]||(p[3]=A=>n.popupData.referentie=A)},null,8,ZH),[[Rr,n.popupData.referentie]])])])):Pe("",!0),K("div",JH,[K("label",eW,[Ye(Ae(h.$t("quoteForm.firstName"))+" ",1),Kn(K("input",{type:"text",placeholder:h.$t("quoteForm.firstName_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[4]||(p[4]=A=>n.popupData.voornaam=A),"aria-invalid":!!a.voornaam},null,8,tW),[[Rr,n.popupData.voornaam]]),a.voornaam?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.voornaam),3)):Pe("",!0)]),K("label",nW,[Ye(Ae(h.$t("quoteForm.lastName_required"))+" ",1),Kn(K("input",{type:"text",placeholder:h.$t("quoteForm.lastName_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[5]||(p[5]=A=>n.popupData.achternaam=A),"aria-invalid":!!a.achternaam},null,8,rW),[[Rr,n.popupData.achternaam]]),a.achternaam?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.achternaam),3)):Pe("",!0)])]),K("div",oW,[K("label",iW,[Ye(Ae(h.$t("quoteForm.city"))+" ",1),Kn(K("input",{type:"text",placeholder:h.$t("quoteForm.city_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[6]||(p[6]=A=>n.popupData.woonplaatsMontage=A)},null,8,aW),[[Rr,n.popupData.woonplaatsMontage]]),a.woonplaatsMontage?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.woonplaatsMontage),3)):Pe("",!0)]),K("label",sW,[Ye(Ae(h.$t("quoteForm.installation_choice"))+" ",1),Be(m,{class:"mt-2",modelValue:n.popupData.klantkeuzeMontage,"onUpdate:modelValue":p[7]||(p[7]=A=>n.popupData.klantkeuzeMontage=A),options:i.value,mode:"dark"},null,8,["modelValue","options"])])]),K("div",lW,[K("label",cW,[Ye(Ae(h.$t("quoteForm.email_required"))+" ",1),Kn(K("input",{type:"email",placeholder:h.$t("quoteForm.email_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[8]||(p[8]=A=>n.popupData.emailadres=A)},null,8,uW),[[Rr,n.popupData.emailadres]]),a.emailadres?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.emailadres),3)):Pe("",!0)]),K("label",dW,[Ye(Ae(h.$t("quoteForm.phone_required"))+" ",1),Kn(K("input",{type:"tel",placeholder:h.$t("quoteForm.phone_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[9]||(p[9]=A=>n.popupData.telefoonnummer=A)},null,8,fW),[[Rr,n.popupData.telefoonnummer]]),a.telefoonnummer?(he(),ye("div",{key:0,class:Qt(c.value)},Ae(a.telefoonnummer),3)):Pe("",!0)])]),K("label",hW,[Ye(Ae(h.$t("quoteForm.remarks_optional"))+" ",1),Kn(K("textarea",{placeholder:h.$t("quoteForm.remarks_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md resize-none h-24 focus:outline-hidden placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":p[10]||(p[10]=A=>n.popupData.opmerkingen=A)},null,8,pW),[[Rr,n.popupData.opmerkingen]])]),n.popupData.companyInternalEdit?(he(),ye("div",mW,[Be(g,{checked:n.popupData.updateToBackendSkipMailChecked,"onUpdate:checked":p[11]||(p[11]=A=>n.popupData.updateToBackendSkipMailChecked=A),value:h.$t("quoteForm.no_change_mail")},null,8,["checked","value"])])):Pe("",!0),K("button",{type:"button",class:"cursor-pointer flex items-center h-13 mt-2 bg-primary-green text-tertiary-green font-normal px-5 py-2.5 rounded-md hover:bg-button-hover-green transition",disabled:n.popupData.updateToBackendActive,onClick:d},[n.popupData.updateToBackendActive?Pe("",!0):(he(),ye("svg",_W,[...p[15]||(p[15]=[K("path",{d:"M1 15H11V6H6.5H6V5.5V1H1V15ZM7 1.1875V5H10.8125L7 1.1875ZM7.25 0L12 4.75V15V16H11H1H0V15V1V0H1H7.25ZM2 2H2.5H4.5H5V3H4.5H2.5H2V2ZM2 4H2.5H4.5H5V5H4.5H2.5H2V4ZM7 14V13H7.5H9.5H10V14H9.5H7.5H7ZM9 10.5V8.5H3V10.5H9ZM3 7.5H9H10V8.5V10.5V11.5H9H3H2V10.5V8.5V7.5H3Z",fill:"#1C2523"},null,-1)])])),n.popupData.updateToBackendActive?(he(),ye("svg",vW,[...p[16]||(p[16]=[K("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"},null,-1),K("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"},null,-1)])])):Pe("",!0),K("span",null,[n.popupData.wijzigenPopup?Pe("",!0):(he(),ye("span",AW,Ae(h.$t("requestQuote")),1)),n.popupData.wijzigenPopup?(he(),ye("span",yW,Ae(h.$t("editQuote")),1)):Pe("",!0)])],8,gW)])])),n.popupData.updateToBackendDone?(he(),ye("div",bW,[K("div",xW,Ae(h.$t("quoteForm.success.received")),1),K("div",EW,Ae(h.$t("quoteForm.success.followup")),1),K("div",CW,Ae(h.$t("quoteForm.success.contact")),1),K("div",SW,Ae(h.$t("quoteForm.success.closure")),1),K("button",{type:"submit",class:"flex items-center h-13 mt-2 bg-primary-green text-tertiary-green font-normal px-5 py-2.5 rounded-md hover:bg-button-hover-green transition",onClick:p[12]||(p[12]=A=>n.popupData.popup=!1)},[p[17]||(p[17]=K("svg",{class:"mr-2",width:"12",height:"16",viewBox:"0 0 12 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 15H11V6H6.5H6V5.5V1H1V15ZM7 1.1875V5H10.8125L7 1.1875ZM7.25 0L12 4.75V15V16H11H1H0V15V1V0H1H7.25ZM2 2H2.5H4.5H5V3H4.5H2.5H2V2ZM2 4H2.5H4.5H5V5H4.5H2.5H2V4ZM7 14V13H7.5H9.5H10V14H9.5H7.5H7ZM9 10.5V8.5H3V10.5H9ZM3 7.5H9H10V8.5V10.5V11.5H9H3H2V10.5V8.5V7.5H3Z",fill:"#1C2523"})],-1)),K("span",null,[K("span",null,Ae(h.$t("popup.close")),1)])])])):Pe("",!0)])],32)]),_:1},8,["modelValue","imageSrc","imageAlt"])}}},MW={class:"h-fit overflow-y-auto"},TW={class:"text-[28px] font-normal mb-4 leading-[1.2]"},IW={class:"text-base font-normal text-white mb-6 leading-[2]"},RW={class:"space-y-4"},LW={class:"flex flex-col xs:flex-row gap-4"},PW={class:"w-full text-sm"},DW=["placeholder"],BW={class:"flex flex-col xs:flex-row gap-4"},NW={class:"w-full text-sm"},OW=["placeholder"],kW={class:"flex flex-col xs:flex-row gap-4"},FW={class:"w-full text-sm"},VW={key:0},UW={key:1},zW={class:"text-center"},GW={role:"status"},HW={class:"sr-only"},WW={__name:"OntwerpOpslaan",props:{popupData:Object,baseUrl:String},setup(n){return(e,t)=>{const r=Yt("ConfirmDlg");return he(),gt(r,{modelValue:n.popupData.popup,"onUpdate:modelValue":t[4]||(t[4]=o=>n.popupData.popup=o),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configuratie-opslaan.jpg",imageAlt:e.$t("popup.image_alt")},{default:ot(()=>[K("div",MW,[K("h2",TW,Ae(e.$t("saveDesign.title")),1),K("span",IW,Ae(e.$t("saveDesign.intro")),1),K("div",RW,[K("div",LW,[K("label",PW,[Ye(Ae(e.$t("saveDesign.firstName"))+" ",1),Kn(K("input",{type:"text",placeholder:e.$t("saveDesign.firstName_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded focus:outline-hidden","onUpdate:modelValue":t[0]||(t[0]=o=>n.popupData.customerData.voornaam=o)},null,8,DW),[[Rr,n.popupData.customerData.voornaam]])])]),K("div",BW,[K("label",NW,[Ye(Ae(e.$t("saveDesign.lastName"))+" ",1),Kn(K("input",{type:"text",placeholder:e.$t("saveDesign.lastName_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded focus:outline-hidden","onUpdate:modelValue":t[1]||(t[1]=o=>n.popupData.customerData.achternaam=o)},null,8,OW),[[Rr,n.popupData.customerData.achternaam]])])]),K("div",kW,[K("label",FW,[Ye(Ae(e.$t("saveDesign.email"))+" ",1),Kn(K("input",{type:"email",placeholder:"info@klant.nl",class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded focus:outline-hidden","onUpdate:modelValue":t[2]||(t[2]=o=>n.popupData.customerData.email=o)},null,512),[[Rr,n.popupData.customerData.email]])])]),K("button",{type:"submit",class:"flex items-center h-13 mt-2 bg-primary-green text-tertiary-green font-normal px-5 py-2.5 rounded-md hover:bg-button-hover-green transition",onClick:t[3]||(t[3]=o=>e.$emit("submit"))},[t[6]||(t[6]=K("svg",{class:"mr-2",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 14H0V13V1V0H1H10.5L14 3.5V13V14H13H1ZM13 13V3.9375L10.0625 1H10V4.5V5H9.5H2.5H2V4.5V1H1V13H13ZM3 1V4H9V1H3ZM5.5 9C5.5 9.5625 5.78125 10.0312 6.25 10.3125C6.6875 10.5938 7.28125 10.5938 7.75 10.3125C8.1875 10.0312 8.5 9.5625 8.5 9C8.5 8.46875 8.1875 8 7.75 7.71875C7.28125 7.4375 6.6875 7.4375 6.25 7.71875C5.78125 8 5.5 8.46875 5.5 9ZM7 11.5C6.09375 11.5 5.28125 11.0312 4.8125 10.25C4.375 9.5 4.375 8.53125 4.8125 7.75C5.28125 7 6.09375 6.5 7 6.5C7.875 6.5 8.6875 7 9.15625 7.75C9.59375 8.53125 9.59375 9.5 9.15625 10.25C8.6875 11.0312 7.875 11.5 7 11.5Z",fill:"#1C2523"})],-1)),n.popupData.updateToBackendActive?Pe("",!0):(he(),ye("span",VW,Ae(e.$t("saveDesign.button")),1)),n.popupData.updateToBackendActive?(he(),ye("span",UW,[K("div",zW,[K("div",GW,[t[5]||(t[5]=K("svg",{"aria-hidden":"true",class:"inline w-8 h-8 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"},[K("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"}),K("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)),K("span",HW,Ae(e.$t("loading")),1)])])])):Pe("",!0)])])])]),_:1},8,["modelValue","imageSrc","imageAlt"])}}},jW={class:"h-fit overflow-y-auto w-full"},QW={class:"text-[28px] font-normal mb-4 leading-[1.2]"},$W={class:"text-base font-normal text-white mb-6 leading-loose"},YW={class:"space-y-4"},XW={class:"flex flex-col xs:flex-row gap-4 my-4"},qW={class:"w-full text-sm"},KW=["placeholder"],ZW={__name:"EditConfigurationName",props:{popupData:Object,baseUrl:String},setup(n){return(e,t)=>{const r=Yt("ConfirmDlg");return he(),gt(r,{modelValue:n.popupData.popup,"onUpdate:modelValue":t[2]||(t[2]=o=>n.popupData.popup=o),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configuratie-opslaan.jpg",imageAlt:e.$t("popup.image_alt")},{default:ot(()=>[K("div",jW,[K("h2",QW,Ae(e.$t("editName.title")),1),K("span",$W,Ae(e.$t("editName.description")),1),K("div",YW,[K("div",XW,[K("label",qW,[Ye(Ae(e.$t("editName.design_name"))+" ",1),Kn(K("input",{type:"text",placeholder:e.$t("editName.design_name_placeholder"),class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0","onUpdate:modelValue":t[0]||(t[0]=o=>n.popupData.editNameInput=o)},null,8,KW),[[Rr,n.popupData.editNameInput]])])]),K("button",{type:"submit",class:"flex items-center h-13 mt-8 bg-primary-green text-tertiary-green font-normal px-5 py-2.5 rounded-md hover:bg-button-hover-green transition",onClick:t[1]||(t[1]=o=>e.$emit("submit"))},[t[3]||(t[3]=K("svg",{class:"mr-2",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 14H0V13V1V0H1H10.5L14 3.5V13V14H13H1ZM13 13V3.9375L10.0625 1H10V4.5V5H9.5H2.5H2V4.5V1H1V13H13ZM3 1V4H9V1H3ZM5.5 9C5.5 9.5625 5.78125 10.0312 6.25 10.3125C6.6875 10.5938 7.28125 10.5938 7.75 10.3125C8.1875 10.0312 8.5 9.5625 8.5 9C8.5 8.46875 8.1875 8 7.75 7.71875C7.28125 7.4375 6.6875 7.4375 6.25 7.71875C5.78125 8 5.5 8.46875 5.5 9ZM7 11.5C6.09375 11.5 5.28125 11.0312 4.8125 10.25C4.375 9.5 4.375 8.53125 4.8125 7.75C5.28125 7 6.09375 6.5 7 6.5C7.875 6.5 8.6875 7 9.15625 7.75C9.59375 8.53125 9.59375 9.5 9.15625 10.25C8.6875 11.0312 7.875 11.5 7 11.5Z",fill:"#1C2523"})],-1)),Ye(" "+Ae(e.$t("editName.button")),1)])])])]),_:1},8,["modelValue","imageSrc","imageAlt"])}}},JW={class:"h-fit overflow-y-auto"},ej={class:"text-[28px] font-normal mb-4 leading-[1.2]"},tj={class:"text-base font-normal text-white mb-4 leading-loose"},nj={class:"space-y-4"},rj={class:"flex flex-col xs:flex-row gap-4 my-4"},oj={class:"w-full text-sm"},ij=["value"],aj={__name:"RemoveConfiguration",props:{popupData:Object,baseUrl:String},setup(n){return(e,t)=>{const r=Yt("ConfirmDlg");return he(),gt(r,{modelValue:n.popupData.popup,"onUpdate:modelValue":t[1]||(t[1]=o=>n.popupData.popup=o),imageSrc:n.baseUrl+"/Uploads/aluwdoors-configuratie-opslaan.jpg",imageAlt:e.$t("popup.image_alt")},{default:ot(()=>[K("div",JW,[K("h2",ej,Ae(e.$t("deleteConfig.title")),1),K("span",tj,Ae(e.$t("deleteConfig.description")),1),K("div",nj,[K("div",rj,[K("label",oj,[K("input",{type:"text",readonly:"",placeholder:"",class:"mt-2 w-full bg-popup-input text-white px-4 py-2 rounded-md focus:outline-hidden h-12 placeholder:transition-opacity placeholder:duration-200 placeholder:ease-out focus:placeholder:opacity-0",value:n.popupData.actualName},null,8,ij)])]),K("button",{type:"submit",class:"cursor-pointer flex items-center h-13 mt-8 bg-warning-red text-white font-normal px-5 py-2.5 rounded-md hover:bg-warning-red/80 transition",onClick:t[0]||(t[0]=o=>e.$emit("submit"))},[t[2]||(t[2]=K("svg",{class:"mr-2",width:"14",height:"16",viewBox:"0 0 14 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M5 0H9H9.25L9.40625 0.25L10.5 2H11.9688H13H14V3H12.9062L12 16H2L1.0625 3H0V2H1H2H3.46875L4.5625 0.25L4.71875 0H5ZM9.34375 2L8.71875 1H5.25L4.625 2H9.34375ZM2.90625 15H11.0625L11.9062 3H2.0625L2.90625 15ZM4.96875 6.28125L5.3125 6.65625L7 8.3125L8.65625 6.65625L9 6.28125L9.71875 7L9.34375 7.34375L7.6875 9L9.34375 10.6875L9.71875 11.0312L9 11.75L8.65625 11.375L7 9.71875L5.3125 11.375L4.96875 11.75L4.25 11.0312L4.625 10.6875L6.28125 9L4.625 7.34375L4.25 7L4.96875 6.28125Z",fill:"#F0F3F3"})],-1)),Ye(" "+Ae(e.$t("deleteConfig.button")),1)])])])]),_:1},8,["modelValue","imageSrc","imageAlt"])}}};function sj(n,e=null,t=(r,o)=>r){const r=n?JSON.parse(JSON.stringify(n)):{};"price"in r&&delete r.price,"vat"in r&&delete r.vat,r.deur_aantal_staander??(r.deur_aantal_staander=0),r.deur_aantal_ligger??(r.deur_aantal_ligger=0),r.roede_configuratie??(r.roede_configuratie=""),r.fineer??(r.fineer=!1),r.roede_design_keuze??(r.roede_design_keuze=!1),r.bovenlicht_verberg_tussenstijl??(r.bovenlicht_verberg_tussenstijl=!1),r.bovenlicht_stijl_zijpaneel??(r.bovenlicht_stijl_zijpaneel=!1),r.kleur_ral_type??(r.kleur_ral_type="ntb"),r.zijpaneel_aantal_links??(r.zijpaneel_aantal_links=0),r.zijpaneel_aantal_rechts??(r.zijpaneel_aantal_rechts=0),r.deur_aantal_staander_input??(r.deur_aantal_staander_input=r.deur_aantal_staander),r.deur_aantal_ligger_input??(r.deur_aantal_ligger_input=r.deur_aantal_ligger),r.roede_configuratie_input??(r.roede_configuratie_input=r.roede_configuratie),!e||Object.keys(e).length;const o=!!e&&r.type!==e.type,i=!!e&&r.deur_aantal!==e.deur_aantal,a=!!e&&r.breedte!==e.breedte,s=!!e&&r.zijpaneel_aantal_links!==e.zijpaneel_aantal_links,l=!!e&&r.zijpaneel_aantal_rechts!==e.zijpaneel_aantal_rechts,c=!!e&&r.deur_aantal_ligger!==e.deur_aantal_ligger,u=!!e&&r.deur_aantal_staander!==e.deur_aantal_staander,d=!!e&&r.zijpaneel_aantal_staander!==e.zijpaneel_aantal_staander,f=!!e&&r.roede_design_keuze!==e.roede_design_keuze,h=!!e&&r.kleur_materiaal.includes("FINEER")&&!e.kleur_materiaal.includes("FINEER"),p=!!e&&r.draairichting!==e.draairichting&&(r.draairichting=="DRAAI_RECHTS"||e.draairichting=="DRAAI_RECHTS"),m=!!e&&r.schuifrichting!==e.schuifrichting&&(r.schuifrichting=="SCHUIF_RECHTS"||e.schuifrichting=="SCHUIF_RECHTS"),g={limitPanelWidth:"",limitPanelHeight:"",underWidthHeightInput:"",underPanelQuantityInput:"",underSidePanelDimensionInput:"",underSidePanelDimensionInputLeft:[],underSidePanelDimensionInputRight:[],underPanelWidthInput:[],underBovenlichtInput:"",underRalColorNumberInput:"",underInputStaanderDeur:[],underInputLiggerDeur:[]},_=nT(r.type),A=rT(r.type),y=oT(r.type),b=iT(r.type),E=aT(r.type),x=sT(r.type),w=Zz(r.type,r.bovenlicht,r.zijpaneel_aantal_links,r.zijpaneel_aantal_rechts);if(r.deurbreedtevariabelVisible=["vaste-wand"].includes(r.type)&&r.deur_aantal>1,r.deurbreedtevariabel=r.deurbreedtevariabel&&r.deurbreedtevariabelVisible,r.bovenlichtVisible=["taatsdeur","scharnierdeur"].includes(r.type),r.bovenlicht=r.bovenlicht&&r.bovenlichtVisible,r.hoogte=Number(r.hoogte),r.breedte=Number(r.breedte),r.hoogtebovenlicht=Number(r.hoogtebovenlicht),r.deur_aantal<_&&(r.deur_aantal=_),r.deur_aantal>A&&(r.deur_aantal=A),r.breedteb?(r.breedte=b,o||(g.limitPanelWidth=t("userMessages.maxWidth",{limit:b}))):g.limitPanelWidth="",r.breedte*r.deur_aantal>Ve.maximaleTotaleBreedteCm&&!r.deurbreedtevariabel){let G=Ve.maximaleTotaleBreedteCm/r.deur_aantal;G=Number(G.toFixed(2)),r.breedte=G,o||(g.underWidthHeightInput=t("userMessages.maxWidthAutoAdjusted",{limit:Ve.maximaleTotaleBreedteCm}))}if(r.deurbreedtevariabel){r.variabeledeurbreedte_maten=r.variabeledeurbreedte_maten.map(se=>Number(se)||0);let G=0;for(let se=0;seVe.maximaleTotaleBreedteCm){let ie=Ve.maximaleTotaleBreedteCm-(G-r.variabeledeurbreedte_maten[se]);r.variabeledeurbreedte_maten[se]=ie,o||(g.underPanelWidthInput[se]=t("userMessages.maxWidthThisSidePanel",{maxPanelWidth:ie,maxTotalWidth:Ve.maximaleTotaleBreedteCm}))}r.variabeledeurbreedte_maten[se]b&&(r.variabeledeurbreedte_maten[se]=b,o||(g.underPanelWidthInput[se]=t("userMessages.maxWidth",{limit:b})))}}if(r.deurbreedtevariabel&&i){let G=0;for(let se=0;seVe.maximaleTotaleBreedteCm){for(let se=0;se"u"&&(r.variabeledeurbreedte_maten[G]=60);else for(let G=0;G<6;G++)r.variabeledeurbreedte_maten[G]=r.breedte;r.hoogtex?(r.hoogte=x,o||(g.limitPanelHeight=t("userMessages.maxHeight",{limit:x}))):g.limitPanelHeight="",r.bovenlicht&&(r.bovenlicht&&r.hoogtebovenlicht+r.hoogte>w?w-r.hoogteVe.bovenLichtMaxHoogte?(r.hoogtebovenlicht=Ve.bovenLichtMaxHoogte,g.underBovenlichtInput=t("userMessages.maxHeightTopLight",{limit:Ve.bovenLichtMaxHoogte})):g.underBovenlichtInput=""),r.zijpaneel_breedte_links??(r.zijpaneel_breedte_links=[]);for(let G=1;G<=Ve.maxZijpanelenLinks;G++)typeof(r==null?void 0:r.zijpaneel_breedte_links[G-1])>"u"&&(r.zijpaneel_breedte_links[G-1]=60),r.zijpaneel_breedte_links[G-1]=Number(r.zijpaneel_breedte_links[G-1]),r.zijpaneel_breedte_links[G-1]Ve.zijPaneelMaxBreedte&&(r.zijpaneel_breedte_links[G-1]=Ve.zijPaneelMaxBreedte,G<=r.zijpaneel_aantal_links&&!o&&(g.underSidePanelDimensionInputLeft[G-1]=t("userMessages.maxWidthSidePanel",{limit:Ve.zijPaneelMaxBreedte})));r.zijpaneel_breedte_rechts??(r.zijpaneel_breedte_rechts=[]);for(let G=1;G<=Ve.maxZijpanelenRechts;G++)typeof r.zijpaneel_breedte_rechts[G-1]>"u"&&(r.zijpaneel_breedte_rechts[G-1]=60),r.zijpaneel_breedte_rechts[G-1]=Number(r.zijpaneel_breedte_rechts[G-1]),r.zijpaneel_breedte_rechts[G-1]Ve.zijPaneelMaxBreedte&&(r.zijpaneel_breedte_rechts[G-1]=Ve.zijPaneelMaxBreedte,G<=r.zijpaneel_aantal_rechts&&!o&&(g.underSidePanelDimensionInputRight[G-1]=t("userMessages.maxWidthSidePanel",{limit:Ve.zijPaneelMaxBreedte})));if(["taatsdeur","scharnierdeur","schuifdeur"].includes(r.type)||(r.zijpaneel_aantal_links=0,r.zijpaneel_aantal_rechts=0),r.zijpaneel_aantal_links==0)for(let G=1;G<=Ve.maxZijpanelenLinks;G++)r.zijpaneel_breedte_links[G-1]=60;if(r.zijpaneel_aantal_rechts==0)for(let G=1;G<=Ve.maxZijpanelenRechts;G++)r.zijpaneel_breedte_rechts[G-1]=60;let L=Ve.maximaleTotaleBreedteCm-r.breedte*r.deur_aantal;r.zijpaneel_aantal_links>0||r.zijpaneel_aantal_rechts>0;{let G=0;if(r.zijpaneel_aantal_links>0)for(let se=1;se<=r.zijpaneel_aantal_links;se++)G+=r.zijpaneel_breedte_links[se-1];if(r.zijpaneel_aantal_rechts>0)for(let se=1;se<=r.zijpaneel_aantal_rechts;se++)G+=r.zijpaneel_breedte_rechts[se-1];if(G>L){let se=r.zijpaneel_aantal_links+r.zijpaneel_aantal_rechts,ee=L/se;if(ee=Number(ee.toFixed(2)),r.zijpaneel_aantal_links>0)for(let ie=1;ie<=r.zijpaneel_aantal_links;ie++)r.zijpaneel_breedte_links[ie-1]=ee;if(r.zijpaneel_aantal_rechts>0)for(let ie=1;ie<=r.zijpaneel_aantal_rechts;ie++)r.zijpaneel_breedte_rechts[ie-1]=ee;g.underSidePanelDimensionInput=t("userMessages.maxSidePanelTotalWidth",{limit:Ve.maximaleTotaleBreedteCm})}else g.underSidePanelDimensionInput=""}r.asymmetrisch||(r.asymmetrisch_staander_maten_deur=[],r.asymmetrisch_ligger_maten=[],r.asymmetrisch_staander_maten_zijpaneel=[]),r.roede_design_keuzeVisible=(["taatsdeur","scharnierdeur","schuifdeur","opdekdeur"].includes(r.type)&&r.deur_aantal<=2||["vaste-wand"].includes(r.type)&&r.deur_aantal<2)&&!(r.tienmmglas&&r.verbergtussenstaanders),r.roede_design_keuze=r.roede_design_keuzeVisible?r.roede_design_keuze:!1,r.roede_design_keuze&&(r.typeroede="PLATTE_ROEDE"),f&&r.roede_design_keuze&&(r.roede_design_roedes_doorlopen_zijlicht_bovenlicht=!0,r.roede_configuratie_input==""&&(r.roede_configuratie_input="RV09 - De Nunspeetse")),r.roede_configuratie=r.roede_design_keuze??!1?r.roede_configuratie_input??"":"";let C=0,P=r.deur_aantal==1&&r.draairichting=="DRAAI_RECHTS"?"Rechts":"Links";if(r.roede_design_keuze)for(let G=1;G<=4;G++)cT(G,P,r,aA)&&(C+=1);r.liggers_zijpaneel_links_roedeconfiguratie=C;let D=0,Q=r.deur_aantal==1&&r.draairichting=="DRAAI_RECHTS"?"Links":"Rechts";if(r.roede_design_keuze)for(let G=1;G<=4;G++)cT(G,Q,r,aA)&&(D+=1);if(r.liggers_zijpaneel_rechts_roedeconfiguratie=D,r.deur_aantal_staander_input>0&&!r.asymmetrisch&&!r.roede_design_keuze)for(let G=1;G<=r.deur_aantal;G++)for(let se=1;se<=4;se++)r.deur_aantal_staander_input>=se&&(r.deurbreedtevariabel?r.asymmetrisch_staander_maten_deur[G*100+se]=(r.deurbreedtematen[G]/(r.deur_aantal_staander_input+1)*se).toFixed(1):r.asymmetrisch_staander_maten_deur[G*100+se]=(r.breedte/(r.deur_aantal_staander_input+1)*se).toFixed(1));if(r.deur_aantal_staander_input>0&&r.asymmetrisch)for(let G=1;G<=r.deur_aantal;G++){let se=5,ee=r.deurbreedtevariabel?r.variabeledeurbreedte_maten[G]-5:r.breedte-5,ie=r.deurbreedtevariabel?r.variabeledeurbreedte_maten[G]:r.breedte;for(let H=1;H<=4;H++)if(r.deur_aantal_staander_input>=H){if(g.underInputStaanderDeur[G*100+H]="",(isNaN(Number(r.asymmetrisch_staander_maten_deur[G*100+H]))||r.asymmetrisch_staander_maten_deur[G*100+H]==0||u)&&(r.asymmetrisch_staander_maten_deur[G*100+H]=(ie/(r.deur_aantal_staander_input+1)*H).toFixed(1)),r.asymmetrisch_staander_maten_deur[G*100+H]=Number(r.asymmetrisch_staander_maten_deur[G*100+H]),p||m){let T=ie-r.asymmetrisch_staander_maten_deur[G*100+H];r.asymmetrisch_staander_maten_deur[G*100+H]=T}r.asymmetrisch_staander_maten_deur[G*100+H]ee&&(r.asymmetrisch_staander_maten_deur[G*100+H]=ee,g.underInputStaanderDeur[G*100+H]=t("userMessages.maxPosition",{limit:ee}))}}if(["vaste-wand","scharnierdeur"].includes(r.type)&&r.tienmmglas&&r.verbergtussenstaanders&&(r.deur_aantal_staander_input=0),["vouwwand"].includes(r.type)&&(r.deur_aantal_staander_input=0),r.deur_aantal_staanderVisible=!(r!=null&&r.roede_design_keuze)&&!(["vaste-wand","scharnierdeur"].includes(r.type)&&r.tienmmglas&&r.verbergtussenstaanders)&&!["vouwwand"].includes(r.type),r.deur_aantal_staander=r!=null&&r.roede_design_keuze?0:r.deur_aantal_staander_input,r.deur_aantal_ligger_input>0&&!r.asymmetrisch)for(let G=1;G<=4;G++)r.deur_aantal_ligger_input>=G?r.asymmetrisch_ligger_maten[G-1]=(r.hoogte/(r.deur_aantal_ligger_input+1)*G).toFixed(1):r.asymmetrisch_ligger_maten[G-1]=0;if(r.asymmetrisch){let G=5,se=r.hoogte-5,ee=r.hoogte;for(let ie=1;ie<=4;ie++)g.underInputLiggerDeur[ie-1]="",r.deur_aantal_ligger_input>=ie?((isNaN(Number(r.asymmetrisch_ligger_maten[ie-1]))||Number(r.asymmetrisch_ligger_maten[ie-1])==0||c)&&(r.asymmetrisch_ligger_maten[ie-1]=(ee/(r.deur_aantal_ligger_input+1)*ie).toFixed(1)),r.asymmetrisch_ligger_maten[ie-1]=Number(r.asymmetrisch_ligger_maten[ie-1]),r.asymmetrisch_ligger_maten[ie-1]se&&(r.asymmetrisch_ligger_maten[ie-1]=se,g.underInputLiggerDeur[ie-1]=t("userMessages.maxPosition",{limit:se}))):r.asymmetrisch_ligger_maten[ie-1]=0}if(["vaste-wand","scharnierdeur"].includes(r.type)&&r.tienmmglas&&r.verbergtussenstaanders&&(r.deur_aantal_ligger_input=0),r.deur_aantal_liggerVisible=!(r!=null&&r.roede_design_keuze)&&!(["vaste-wand","scharnierdeur"].includes(r.type)&&r.tienmmglas&&r.verbergtussenstaanders),r.deur_aantal_ligger=r!=null&&r.roede_design_keuze?0:r.deur_aantal_ligger_input,r.zijpaneel_aantal_staander>0&&!r.asymmetrisch){for(let G=1;G<=4;G++)r.zijpaneel_aantal_staander>=G?r.asymmetrisch_staander_maten_zijpaneel[100+G]=(r.zijpaneel_breedte_links[0]/(r.zijpaneel_aantal_staander+1)*G).toFixed(1):r.asymmetrisch_staander_maten_zijpaneel[100+G]=0,r.asymmetrisch_staander_maten_zijpaneel[100+G]=Number(r.asymmetrisch_staander_maten_zijpaneel[100+G]);for(let G=1;G<=4;G++)r.zijpaneel_aantal_staander>=G?r.asymmetrisch_staander_maten_zijpaneel[200+G]=(r.zijpaneel_breedte_rechts[0]/(r.zijpaneel_aantal_staander+1)*G).toFixed(1):r.asymmetrisch_staander_maten_zijpaneel[200+G]=0,r.asymmetrisch_staander_maten_zijpaneel[200+G]=Number(r.asymmetrisch_staander_maten_zijpaneel[200+G])}if(r.zijpaneel_aantal_staander>0&&r.asymmetrisch){for(let G=1;G<=4;G++)r.zijpaneel_aantal_staander>=G&&(isNaN(Number(r.asymmetrisch_staander_maten_zijpaneel[100+G]))||Number(r.asymmetrisch_staander_maten_zijpaneel[100+G])==0||d)&&(r.asymmetrisch_staander_maten_zijpaneel[100+G]=(r.zijpaneel_breedte_links[0]/(r.zijpaneel_aantal_staander+1)*G).toFixed(1)),r.asymmetrisch_staander_maten_zijpaneel[100+G]=Number(r.asymmetrisch_staander_maten_zijpaneel[100+G]);for(let G=1;G<=4;G++)r.zijpaneel_aantal_staander>=G&&(isNaN(Number(r.asymmetrisch_staander_maten_zijpaneel[200+G]))||Number(r.asymmetrisch_staander_maten_zijpaneel[200+G])==0||d)&&(r.asymmetrisch_staander_maten_zijpaneel[200+G]=(r.zijpaneel_breedte_rechts[0]/(r.zijpaneel_aantal_staander+1)*G).toFixed(1)),r.asymmetrisch_staander_maten_zijpaneel[200+G]=Number(r.asymmetrisch_staander_maten_zijpaneel[200+G])}if(r.zijpaneel_aantal_staanderVisible=(r.zijpaneel_aantal_links>0||r.zijpaneel_aantal_rechts>0)&&!(r.tienmmglas&&r.verbergtussenstaanders),r.zijpaneel_aantal_staander=r.zijpaneel_aantal_staanderVisible?r.zijpaneel_aantal_staander:0,r.typeroedeVisible=!r.roede_design_keuze&&!["vouwwand"].includes(r.type)&&(r.deur_aantal_ligger>0||r.deur_aantal_staander>0||r.zijpaneel_aantal_staander>0||r.bovenlicht&&r.deur_aantal>1&&!r.bovenlicht_verberg_tussenstijl||r.bovenlicht&&(r.zijpaneel_aantal_links>0||r.zijpaneel_aantal_rechts>0)&&r.bovenlicht_stijl_zijpaneel),["vouwwand"].includes(r.type)&&(r.typeroede="PLATTE_ROEDE"),r.kleur_materiaal=r.kleur_materiaal||"KLEUR_ALUMINIUM_ZWART",["opdekdeur","vouwwand"].includes(r.type)&&r.kleur_materiaal.includes("FINEER")&&(r.kleur_materiaal="KLEUR_ALUMINIUM_ZWART"),["vouwwand"].includes(r.type)&&(r.kleur_materiaal="KLEUR_ALUMINIUM_ZWART"),!uj(r.kleur_materiaal))if(r.kleur_materiaal=="KLEUR_ALUMINIUM_GRIJS")r.kleur_materiaal="KLEUR_ALUMINIUM_RAL",r.kleur_ral=7006,r.ral_opmerking="KLEUR_ALUMINIUM_GRIJS";else{r.ral_opmerking=r.kleur_materiaal;let G=r.kleur_materiaal;const se=G.match(/\d+/);r.kleur_ral=se?Number(se[0]):G,r.kleur_materiaal="KLEUR_ALUMINIUM_RAL"}!cj(r.kleur_materiaal,r.type)&&r.kleur_materiaal.includes("FINEER")&&(r.kleur_materiaal="FINEER_RM_21_NATURAL"),!lj(r.kleur_materiaal,r.type)&&!r.kleur_materiaal.includes("FINEER")&&(r.kleur_materiaal="KLEUR_ALUMINIUM_ZWART"),r.kleur_materiaal=r.kleur_materiaal||"KLEUR_ALUMINIUM_ZWART",dj(r.kleur_glas,r.type)||(r.kleur_glas="GLAS_BLANK"),r.kleur_materiaal=="KLEUR_ALUMINIUM_RAL"&&r.kleur_ral_type==""&&(r.kleur_ral_type="ntb"),r.deur_aantal!=1&&(r.draairichting="DRAAI_NTB"),r.draairichting!="DRAAI_NTB"&&r.draairichting!="DRAAI_LINKS"&&r.draairichting!="DRAAI_RECHTS"&&(r.draairichting="DRAAI_NTB"),r.kleur_materiaal.includes("FINEER")||(Mf(r.handgreep,r.type)&&(r.type_handgreep="aluminium"),Mf(r.handgreep,r.type)||(r.handgreep="HANDGREEP_HOEK",r.type_handgreep="aluminium")),r.kleur_materiaal.includes("FINEER")?(uA(r.handgreep,r.type)||(r.handgreep="HANDGREEP_HOEK",r.type_handgreep="aluminium"),["aluminium","hout"].includes(r.type_handgreep)||(Mf(r.handgreep,r.type)?r.type_handgreep="aluminium":uA(r.handgreep,r.type)?r.type_handgreep="hout":(r.handgreep="HANDGREEP_HOEK",r.type_handgreep="aluminium"))):r.type_handgreep="aluminium",h&&(r.handgreep="FINEER_HANDGREEP_HOEKGREEP",r.type_handgreep="hout"),r.type_handgreep=="aluminium"&&!Mf(r.handgreep,r.type)&&(r.handgreep="HANDGREEP_HOEK",r.type_handgreep="aluminium"),r.type_handgreep=="hout"&&!uA(r.handgreep,r.type)&&(r.handgreep="FINEER_HANDGREEP_HOEKGREEP",r.type_handgreep="hout"),r.type=="vouwwand"&&(Mf(r.handgreep,r.type)||(r.handgreep="HANDGREEP_KLINK_1")),r.type=="opdekdeur"&&(r.handgreep="HANDGREEP_KLINK_1"),r.kleur_materiaal=="KLEUR_ALUMINIUM_RAL"&&(r.kleur_ral<1e3||r.kleur_ral>9999)?g.underRalColorNumberInput=t("userMessages.ralColorRange"):g.underRalColorNumberInput="",r.draairichtingVisible=["taatsdeur","scharnierdeur","opdekdeur"].includes(r.type)&&r.deur_aantal==1,r.draairichtingVisible||(r.draairichting="DRAAI_NTB"),r.actievedeurVisible=["scharnierdeur"].includes(r.type)&&r.deur_aantal>1,r.actievedeurVisible||(r.actievedeur="ACTIEVEDEUR_NTB"),r.actievedeurVisible&&r.actievedeur==""&&(r.actievedeur="ACTIEVEDEUR_NTB"),r.type_vergrendelingVisible=["scharnierdeur","opdekdeur"].includes(r.type)&&(r.handgreep=="HANDGREEP_KLINK_1"||r.handgreep=="HANDGREEP_KLINK_2")||["vouwwand"].includes(r.type)&&r.handgreep=="HANDGREEP_KLINK_1",r.type_vergrendelingVisible||(r.type_vergrendeling="geen");let re=[];return["vouwwand"].includes(r.type)?re=[{label:t("step3.lock_none"),value:"geen"},{label:t("step3.lock_cylinder"),value:"cilinder"}]:re=[{label:t("step3.lock_none"),value:"geen"},{label:t("step3.lock_cylinder"),value:"cilinder"},{label:t("step3.lock_occupied_free"),value:"vrijbezet"}],r.type_vergrendelingOptions=re,r.cilinder=(r.type_vergrendeling=="cilinder"&&r.type_vergrendelingVisible)??!1,r.vrijbezet=(r.type_vergrendeling=="vrijbezet"&&r.type_vergrendelingVisible)??!1,r.tienmmglasVisible=["vaste-wand","scharnierdeur"].includes(r.type)&&!r.kleur_materiaal.includes("FINEER")&&!r.hogeonderdorpel,r.tienmmglas=r.tienmmglasVisible&&r.tienmmglas,r.verbergtussenstaandersVisible=r.tienmmglas&&(["vaste-wand"].includes(r.type)||["scharnierdeur"].includes(r.type)&&(r.zijpaneel_aantal_links>=2||r.zijpaneel_aantal_rechts>=2)),r.verbergtussenstaanders=r.verbergtussenstaandersVisible&&r.verbergtussenstaanders,r.valdorpelVisible=["scharnierdeur"].includes(r.type)&&!r.hogeonderdorpel&&r.breedte>=Ve.scharnierDeurValdorpelBreedteMinCm&&r.breedte<=Ve.scharnierDeurValdorpelBreedteMaxCm,["scharnierdeur"].includes(r.type)&&r.valdorpel&&r.breedte>Ve.scharnierDeurValdorpelBreedteMaxCm&&(r.valdorpel=!1),["scharnierdeur"].includes(r.type)&&r.valdorpel&&r.breedte=80,r.softclose_dubbel=r.softclose_dubbelVisible&&r.softclose_dubbel&&!r.softclose,r.fineer=r.kleur_materiaal.startsWith("FINEER_"),r.userMessages=g,{...r}}function cT(n,e,t,r){let o=!1,i=t.roede_design_roedes_doorlopen_zijlicht_bovenlicht??!0,a=r&&typeof r=="object"&&r.hasOwnProperty(t.roede_configuratie)?r[t.roede_configuratie]:[],s=[];return e=="Links"&&(s=a.Links),e=="Rechts"&&(parseInt(t.deur_aantal)>1?s=a.Links:s=a.Rechts),e=="Boven"&&(s=a.Boven??void 0),s&&s[n]!==void 0&&i&&(o=!0),o}function Mf(n,e){return e?!!cA.find(r=>r.value===n&&r.visible.includes(e)):!1}function uA(n,e){if(!e)return!1;const t=cA.find(o=>o.value===n&&o.visible.includes(e)),r=tT.find(o=>o.value===n&&o.visible.includes(e));return!!t||!!r}function lj(n,e){return e?!!sA.find(r=>r.value===n&&r.visible.includes(e)):!1}function cj(n,e){return e?!!lA.find(r=>r.value===n&&r.visible.includes(e)):!1}function uj(n){const e=sA.find(r=>r.value===n),t=lA.find(r=>r.value===n);return!!e||!!t}function dj(n,e){return e?!!eT.find(r=>r.value===n&&r.visible.includes(e)):!1}let dA="/apii";Gt.defaults.withCredentials=!0,Gt.defaults.headers.common["X-Requested-With"]="XMLHttpRequest",Gt.defaults.headers.common.Accept="application/json",Gt.defaults.xsrfCookieName="XSRF-TOKEN",Gt.defaults.xsrfHeaderName="X-XSRF-TOKEN";function fj(){const n=document.cookie.match(/XSRF-TOKEN=([^;]+)/);return n?decodeURIComponent(n[1]):null}function hj(){return document.cookie.split(";").some(n=>n.trim().startsWith("XSRF-TOKEN="))}async function pj(){if(!hj())try{await Gt.get(`${dA}/sanctum/csrf-cookie`,{withCredentials:!0})}catch(n){console.error("Failed to fetch CSRF cookie:",n)}}Gt.interceptors.request.use(n=>{const e=fj();return e&&(n.headers["X-XSRF-TOKEN"]=e),n});const hr={setApiUrl:function(n){dA=n},getApiUrl:function(){return dA},doGet:function(n,e,t=null,r=null){var o=this;Gt.get(n,r).then(i=>{o.handleMessages(i)==!0?typeof e<"u"&&e!=null&&e(i):typeof t<"u"&&t!=null&&t(i)}).catch(function(i){console.log(i),o.handleException(i,o),typeof t<"u"&&t!=null&&t(i)})},doDelete:function(n,e,t=null,r=null){var o=this;Gt.delete(n,r).then(i=>{o.handleMessages(i)==!0?typeof e<"u"&&e!=null&&e(i):typeof t<"u"&&t!=null&&t(i)}).catch(function(i){console.log(i),o.handleException(i,o),typeof t<"u"&&t!=null&&t(i)})},doPost:function(n,e,t,r=null,o=null){var i=this;Gt.post(n,e,o).then(a=>{i.handleMessages(a)==!0?typeof t<"u"&&t!=null&&t(a):typeof r<"u"&&r!=null&&r()}).catch(function(a){console.log(a),i.handleException(a,i),typeof r<"u"&&r!=null&&r()})},doPut:function(n,e,t,r=null,o=null){var i=this;Gt.put(n,e,o).then(a=>{i.handleMessages(a)==!0?typeof t<"u"&&t!=null&&t(a):typeof r<"u"&&r!=null&&r()}).catch(function(a){console.log(a),i.handleException(a,i),typeof r<"u"&&r!=null&&r(a)})},doLog:function(n,e){this.doPost(n,e,null,null,{headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}})},handleMessages:function(n){if(typeof n.data.message<"u")if(typeof n.data.success<"u")if(n.data.success==!0)this.notify("success",n.data.message),Sentry.captureMessage(n.data.message,"success");else return this.notify("error",n.data.message),Sentry.captureMessage(n.data.message,"error"),!1;else this.notify("info",n.data.message),Sentry.captureMessage(n.data.message,"info");return!0},handleException:function(n,e){typeof n.response<"u"&&typeof n.response.data.message<"u"?n.response.status==419?location.reload():this.notify("error",n.response.data.message):typeof n.message<"u"?this.notify("error",n.message):this.notify("error",trans("base.error"))},notify:function(n,e){typeof e<"u"&&e!=null&&console.log(typeof e=="object"?Object.values(e)+" - "+n:e+" - "+n)},formatCurrencyFormat:function(n){return new Intl.NumberFormat("nl-NL",{style:"currency",currency:"EUR"}).format(n)},generateUUID:function(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx-cust".replace(/[xy]/g,function(n){const e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})},checkDeviceId:function(){try{let n=localStorage.getItem("configuratorUuid");if(!n){const e=this.generateUUID();return localStorage.setItem("configuratorUuid",e),e}return String(n)}catch{return this.generateUUID()}},versionedUrl:function(n){if(!n)return n;const e=n.includes("?")?"&":"?";return`${n}${e}v=mlaxicsg`},ensureCsrfCookie:pj};async function mj({apiUrl:n,templateId:e,configData:t,description:r,state:o}){o.updateToBackendActive=!0,await hr.ensureCsrfCookie();const i=JSON.stringify(t);hr.doPost(n+"/api/update-template/"+e,{templateData:i,description:r||(t==null?void 0:t.name)||"Template"},a=>{o.updateToBackendActive=!1,a.data.success?alert("Template saved successfully."):(console.error("Failed to save template:",a.data.error),alert("Failed to save template. Please try again."))},()=>{o.updateToBackendActive=!1,alert("Failed to save template. Please try again.")})}function gj({apiUrl:n,templateId:e}){return new Promise((t,r)=>{hr.doPost(n+"/api/template/"+e,{},o=>{if(o.data.success&&o.data.templateData)try{const i=JSON.parse(o.data.templateData);t({data:i,description:o.data.description||""})}catch(i){console.error("Failed to parse template data:",i),r(i)}else console.error("Failed to load template:",o.data.error),r(new Error(o.data.error||"Failed to load template"))},o=>{console.error("Failed to load template:",o),r(o)})})}let Im=null;function Rm(){if(Im)return Im;let n=window.location.origin,e=window.location.origin,t=window.location.hostname;window.location.href.includes("aluwdoors.com")?n="https://configurator.aluwdoors.com":window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"?n=window.location.origin:n="https://aluwdoors.aronex.dev",window.location.href.includes("aluwdoors.com")?e="https://configurator-api.aluwdoors.com":window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"?e="http://localhost:8123":e="https://aluwdoors-api.aronex.dev",t=t.replace("www.",""),t=t.replace("configurator.aluwdoors.com","aluwdoors.com"),t=t.replace("aluwdoors.aronex.dev","aluwdoors.gaat.live"),t=t.replace("aluwdoors.devtof3.nl","aluwdoors.gaat.live"),t=t.replace("localhost","aluwdoors.gaat.live");const r=document.getElementById("configurator");return r&&r.dataset.baseUrl&&(n=r.dataset.baseUrl),r&&r.dataset.apiUrl&&(e=r.dataset.apiUrl),Im={baseUrl:n,apiUrl:e,domain:t},Im}function Lm(n,e){const{apiUrl:t}=Rm();n&&typeof n.setApiUrl=="function"&&n.setApiUrl(t),e&&typeof e.setApiUrl=="function"&&e.setApiUrl(t)}const _j={key:0,class:"tf-configurator fixed inset-0 z-99999"},vj={class:"bg-white rounded-2xl shadow-lg p-8 max-w-md w-full relative cursor-default"},Aj={class:"text-center mb-8"},yj={class:"text-2xl font-bold text-gray-800 mb-2"},bj={class:"text-gray-600"},xj={key:0,class:"mb-6 bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded-xl"},Ej={for:"modal-email",class:"block text-sm font-medium text-gray-700 mb-1"},Cj=["disabled","placeholder"],Sj={for:"modal-password",class:"block text-sm font-medium text-gray-700 mb-1"},wj=["disabled","placeholder"],Mj={class:"flex items-center"},Tj=["disabled"],Ij={for:"modal-remember",class:"ml-2 block text-sm text-gray-700"},Rj=["disabled"],Lj={key:0,class:"flex items-center justify-center"},Pj={key:1},fA=zi({__name:"LoginModal",props:{show:{type:Boolean,default:!1}},emits:["login-success","close"],setup(n,{emit:e}){const t=n,r=e,o=vt(""),i=vt(""),a=vt(!1),s=vt(!1),l=vt(null);dr(()=>t.show,u=>{u&&(o.value="",i.value="",a.value=!1,l.value=null)});async function c(){s.value=!0,l.value=null;const u=await bn.login(o.value,i.value,a.value);s.value=!1,u.success?r("login-success"):l.value=u.error}return(u,d)=>(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"modal",appear:""},{default:ot(()=>[n.show?(he(),ye("div",_j,[K("div",{class:"w-full h-full p-3 md:p-6 lg:p-10 bg-[#1B2221]/94 flex justify-center items-center cursor-pointer",onClick:d[4]||(d[4]=ja(f=>r("close"),["self"]))},[K("div",vj,[K("button",{type:"button",onClick:d[0]||(d[0]=f=>r("close")),class:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors cursor-pointer","aria-label":"Close"},[...d[5]||(d[5]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])]),K("div",Aj,[K("h1",yj,Ae(u.$t("auth.loginTitle")),1),K("p",bj,Ae(u.$t("auth.loginSubtitle")),1)]),l.value?(he(),ye("div",xj,Ae(l.value),1)):Pe("",!0),K("form",{onSubmit:ja(c,["prevent"]),class:"space-y-6"},[K("div",null,[K("label",Ej,Ae(u.$t("auth.email")),1),Kn(K("input",{id:"modal-email","onUpdate:modelValue":d[1]||(d[1]=f=>o.value=f),type:"email",required:"",autocomplete:"email",disabled:s.value,class:"w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all disabled:opacity-50",placeholder:u.$t("auth.emailPlaceholder")},null,8,Cj),[[Rr,o.value]])]),K("div",null,[K("label",Sj,Ae(u.$t("auth.password")),1),Kn(K("input",{id:"modal-password","onUpdate:modelValue":d[2]||(d[2]=f=>i.value=f),type:"password",required:"",autocomplete:"current-password",disabled:s.value,class:"w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all disabled:opacity-50",placeholder:u.$t("auth.passwordPlaceholder")},null,8,wj),[[Rr,i.value]])]),K("div",Mj,[Kn(K("input",{id:"modal-remember","onUpdate:modelValue":d[3]||(d[3]=f=>a.value=f),type:"checkbox",disabled:s.value,class:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"},null,8,Tj),[[$7,a.value]]),K("label",Ij,Ae(u.$t("auth.rememberMe")),1)]),K("button",{type:"submit",disabled:s.value,class:"w-full py-3 px-4 bg-blue-600 text-white font-semibold rounded-xl hover:bg-blue-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},[s.value?(he(),ye("span",Lj,[d[6]||(d[6]=K("svg",{class:"animate-spin -ml-1 mr-3 h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[K("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),K("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)),Ye(" "+Ae(u.$t("loading")),1)])):(he(),ye("span",Pj,Ae(u.$t("auth.loginButton")),1))],8,Rj)],32)])])])):Pe("",!0)]),_:1})]))}},[["__scopeId","data-v-fa265bc6"]]),Dj=["value"],Bj=["value"],Nj={key:0,class:"bg-background-light fixed md:static w-full h-max"},Oj={key:0,class:"relative max-w-[1450px] mx-auto px-2.5 w-full"},kj={class:"bg-primary-green rounded-xl pl-2 pr-8 md:pl-4 md:pr-12 py-2 text-secondary-green flex items-center justify-center w-full h-full text-left text-base font-medium"},Fj={class:"flex flex-col md:flex-row max-w-[1450px] mx-auto rounded-xl"},Vj={ref:"configuratorLeftPanel",class:"flex-0 md:flex-1 transition-all sticky top-0 h-fit"},Uj={class:"relative px-2.5 mt-2.5 xl:mt-5 w-full h-50 md:h-100 lg:h-120 text-black"},zj={class:"absolute top-2 md:top-4 right-6 flex space-x-2"},Gj={class:"px-2.5 mt-2.5 xl:mt-5 w-full max-md:hidden"},Hj={class:"w-full md:w-[310px] lg:w-[420px] md:shrink-0 mt-2.5 xl:mt-5 px-2.5 2xl:ml-4",id:"userInputDiv"},Wj={key:3},jj={key:0,class:"mb-4 mt-4 mx-2"},Qj={class:"block text-sm font-medium text-gray-700 mb-1"},$j=["placeholder"],Yj={class:"flex justify-center gap-4"},Xj={class:"w-full md:hidden"},qj={key:1,style:{height:"100%"},class:"overflow-hidden w-full h-screen"},Kj={class:"w-full h-screen"},Zj=0,ga={__name:"Configurator",setup(n){const e=b8(()=>Promise.resolve().then(()=>C3e)),t=vt(null),{top:r}=bF(t,{windowScroll:!0,windowResize:!0}),{height:o}=xF(),i=bt(()=>Math.max(0,o.value-r.value-Zj));Wz();const a=Lo("CUtils"),s=aF(),{locale:l,t:c}=cf(),u=s.params.lang!==""?s.params.lang:"nl";let d=s.params.configHash??"";const f=s.params.versionId??"",h=!!s.params.companyInternalEdit,p=vt(!1),m=s.params.indexKey??"",g=String(s.params.fullScreen??"").length>0,_=String(s.params.edit??"").length>0,A=s.params.templateId??"",y=vt(!1),b=vt(!1),E=vt(!0),x=vt(""),w=vt(0),L=vt(""),C=vt(""),P=vt(""),D=vt(""),Q=vt(""),re=vt(""),G=vt(""),se=vt(!1),ee=vt(!1),ie=vt(null);dr(p,pe=>{JM.internalOverrideLimits=pe},{immediate:!0});const H=bt(()=>{var Te;return((Te=z==null?void 0:z.data)==null?void 0:Te.name)??"Configuratie*"}),T=vt(0),R=Zr({popup:!1,editNameInput:""}),O=Zr({popup:!1,actualName:""}),W=Zr({wijzigenPopup:!1,popup:!1,typeOpdracht:"particulier",woonplaatsMontage:"",klantkeuzeMontage:"laten_inmeten_en_monteren",bedrijfsnaam:"",referentie:"",aanhef:"",voornaam:"",achternaam:"",telefoonnummer:"",emailadres:"",opmerkingen:"",errors:[],updateToBackendActive:!1,updateToBackendSkipMailChecked:!1,companyInternalEdit:!1,updateToBackendDone:!1}),ae=Zr({popup:!1,updateToBackendActive:!1,customerData:{voornaam:"",achternaam:"",email:""},errors:[]}),ne=Zr({updateToBackendActive:!1}),oe=vt(""),F=bt(()=>U.conf&&U.conf.length>0&&T.value{const pe=[];return U.conf&&U.conf.length>0&&U.conf.forEach((Te,Ce)=>{pe.push({type:"configuration",name:Te.name||`Configuratie ${Ce+1}`,price:Te.price??0})}),pe.push({type:"extra",name:c("footer.measuring"),price:c("footer.request_quote")}),pe.push({type:"extra",name:c("footer.assembly"),price:c("footer.request_quote")}),pe}),q=Zr({updateCount:0,parameters:Ve}),j=Zr(q),U=Zr({active:0,environment:"binnen",labels:!0,conf:[],tabOpen:re.value,actualUserOptionsVersion:w.value,companyInternalOverrideLimits:p.value}),z=Zr({data:null,dataPrev:null,index:null});function v(pe=null){pe?typeof pe=="object"&&pe!==null&&(q.type=pe.type,q.data=pe):typeof z.data=="object"&&z.data!==null&&(q.type=z.data.type,q.data=z.data),q.updateCount+=1,q.parameters.appAPIUrl=D.value,q.parameters.baseUrl=P.value,q.roedeConfiguratieDetails=aA,Va(()=>{var Te=new Event("change"),Ce=document.getElementById("configJSON");Ce.dispatchEvent(Te)})}function M(){if(typeof z.data=="object"&&z.data!==null)if(T.value30||_||localStorage.setItem("configuratorActualConfig",JSON.stringify(U))}const S=wF(()=>{a.doPost(D.value+"/api/get-price",{config:JSON.stringify(U),configHash:String(d),deviceUuid:G.value,priceCalculatorVersion:x.value},pe=>{var Te;pe.data.success&&(pe.data.calcPrice.forEach((Ce,Zt)=>{U.conf[Zt].price=Ce.LineAmount,U.conf[Zt].vat=Ce.LineAmount*.21}),(Te=pe==null?void 0:pe.data)!=null&&Te.priceCalculatorVersion&&(x.value=pe.data.priceCalculatorVersion))},pe=>{console.log(pe)},null)},200);function I(pe=!1){pe?z.data.maatvoering_weergeven&&(z.data.maatvoering_weergeven=!1,Lr.emit("configuratorUserInput")):(z.data.maatvoering_weergeven=!z.data.maatvoering_weergeven,Lr.emit("configuratorUserInput"))}function J(){U.conf.push(JSON.parse(JSON.stringify(Xz))),V(U.conf.length-1),z.data.name="Configuratie "+U.conf.length,z.indexKey=""}function $(){U.conf.length!==0&&(O.actualName=U.conf[T.value].name,O.popup=!0)}function B(){if(O.popup=!1,U.conf.length!==0)if(U.conf.splice(T.value,1),U.conf.length>0){const pe=Math.max(0,T.value-1);V(pe)}else te()}function V(pe){typeof pe<"u"&&(T.value=pe,U.active=pe,z.data=JSON.parse(JSON.stringify(U.conf[pe])),delete z.data.price,delete z.data.vat,z.dataPrev=JSON.parse(JSON.stringify(z.data)),je())}function Y(){W.companyInternalEdit=h,h||(W.updateToBackendSkipMailChecked=!1),W.updateToBackendActive=!1,W.updateToBackendDone=!1,y.value&&String(f).length==0&&!b.value?(W.popup=!0,W.wijzigenPopup=!0):(W.popup=!0,W.wijzigenPopup=!1)}function le(){W.updateToBackendActive=!0,U.actualUserOptionsVersion=w.value,U.companyInternalOverrideLimits=p.value;const pe={adsdata:[],attachments:[],code:"offerte-aanvragen",configHash:String(d).length>30?String(d):"",configuration:U,customer:{city:W.woonplaatsMontage,company:W.bedrijfsnaam,countrycode:"NLD",email:W.emailadres,firstname:W.voornaam,lastname:W.achternaam,phone:W.telefoonnummer,reference:W.referentie,region:1,remark:W.opmerkingen,salutation:W.aanhef},domain:Q.value,install_delivery:W.klantkeuzeMontage,skipmail:W.updateToBackendSkipMailChecked,typeRequest:"deur",deviceUuid:G.value,priceCalculatorVersion:x.value};a.doPost(D.value+"/api/create-or-update-configuration",{data:JSON.stringify(pe)},Te=>{W.updateToBackendActive=!1,W.wijzigenPopup=!1,h?(W.popup=!1,W.updateToBackendDone=!1):W.updateToBackendDone=!0,String(d).length>30||(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"offerte_aanvraag_configurator",userEmail:W.emailadres})),Te.data.configHash&&(d=Te.data.configHash,y.value=!0)},Te=>{W.updateToBackendActive=!1},null)}function me(){ae.popup=!0,ae.updateToBackendActive=!1}function fe(){ae.updateToBackendActive=!0;const pe={code:"configuratie-opslaan",configHash:String(d).length>30?String(d):"",configuration:U,customer:{city:null,company:null,countrycode:"NLD",email:ae.customerData.email,firstname:ae.customerData.voornaam,lastname:ae.customerData.achternaam,phone:null,reference:null,region:1,remark:null,salutation:null},domain:Q.value,deviceUuid:G.value};console.log(pe),a.doPost(D.value+"/api/save-configuration",{data:JSON.stringify(pe)},Te=>{console.log(Te),ae.updateToBackendActive=!1,ae.popup=!1},Te=>{console.log(Te),ae.updateToBackendActive=!1},null)}function te(){U.conf.length==0&&J()}function de(){var pe;R.editNameInput=((pe=U.conf[T.value])==null?void 0:pe.name)||"Configuratie",R.popup=!0}function we(){z.data.name=R.editNameInput||"Configuratie",R.popup=!1,je()}function Ie(pe=null){if(x.value="latest",w.value=Pr,pe||(pe=localStorage.getItem("configuratorActualConfig")),pe)try{const Te=JSON.parse(pe);typeof Te=="object"&&Te!==null&&typeof Te.conf=="object"&&Te.conf!==null&&(U.active=Te.active??0,U.environment=Te.environment,U.labels=Te.labels,U.conf=Te.conf,T.value=U.active,V(T.value),re.value=Te.tabOpen,re.value==""&&(re.value="1"))}catch(Te){console.log("loadFromStorage error: "+Te)}}async function Ne(){x.value="??";let pe="";String(f).length>10?pe=D.value+"/api/get-configuration/"+Q.value+"/"+d+"/"+f:pe=D.value+"/api/get-configuration/"+Q.value+"/"+d,await a.doPost(pe,{deviceUuid:G.value},Te=>{if(Te.data.success)try{const Ce=JSON.parse(Te.data.configData);b.value=Te.data.isOnlyConfigStore??!1,L.value=Te.data.number??"",E.value=Te.data.editConfiguration??!1,x.value=Te.data.priceCalculatorVersion??"V0",w.value=Ce.actualUserOptionsVersion??0,p.value=Ce.companyInternalOverrideLimits??!1,typeof Ce=="object"&&Ce!==null&&typeof Ce.conf=="object"&&Ce.conf!==null&&(U.active=0,U.environment=Ce.environment,U.labels=Ce.labels,U.conf=Ce.conf,String(m).length>0?U.conf.forEach((Zt,rt)=>{Zt.indexKey==String(m)&&V(rt)}):V(U.active),re.value==""&&(re.value="1"),W.aanhef=Te.data.customerData.Salutation??"",W.voornaam=Te.data.customerData.FirstName??"",W.achternaam=Te.data.customerData.LastName??"",W.telefoonnummer=Te.data.customerData.Phone??"",W.emailadres=Te.data.customerData.Email??"",W.bedrijfsnaam=Te.data.customerData.CompanyName??"",W.referentie=Te.data.customerData.CustReference??"",W.opmerkingen=Te.data.customerData.Notes??"",W.woonplaatsMontage=Te.data.customerData.City??"",W.typeOpdracht=Te.data.customerData.CompanyName??""?"zakelijk":"particulier",W.klantkeuzeMontage="laten_inmeten_en_monteren",Te.data.Measuring=="Customer"&&Te.data.deliveryChoice=="PickUpByCustomer"&&Te.data.installationChoice=="InstallationByCustomer"&&(W.klantkeuzeMontage="zelf_inmeten_en_afhalen"),Te.data.Measuring=="Customer"&&Te.data.deliveryChoice=="DeliveryByUs"&&Te.data.installationChoice=="InstallationByCustomer"&&(W.klantkeuzeMontage="zelf_inmeten_en_afleveren"),Te.data.Measuring=="AluxDoors"&&Te.data.deliveryChoice=="DeliveryByUs"&&Te.data.installationChoice=="InstallationByCustomer"&&(W.klantkeuzeMontage="laten_inmeten_en_afleveren"),v())}catch(Ce){console.log("loadFromAPI error: "+Ce)}},Te=>{console.log(Te)},null)}function He(){var Te;console.log("loadFromJobParams");const pe=(Te=ie.value)==null?void 0:Te.value;v(pe)}const je=async()=>{await Va(),z.data=sj(z.data,z.dataPrev,c),z.dataPrev=JSON.parse(JSON.stringify(z.data)),M(),v(),g||S()},ct=async()=>{await Va(),await je(),g||S()};function Vt(){mj({apiUrl:D.value,templateId:A,configData:JSON.stringify(U),description:oe.value,state:ne})}async function En(){x.value="latest",w.value=Pr;const pe=await gj({apiUrl:D.value,templateId:A});if(oe.value=pe.description||"",!pe.data||Object.keys(pe.data).length===0)throw new Error("Template data is invalid: data is missing or empty");Ie(pe.data),v()}$o(async()=>{G.value=a.checkDeviceId();const pe=Rm();if(P.value=pe.baseUrl,D.value=pe.apiUrl,Q.value=pe.domain,Lm(a,bn),_&&(bn.state.isLoading&&await bn.init(),!bn.state.isAuthenticated)){ee.value=!0;return}if(C.value=P.value+"/fonts/Satoshi-Bold.woff",["nl","en"].includes(u)?l.value=u:l.value="nl",String(A).length>0){y.value=!1;try{await En(),je()}catch{te(),je()}}else String(d).length>30?(y.value=!0,Ne()):(y.value=!1,Ie(),te(),je());Lr.on("configuratorUserInput",je),Lr.on("configuratorLoaded",ct),window.addEventListener("jobJsonConfigDataLoaded",He)});async function Rt(){if(ee.value=!1,String(A).length>0)try{await En(),je()}catch(pe){console.error("Failed to load template:",pe)}}return Fc(()=>{Lr.off("configuratorUserInput",je),Lr.off("configuratorLoaded",ct),window.removeEventListener("jobJsonConfigDataLoaded",He)}),(pe,Te)=>{var Zt;const Ce=Yt("FooterPrice");return he(),ye(Nt,null,[Be(fA,{show:ee.value,onLoginSuccess:Rt,onClose:Te[0]||(Te[0]=rt=>ee.value=!1)},null,8,["show"]),ee.value?Pe("",!0):(he(),ye(Nt,{key:0},[K("input",{type:"hidden",id:"configJSON",name:"configJSON",class:"configJSON",value:JSON.stringify(j)},null,8,Dj),Te[28]||(Te[28]=K("input",{type:"hidden",id:"triggerRenderImage",name:"triggerRenderImage",class:"triggerRenderImage"},null,-1)),K("input",{type:"hidden",id:"jobJsonConfigData",name:"jobJsonConfigData",ref_key:"jobJsonConfigData",ref:ie,class:"jobJsonConfigData"},null,512),K("input",{type:"hidden",id:"actualUserOptionsVersion",name:"actualUserOptionsVersion",class:"actualUserOptionsVersion",value:w.value},null,8,Bj),Ct(g)?Pe("",!0):(he(),ye("div",Nj,[Be(wW,{popupData:W,baseUrl:P.value,onSubmit:le},null,8,["popupData","baseUrl"]),Be(WW,{popupData:ae,baseUrl:P.value,onSubmit:fe},null,8,["popupData","baseUrl"]),Be(ZW,{popupData:R,baseUrl:P.value,onSubmit:we},null,8,["popupData","baseUrl"]),Be(aj,{popupData:O,baseUrl:P.value,onSubmit:B},null,8,["popupData","baseUrl"]),L.value?(he(),ye("div",Oj,[K("div",kj,[Ye(Ae(pe.$t("quotation_loaded",{index:L.value}))+" ",1),E.value?(he(),ye(Nt,{key:0},[Ye(Ae(pe.$t("quotation_notification_editable")),1)],64)):(he(),ye(Nt,{key:1},[Ye(Ae(pe.$t("quotation_notification_not_editable")),1)],64))]),K("div",{class:"absolute bottom-3 right-5 bg-primary-green text-secondary-green rounded-full w-8 h-8 flex items-center justify-center cursor-pointer shadow-md shadow-secondary-green",onClick:Te[1]||(Te[1]=rt=>L.value=null)},[...Te[23]||(Te[23]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])])])):Pe("",!0),K("div",Fj,[K("div",Vj,[Be(VH,{configuratorActualConfig:U,activeConfigName:H.value,companyInternalEdit:Ct(h),companyInternalOverrideLimits:p.value,"onUpdate:companyInternalOverrideLimits":Te[2]||(Te[2]=rt=>p.value=rt),onEditName:de,onAddConfig:J,onDeleteConfig:Te[3]||(Te[3]=rt=>$()),onActivateConfiguration:V,onShowLogin:Te[4]||(Te[4]=rt=>ee.value=!0)},null,8,["configuratorActualConfig","activeConfigName","companyInternalEdit","companyInternalOverrideLimits"]),K("div",Uj,[Be(Ct(e),{baseUrl:P.value,apiUrl:D.value,deviceUuid:G.value,fullScreen:Ct(g),fullScreenTemplate:!1,fontUrl:C.value},null,8,["baseUrl","apiUrl","deviceUuid","fullScreen","fontUrl"]),K("div",zj,[se.value?(he(),ye("button",{key:0,class:"w-8.5 h-8.5 md:w-10 md:h-10 bg-background-light text-secondary-green rounded-full shadow flex items-center justify-center hover:bg-secondary-green hover:text-white transition-colors duration-200 focus:outline-hidden",onClick:Te[5]||(Te[5]=rt=>me())},[...Te[24]||(Te[24]=[K("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1.25 16.125H0.125V15V1.5V0.375H1.25H11.9375L15.875 4.3125V15V16.125H14.75H1.25ZM14.75 15V4.80469L11.4453 1.5H11.375V5.4375V6H10.8125H2.9375H2.375V5.4375V1.5H1.25V15H14.75ZM3.5 1.5V4.875H10.25V1.5H3.5ZM6.3125 10.5C6.3125 11.1328 6.62891 11.6602 7.15625 11.9766C7.64844 12.293 8.31641 12.293 8.84375 11.9766C9.33594 11.6602 9.6875 11.1328 9.6875 10.5C9.6875 9.90234 9.33594 9.375 8.84375 9.05859C8.31641 8.74219 7.64844 8.74219 7.15625 9.05859C6.62891 9.375 6.3125 9.90234 6.3125 10.5ZM8 13.3125C6.98047 13.3125 6.06641 12.7852 5.53906 11.9062C5.04688 11.0625 5.04688 9.97266 5.53906 9.09375C6.06641 8.25 6.98047 7.6875 8 7.6875C8.98438 7.6875 9.89844 8.25 10.4258 9.09375C10.918 9.97266 10.918 11.0625 10.4258 11.9062C9.89844 12.7852 8.98438 13.3125 8 13.3125Z"})],-1)])])):Pe("",!0),K("button",{id:"btnDimensions",class:Qt(["w-8.5 h-8.5 md:w-10 md:h-10 rounded-full shadow flex items-center justify-center hover:text-background-light hover:bg-tertiary-green transition-colors duration-200 focus:outline-hidden",(Zt=z==null?void 0:z.data)!=null&&Zt.maatvoering_weergeven?"bg-secondary-green text-background-light":"bg-background-light text-secondary-green"]),onClick:Te[6]||(Te[6]=rt=>I())},[...Te[25]||(Te[25]=[K("svg",{width:"18",height:"19",viewBox:"0 0 18 19",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1.125 1.375V17.125H16.875V17.0547L15.0469 15.2266L14.4492 15.8594L14.0625 16.2461L13.2539 15.4375L13.6406 15.0508L14.2734 14.4531L12.2344 12.4141L11.6367 13.0469L11.25 13.4336L10.4414 12.625L10.8281 12.2383L11.4609 11.6406L9.42188 9.60156L8.82422 10.2344L8.4375 10.6211L7.62891 9.8125L8.01562 9.42578L8.64844 8.82812L6.60938 6.78906L6.01172 7.42188L5.625 7.80859L4.81641 7L5.20312 6.61328L5.83594 6.01562L3.79688 3.97656L3.19922 4.60938L2.8125 4.99609L2.00391 4.1875L2.39062 3.80078L3.02344 3.20312L1.19531 1.375H1.125ZM1.6875 0.25L18 16.5625V17.125V18.25H16.875H1.125H0V17.125V1.375V0.25H1.125H1.6875ZM3.9375 7.91406L4.88672 8.86328L9.38672 13.3633L10.3359 14.3125H9H4.5H3.9375V13.75V9.25V7.91406ZM5.0625 10.6211V13.2227H7.62891L5.0625 10.6211Z"})],-1)])],2),K("button",{id:"btnCamera",class:"w-8.5 h-8.5 md:w-10 md:h-10 bg-background-light text-secondary-green rounded-full shadow flex items-center justify-center hover:bg-secondary-green hover:text-white transition-colors duration-200 focus:outline-hidden",onClick:Te[7]||(Te[7]=rt=>I(!0))},[...Te[26]||(Te[26]=[K("svg",{width:"19",height:"17",viewBox:"0 0 19 17",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M6.125 0.375H12.875L13.6133 2.625H17.375H18.5V3.75V15V16.125H17.375H1.625H0.5V15V3.75V2.625H1.625H5.35156L6.125 0.375ZM13.6133 3.75H12.8047L12.5586 3.01172L12.0312 1.5H6.93359L6.44141 3.01172L6.16016 3.75H5.35156H1.625V15H17.375V3.75H13.6133ZM6.125 9.9375H8.375H8.9375V11.0625H8.375H7.46094L7.95312 11.5898C8.375 11.9766 8.90234 12.1875 9.5 12.1875C10.4492 12.1875 11.3281 11.6953 11.8203 10.957L12.7695 11.5547C12.0664 12.6445 10.8711 13.3125 9.5 13.3125C8.62109 13.3125 7.77734 12.9961 7.17969 12.3633L6.6875 11.8711V12.75V13.3125H5.5625V12.75V10.5V9.9375H6.125ZM13.4375 8.8125H12.875H10.625H10.0625V7.6875H10.625H11.5039L11.0117 7.19531C10.5898 6.80859 10.0625 6.5625 9.5 6.5625C8.51562 6.5625 7.63672 7.08984 7.14453 7.82812L6.19531 7.23047C6.89844 6.14062 8.12891 5.4375 9.5 5.4375C10.3438 5.4375 11.1875 5.78906 11.7852 6.42188L12.3125 6.91406V6V5.4375H13.4375V6V8.25V8.8125Z"})],-1)])])])]),K("div",Gj,[Be(Ce,{buttonQuoteVisible:E.value,buttonSaveVisible:se.value,buttonQuoteRequestOrUpdate:y.value&&String(Ct(f)).length==0&&!b.value,existingConfig:y.value&&String(Ct(f)).length==0&&!b.value,baseUrl:P.value,priceItems:k.value,onClickQuoteButton:Te[8]||(Te[8]=rt=>Y()),onClickSaveButton:Te[9]||(Te[9]=rt=>me())},AE({_:2},[F.value?{name:"price",fn:ot(()=>[Ye(Ae(Ct(a).formatCurrencyFormat(F.value)),1)]),key:"0"}:void 0,F.value?{name:"priceInclVat",fn:ot(()=>[Ye(Ae(Ct(a).formatCurrencyFormat(F.value*1.21)),1)]),key:"1"}:void 0]),1032,["buttonQuoteVisible","buttonSaveVisible","buttonQuoteRequestOrUpdate","existingConfig","baseUrl","priceItems"])])],512),K("div",Hj,[K("div",{ref_key:"startDiv",ref:t,class:"overflow-y-scroll md:overflow-hidden h-[var(--content-h)] md:h-auto",style:Rd({"--content-h":i.value+"px"})},[z.data?(he(),gt(iA,{key:0,label:pe.$t("step1.choose_product"),modelValue:re.value,"onUpdate:modelValue":Te[12]||(Te[12]=rt=>re.value=rt),tabNumber:"1"},{default:ot(()=>[Be(gG,{modelValue:z.data,"onUpdate:modelValue":Te[10]||(Te[10]=rt=>z.data=rt),baseUrl:P.value,onSetTabValue:Te[11]||(Te[11]=rt=>re.value=rt)},null,8,["modelValue","baseUrl"])]),_:1},8,["label","modelValue"])):Pe("",!0),z.data?(he(),gt(iA,{key:1,label:pe.$t("step2.choose_layout"),modelValue:re.value,"onUpdate:modelValue":Te[15]||(Te[15]=rt=>re.value=rt),tabNumber:"2"},{default:ot(()=>[Be(UG,{modelValue:z.data,"onUpdate:modelValue":Te[13]||(Te[13]=rt=>z.data=rt),baseUrl:P.value,onSetTabValue:Te[14]||(Te[14]=rt=>re.value=rt)},null,8,["modelValue","baseUrl"])]),_:1},8,["label","modelValue"])):Pe("",!0),z.data?(he(),gt(iA,{key:2,label:pe.$t("step3.choose_detailing"),modelValue:re.value,"onUpdate:modelValue":Te[19]||(Te[19]=rt=>re.value=rt),tabNumber:"3"},{default:ot(()=>[Be(_H,{modelValue:z.data,"onUpdate:modelValue":Te[16]||(Te[16]=rt=>z.data=rt),baseUrl:P.value,onSetTabValue:Te[17]||(Te[17]=rt=>re.value=rt),buttonQuoteVisible:E.value,companyInternalEdit:Ct(h),buttonQuoteRequestOrUpdate:y.value&&String(Ct(f)).length==0&&!b.value,actualUserOptionsVersion:w.value,onClickQuoteButton:Te[18]||(Te[18]=rt=>Y())},null,8,["modelValue","baseUrl","buttonQuoteVisible","companyInternalEdit","buttonQuoteRequestOrUpdate","actualUserOptionsVersion"])]),_:1},8,["label","modelValue"])):Pe("",!0),Ct(_)?(he(),ye("div",Wj,[Te[27]||(Te[27]=K("div",{class:"border-t border-horizontal-line -mx-10"},null,-1)),Ct(A)?(he(),ye("div",jj,[K("label",Qj,Ae(pe.$t("templateName")),1),Kn(K("input",{"onUpdate:modelValue":Te[20]||(Te[20]=rt=>oe.value=rt),type:"text",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary-green focus:border-transparent",placeholder:pe.$t("templateNamePlaceholder")},null,8,$j),[[Rr,oe.value]])])):Pe("",!0),K("div",Yj,[Ct(_)&&Ct(A)?(he(),gt(Tm,{key:0,label:pe.$t("saveTemplate"),loading:ne.updateToBackendActive,onClick:Vt,disabled:ne.updateToBackendActive},null,8,["label","loading","disabled"])):Pe("",!0)])])):Pe("",!0),K("div",Xj,[Be(Ce,{buttonQuoteVisible:E.value,buttonSaveVisible:se.value,buttonQuoteRequestOrUpdate:y.value&&String(Ct(f)).length==0&&!b.value,existingConfig:y.value&&String(Ct(f)).length==0&&!b.value,baseUrl:P.value,priceItems:k.value,onClickQuoteButton:Te[21]||(Te[21]=rt=>Y()),onClickSaveButton:Te[22]||(Te[22]=rt=>me())},AE({_:2},[F.value?{name:"price",fn:ot(()=>[Ye(Ae(Ct(a).formatCurrencyFormat(F.value)),1)]),key:"0"}:void 0,F.value?{name:"priceInclVat",fn:ot(()=>[Ye(Ae(Ct(a).formatCurrencyFormat(F.value*1.21)),1)]),key:"1"}:void 0]),1032,["buttonQuoteVisible","buttonSaveVisible","buttonQuoteRequestOrUpdate","existingConfig","baseUrl","priceItems"])])],4)])])])),Ct(g)?(he(),ye("div",qj,[K("div",Kj,[Be(Ct(e),{baseUrl:P.value,apiUrl:D.value,deviceUuid:G.value,fullScreen:Ct(g),fullScreenTemplate:String(Ct(A)).length>0,fontUrl:C.value},null,8,["baseUrl","apiUrl","deviceUuid","fullScreen","fullScreenTemplate","fontUrl"])])])):Pe("",!0)],64))],64)}}},Jj={class:"tf-configurator min-h-screen bg-background-light"},eQ={key:0,class:"max-w-[1200px] mx-auto px-4 py-8"},tQ={class:"mb-8 flex justify-between items-start"},nQ={class:"text-3xl font-bold text-secondary-green mb-2"},rQ={class:"text-gray-600"},oQ={key:0,class:"text-sm text-gray-500 mt-1"},iQ={class:"flex gap-2"},aQ=["disabled"],sQ={key:0,xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},lQ={key:1,class:"animate-spin rounded-full h-4 w-4 border-b-2 border-white"},cQ={key:0,class:"flex justify-center items-center py-20"},uQ={key:1,class:"bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded-xl"},dQ={key:2,class:"text-center py-20 text-gray-500"},fQ={key:3,class:"grid gap-4"},hQ={class:"shrink-0 w-full md:w-48 h-32 bg-gray-100 rounded-lg overflow-hidden"},pQ=["src","alt"],mQ={key:1,class:"w-full h-full flex items-center justify-center text-gray-400"},gQ={class:"flex-1"},_Q={class:"font-semibold text-secondary-green text-lg"},vQ={class:"text-sm text-gray-500 mt-1"},AQ={class:"bg-gray-100 px-2 py-0.5 rounded text-xs"},yQ={class:"text-sm text-gray-400 mt-1"},bQ={class:"text-sm text-gray-400 mt-1"},xQ={class:"flex gap-2 shrink-0"},EQ=["onClick"],CQ=["href"],SQ=["href"],wQ=["onClick"],MQ={key:4,class:"flex justify-center items-center gap-2 mt-6"},TQ=["disabled"],IQ={class:"flex gap-1"},RQ=["onClick"],LQ=["disabled"],PQ={key:0,class:"tf-configurator fixed inset-0 z-99999"},DQ={class:"w-full h-full p-3 md:p-6 lg:p-10 bg-[#1B2221]/94 flex justify-center items-center"},BQ={class:"bg-white rounded-2xl p-6 max-w-md w-full"},NQ={class:"text-xl font-bold text-secondary-green mb-4"},OQ={class:"text-gray-600 mb-6"},kQ={class:"flex gap-3 justify-end"},FQ=["disabled"],VQ={key:0},UQ={key:1},hA=10,zQ=zi({__name:"TemplateIndex",setup(n){const e=vt(!0),t=vt(null),r=vt([]),o=vt(!1),i=vt(1),a=bt(()=>{const E=(i.value-1)*hA,x=E+hA;return r.value.slice(E,x)}),s=bt(()=>Math.ceil(r.value.length/hA)),l=vt(!1),c=vt({show:!1,template:null,loading:!1}),u=vt("");$o(async()=>{const E=Rm();u.value=E.apiUrl,Lm(hr,bn),bn.state.isLoading&&await bn.init(),bn.state.isAuthenticated?h():(o.value=!0,e.value=!1)});function d(){o.value=!1,h()}async function f(){await bn.logout(),r.value=[],o.value=!0}function h(){e.value=!0,t.value=null,hr.doGet(`${u.value}/api/templates`,E=>{E.data.success?(r.value=E.data.templates,i.value=1):t.value=E.data.error||"Failed to load templates",e.value=!1},E=>{var x;((x=E==null?void 0:E.response)==null?void 0:x.status)===401?o.value=!0:t.value=(E==null?void 0:E.message)||"Failed to load templates",e.value=!1})}function p(){l.value=!0,t.value=null;const E=JSON.stringify({});hr.doPost(`${u.value}/api/store-template`,{templateData:E,description:"Template"},x=>{if(l.value=!1,x.data.success&&x.data.templateKey){const w=m(x.data.templateKey);window.open(w,"_blank"),h()}else t.value=x.data.error||"Failed to create template"},x=>{var w;l.value=!1,((w=x==null?void 0:x.response)==null?void 0:w.status)===401?o.value=!0:t.value=(x==null?void 0:x.message)||"Failed to create template"})}function m(E){return`${window.location.origin}/configurator/templates/${E}/edit`}function g(E){return`${window.location.origin}/configurator/${E}`}function _(E){return E?new Date(E).toLocaleDateString("nl-NL",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}function A(E){c.value={show:!0,template:E,loading:!1}}async function y(E){try{const x=await Gt.get(`${u.value}/api/templates/${E.TemplateKey}/preview`,{responseType:"blob",withCredentials:!0}),w=x.headers["content-type"];let L="jpg";if(w){const G=w.match(/image\/(\w+)/);G&&(L=G[1])}const D=`${(E.Description||"Template").replace(/[<>:"/\\|?*]/g,"").replace(/\s+/g,"_")}_${E.TemplateKey}.${L}`,Q=URL.createObjectURL(x.data),re=document.createElement("a");re.href=Q,re.download=D,document.body.appendChild(re),re.click(),document.body.removeChild(re),URL.revokeObjectURL(Q)}catch(x){console.error("Failed to download image:",x),t.value="Failed to download image"}}function b(){c.value.template&&(c.value.loading=!0,hr.doDelete(`${u.value}/api/templates/${c.value.template.TemplateKey}`,E=>{E.data.success?(r.value=r.value.filter(x=>x.id!==c.value.template.id),i.value>1&&a.value.length===0&&(i.value=i.value-1),c.value.show=!1):t.value=E.data.error||"Failed to delete template",c.value.loading=!1},E=>{var x;((x=E==null?void 0:E.response)==null?void 0:x.status)===401?o.value=!0:t.value="Failed to delete template",c.value.loading=!1}))}return(E,x)=>(he(),ye("div",Jj,[Be(fA,{show:o.value,onLoginSuccess:d,onClose:x[0]||(x[0]=w=>o.value=!1)},null,8,["show"]),o.value?Pe("",!0):(he(),ye("div",eQ,[K("div",tQ,[K("div",null,[K("h1",nQ,Ae(E.$t("templates.title")),1),K("p",rQ,Ae(E.$t("templates.description")),1),Ct(bn).state.user?(he(),ye("p",oQ,Ae(E.$t("auth.loggedInAs"))+": "+Ae(Ct(bn).state.user.email),1)):Pe("",!0)]),K("div",iQ,[K("button",{onClick:p,disabled:l.value,class:"inline-flex items-center gap-2 px-4 py-2 bg-secondary-green text-white rounded-lg hover:bg-tertiary-green transition-colors disabled:opacity-50 cursor-pointer"},[l.value?(he(),ye("div",lQ)):(he(),ye("svg",sQ,[...x[4]||(x[4]=[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"},null,-1)])])),Ye(" "+Ae(E.$t("templates.create")),1)],8,aQ),K("button",{onClick:f,class:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors cursor-pointer"},Ae(E.$t("auth.logout")),1)])]),e.value?(he(),ye("div",cQ,[...x[5]||(x[5]=[K("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-secondary-green"},null,-1)])])):t.value?(he(),ye("div",uQ,Ae(t.value),1)):r.value.length===0?(he(),ye("div",dQ,Ae(E.$t("templates.empty")),1)):(he(),ye("div",fQ,[(he(!0),ye(Nt,null,Xn(a.value,w=>(he(),ye("div",{key:w.id,class:"bg-white rounded-xl shadow-sm border border-gray-200 p-6 flex flex-col md:flex-row md:items-start justify-between gap-4"},[K("div",hQ,[w.previewUrl?(he(),ye("img",{key:0,src:w.previewUrl,alt:w.Description||"Template preview",class:"w-full h-full object-cover"},null,8,pQ)):(he(),ye("div",mQ,[...x[6]||(x[6]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-12 w-12",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1)])]))]),K("div",gQ,[K("h3",_Q,Ae(w.Description||E.$t("templates.noDescription")),1),K("p",vQ,[Ye(Ae(E.$t("templates.templateKey"))+": ",1),K("code",AQ,Ae(w.TemplateKey),1)]),K("p",yQ,Ae(E.$t("templates.createdAt"))+": "+Ae(_(w.created_at)),1),K("p",bQ,Ae(E.$t("templates.updatedAt"))+": "+Ae(_(w.updated_at)),1)]),K("div",xQ,[w.previewUrl?(he(),ye("button",{key:0,onClick:L=>y(w),class:"h-10 inline-flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors cursor-pointer"},[...x[7]||(x[7]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1)])],8,EQ)):Pe("",!0),K("a",{href:g(w.TemplateKey),target:"_blank",class:"h-10 inline-flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},[...x[8]||(x[8]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])],8,CQ),K("a",{href:m(w.TemplateKey),target:"_blank",class:"h-10 inline-flex items-center gap-2 px-4 py-2 bg-secondary-green text-white rounded-lg hover:bg-tertiary-green transition-colors"},[...x[9]||(x[9]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])],8,SQ),K("button",{onClick:L=>A(w),class:"h-10 inline-flex items-center gap-2 px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors cursor-pointer"},[...x[10]||(x[10]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])],8,wQ)])]))),128))])),s.value>1?(he(),ye("div",MQ,[K("button",{onClick:x[1]||(x[1]=w=>i.value=i.value-1),disabled:i.value===1,class:"px-3 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},[...x[11]||(x[11]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])],8,TQ),K("div",IQ,[(he(!0),ye(Nt,null,Xn(s.value,w=>(he(),ye("button",{key:w,onClick:L=>i.value=w,class:Qt(["px-3 py-2 rounded-lg transition-colors",i.value===w?"bg-secondary-green text-white":"bg-gray-200 text-gray-700 hover:bg-gray-300"])},Ae(w),11,RQ))),128))]),K("button",{onClick:x[2]||(x[2]=w=>i.value=i.value+1),disabled:i.value===s.value,class:"px-3 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},[...x[12]||(x[12]=[K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],8,LQ)])):Pe("",!0)])),(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"popup",appear:""},{default:ot(()=>{var w;return[c.value.show?(he(),ye("div",PQ,[K("div",DQ,[K("div",BQ,[K("h3",NQ,Ae(E.$t("templates.confirmDeleteTitle")),1),K("p",OQ,[Ye(Ae(E.$t("templates.confirmDeleteMessage"))+" ",1),x[13]||(x[13]=K("br",null,null,-1)),x[14]||(x[14]=K("br",null,null,-1)),K("strong",null,Ae(((w=c.value.template)==null?void 0:w.Description)||E.$t("templates.noDescription")),1)]),K("div",kQ,[K("button",{onClick:x[3]||(x[3]=L=>c.value.show=!1),class:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors"},Ae(E.$t("templates.cancel")),1),K("button",{onClick:b,disabled:c.value.loading,class:"px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors disabled:opacity-50"},[c.value.loading?(he(),ye("span",VQ,Ae(E.$t("loading")),1)):(he(),ye("span",UQ,Ae(E.$t("templates.delete")),1))],8,FQ)])])])])):Pe("",!0)]}),_:1})]))]))}},[["__scopeId","data-v-14cdbcf1"]]),GQ={class:"tf-configurator min-h-screen bg-background-light"},HQ={key:0,class:"max-w-[1200px] mx-auto px-4 py-8"},WQ={class:"mb-8 flex justify-between items-start"},jQ={class:"text-3xl font-bold text-secondary-green mb-2"},QQ={class:"text-gray-600"},$Q={key:0,class:"text-sm text-gray-500 mt-1"},YQ={class:"ml-2 px-2 py-0.5 rounded text-xs bg-secondary-green text-white"},XQ={class:"flex gap-2"},qQ={key:0,class:"bg-yellow-100 border border-yellow-400 text-yellow-700 px-4 py-3 rounded-xl"},KQ={key:1,class:"flex justify-center items-center py-20"},ZQ={key:2,class:"bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded-xl"},JQ={key:3,class:"text-center py-20 text-gray-500"},e$={key:4,class:"bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden"},t$={class:"w-full"},n$={class:"bg-gray-50"},r$={class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},o$={class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},i$={class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},a$={class:"px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider"},s$={class:"divide-y divide-gray-200"},l$={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},c$={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},u$={class:"px-6 py-4 whitespace-nowrap"},d$={class:"px-6 py-4 whitespace-nowrap text-right text-sm"},f$=["onClick"],h$=["onClick","disabled"],p$={key:0,class:"tf-configurator fixed inset-0 z-99999"},m$={class:"w-full h-full p-3 md:p-6 lg:p-10 bg-[#1B2221]/94 flex justify-center items-center"},g$={class:"bg-white rounded-2xl p-6 max-w-md w-full"},_$={class:"text-xl font-bold text-secondary-green mb-4"},v$={class:"block text-sm font-medium text-gray-700 mb-1"},A$={class:"block text-sm font-medium text-gray-700 mb-1"},y$={class:"block text-sm font-medium text-gray-700 mb-1"},b$={key:0,class:"text-gray-400 font-normal"},x$=["required"],E$={class:"block text-sm font-medium text-gray-700 mb-1"},C$={value:"admin"},S$={value:"superadmin"},w$={key:0,class:"text-red-600 text-sm"},M$={class:"flex gap-3 justify-end pt-4"},T$=["disabled"],I$={key:0},R$={key:1},L$={key:0,class:"tf-configurator fixed inset-0 z-99999"},P$={class:"w-full h-full p-3 md:p-6 lg:p-10 bg-[#1B2221]/94 flex justify-center items-center"},D$={class:"bg-white rounded-2xl p-6 max-w-md w-full"},B$={class:"text-xl font-bold text-secondary-green mb-4"},N$={class:"text-gray-600 mb-6"},O$={class:"flex gap-3 justify-end"},k$=["disabled"],F$={key:0},V$={key:1},U$=[{path:"/:lang([a-z]{2})?/:configurator(configurator)?/templates/admin",name:"Template Index",component:zQ,meta:{requiresAuth:!0}},{path:"/:lang([a-z]{2})?/:configurator(configurator)?/users/admin",name:"User Management",component:zi({__name:"UserManagement",setup(n){const e=vt(!0),t=vt(null),r=vt([]),o=vt(!1),i=vt(""),a=bt(()=>{var _;return((_=bn.state.user)==null?void 0:_.role)==="superadmin"}),s=vt({show:!1,isEdit:!1,loading:!1,error:null,user:null,form:{name:"",email:"",password:"",role:"admin"}}),l=vt({show:!1,user:null,loading:!1});$o(async()=>{const _=Rm();i.value=_.apiUrl,Lm(hr,bn),bn.state.isLoading&&await bn.init(),bn.state.isAuthenticated?d():(o.value=!0,e.value=!1)});function c(){o.value=!1,d()}async function u(){await bn.logout(),r.value=[],o.value=!0}function d(){if(!a.value){e.value=!1;return}e.value=!0,t.value=null,hr.doGet(`${i.value}/api/users`,_=>{_.data.success?r.value=_.data.users:t.value=_.data.error||"Failed to load users",e.value=!1},_=>{var A,y;((A=_==null?void 0:_.response)==null?void 0:A.status)===401?o.value=!0:((y=_==null?void 0:_.response)==null?void 0:y.status)===403?t.value="You are not authorized to view users":t.value=(_==null?void 0:_.message)||"Failed to load users",e.value=!1})}function f(){s.value={show:!0,isEdit:!1,loading:!1,error:null,user:null,form:{name:"",email:"",password:"",role:"admin"}}}function h(_){s.value={show:!0,isEdit:!0,loading:!1,error:null,user:_,form:{name:_.name,email:_.email,password:"",role:_.role}}}function p(){s.value.loading=!0,s.value.error=null;const _={name:s.value.form.name,email:s.value.form.email,role:s.value.form.role};s.value.form.password&&(_.password=s.value.form.password),s.value.isEdit?hr.doPut(`${i.value}/api/users/${s.value.user.id}`,_,A=>{if(A.data.success){const y=r.value.findIndex(b=>b.id===s.value.user.id);y!==-1&&(r.value[y]=A.data.user),s.value.show=!1}else s.value.error=A.data.error||"Failed to update user";s.value.loading=!1},A=>{var y,b;s.value.error=((b=(y=A==null?void 0:A.response)==null?void 0:y.data)==null?void 0:b.message)||"Failed to update user",s.value.loading=!1}):(_.password=s.value.form.password,hr.doPost(`${i.value}/api/users`,_,A=>{A.data.success?(r.value.push(A.data.user),s.value.show=!1):s.value.error=A.data.error||"Failed to create user",s.value.loading=!1},A=>{var y,b;s.value.error=((b=(y=A==null?void 0:A.response)==null?void 0:y.data)==null?void 0:b.message)||"Failed to create user",s.value.loading=!1}))}function m(_){l.value={show:!0,user:_,loading:!1}}function g(){l.value.user&&(l.value.loading=!0,hr.doDelete(`${i.value}/api/users/${l.value.user.id}`,_=>{_.data.success?(r.value=r.value.filter(A=>A.id!==l.value.user.id),l.value.show=!1):t.value=_.data.error||"Failed to delete user",l.value.loading=!1},_=>{var A,y,b;((A=_==null?void 0:_.response)==null?void 0:A.status)===401?o.value=!0:t.value=((b=(y=_==null?void 0:_.response)==null?void 0:y.data)==null?void 0:b.error)||"Failed to delete user",l.value.loading=!1}))}return(_,A)=>(he(),ye("div",GQ,[Be(fA,{show:o.value,onLoginSuccess:c,onClose:A[0]||(A[0]=y=>o.value=!1)},null,8,["show"]),o.value?Pe("",!0):(he(),ye("div",HQ,[K("div",WQ,[K("div",null,[K("h1",jQ,Ae(_.$t("users.title")),1),K("p",QQ,Ae(_.$t("users.description")),1),Ct(bn).state.user?(he(),ye("p",$Q,[Ye(Ae(_.$t("auth.loggedInAs"))+": "+Ae(Ct(bn).state.user.email)+" ",1),K("span",YQ,Ae(Ct(bn).state.user.role),1)])):Pe("",!0)]),K("div",XQ,[a.value?(he(),ye("button",{key:0,onClick:f,class:"inline-flex items-center gap-2 px-4 py-2 bg-secondary-green text-white rounded-lg hover:bg-tertiary-green transition-colors cursor-pointer"},[A[7]||(A[7]=K("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1)),Ye(" "+Ae(_.$t("users.create")),1)])):Pe("",!0),K("button",{onClick:u,class:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors cursor-pointer"},Ae(_.$t("auth.logout")),1)])]),a.value?e.value?(he(),ye("div",KQ,[...A[8]||(A[8]=[K("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-secondary-green"},null,-1)])])):t.value?(he(),ye("div",ZQ,Ae(t.value),1)):r.value.length===0?(he(),ye("div",JQ,Ae(_.$t("users.empty")),1)):(he(),ye("div",e$,[K("table",t$,[K("thead",n$,[K("tr",null,[K("th",r$,Ae(_.$t("users.name")),1),K("th",o$,Ae(_.$t("users.email")),1),K("th",i$,Ae(_.$t("users.role")),1),K("th",a$,Ae(_.$t("users.actions")),1)])]),K("tbody",s$,[(he(!0),ye(Nt,null,Xn(r.value,y=>{var b,E;return he(),ye("tr",{key:y.id},[K("td",l$,Ae(y.name),1),K("td",c$,Ae(y.email),1),K("td",u$,[K("span",{class:Qt(["px-2 py-1 text-xs rounded-full",y.role==="superadmin"?"bg-purple-100 text-purple-800":"bg-blue-100 text-blue-800"])},Ae(y.role==="superadmin"?_.$t("users.superadmin"):_.$t("users.admin")),3)]),K("td",d$,[K("button",{onClick:x=>h(y),class:"text-secondary-green hover:text-tertiary-green mr-3"},Ae(_.$t("users.edit")),9,f$),K("button",{onClick:x=>m(y),disabled:y.id===((b=Ct(bn).state.user)==null?void 0:b.id),class:Qt(["text-red-600 hover:text-red-800",y.id===((E=Ct(bn).state.user)==null?void 0:E.id)?"opacity-50 cursor-not-allowed":""])},Ae(_.$t("users.delete")),11,h$)])])}),128))])])])):(he(),ye("div",qQ,Ae(_.$t("users.notAuthorized")),1))])),(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"popup",appear:""},{default:ot(()=>[s.value.show?(he(),ye("div",p$,[K("div",m$,[K("div",g$,[K("h3",_$,Ae(s.value.isEdit?_.$t("users.editUser"):_.$t("users.createUser")),1),K("form",{onSubmit:ja(p,["prevent"]),class:"space-y-4"},[K("div",null,[K("label",v$,Ae(_.$t("users.name")),1),Kn(K("input",{"onUpdate:modelValue":A[1]||(A[1]=y=>s.value.form.name=y),type:"text",required:"",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-secondary-green focus:border-transparent"},null,512),[[Rr,s.value.form.name]])]),K("div",null,[K("label",A$,Ae(_.$t("users.email")),1),Kn(K("input",{"onUpdate:modelValue":A[2]||(A[2]=y=>s.value.form.email=y),type:"email",required:"",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-secondary-green focus:border-transparent"},null,512),[[Rr,s.value.form.email]])]),K("div",null,[K("label",y$,[Ye(Ae(_.$t("users.password"))+" ",1),s.value.isEdit?(he(),ye("span",b$,"("+Ae(_.$t("users.leaveBlank"))+")",1)):Pe("",!0)]),Kn(K("input",{"onUpdate:modelValue":A[3]||(A[3]=y=>s.value.form.password=y),type:"password",required:!s.value.isEdit,minlength:"8",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-secondary-green focus:border-transparent"},null,8,x$),[[Rr,s.value.form.password]])]),K("div",null,[K("label",E$,Ae(_.$t("users.role")),1),Kn(K("select",{"onUpdate:modelValue":A[4]||(A[4]=y=>s.value.form.role=y),required:"",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-secondary-green focus:border-transparent"},[K("option",C$,Ae(_.$t("users.admin")),1),K("option",S$,Ae(_.$t("users.superadmin")),1)],512),[[Y7,s.value.form.role]])]),s.value.error?(he(),ye("div",w$,Ae(s.value.error),1)):Pe("",!0),K("div",M$,[K("button",{type:"button",onClick:A[5]||(A[5]=y=>s.value.show=!1),class:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors"},Ae(_.$t("users.cancel")),1),K("button",{type:"submit",disabled:s.value.loading,class:"px-4 py-2 bg-secondary-green text-white rounded-lg hover:bg-tertiary-green transition-colors disabled:opacity-50"},[s.value.loading?(he(),ye("span",I$,Ae(_.$t("loading")),1)):(he(),ye("span",R$,Ae(s.value.isEdit?_.$t("users.save"):_.$t("users.create")),1))],8,T$)])],32)])])])):Pe("",!0)]),_:1})])),(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"popup",appear:""},{default:ot(()=>{var y,b;return[l.value.show?(he(),ye("div",L$,[K("div",P$,[K("div",D$,[K("h3",B$,Ae(_.$t("users.confirmDeleteTitle")),1),K("p",N$,[Ye(Ae(_.$t("users.confirmDeleteMessage"))+" ",1),A[9]||(A[9]=K("br",null,null,-1)),A[10]||(A[10]=K("br",null,null,-1)),K("strong",null,Ae((y=l.value.user)==null?void 0:y.name),1),Ye(" ("+Ae((b=l.value.user)==null?void 0:b.email)+") ",1)]),K("div",O$,[K("button",{onClick:A[6]||(A[6]=E=>l.value.show=!1),class:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors"},Ae(_.$t("users.cancel")),1),K("button",{onClick:g,disabled:l.value.loading,class:"px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors disabled:opacity-50"},[l.value.loading?(he(),ye("span",F$,Ae(_.$t("loading")),1)):(he(),ye("span",V$,Ae(_.$t("users.delete")),1))],8,k$)])])])])):Pe("",!0)]}),_:1})]))]))}},[["__scopeId","data-v-ffabc70a"]]),meta:{requiresAuth:!0}},{path:"/:lang(en)?/:configHash(\\w{30,80})?/v/:versionId(\\w{16})?/i/:indexKey(\\w{20})?/:fullScreen(\\w{10})?",name:"Configurator generate image configHash / versionId / indexKey",component:ga},{path:"/:lang(en)?/:configHash(\\w{30,80})?/:fullScreen(\\w{10})?",name:"Configurator",component:ga},{path:"/:lang(en)?/configurator/:configHash(\\w{30,80})?/:companyInternalEdit(\\w{20})?/:fullScreen(\\w{10})?",name:"Configurator configurator/hash80/companyInternalEdit20",component:ga},{path:"/:lang(en)?/configurator/:configHash(\\w{30,80})?/:companyInternalEdit(\\w{20})?/v/:versionId(\\w{16})?",name:"Configurator configurator/configHash(80)/companyInternalEdit(20)/v/versionId(16)",component:ga},{path:"/:lang(en)?/:configHash(\\w{30,80})?/:companyInternalEdit(\\w{20})?",name:"Configurator configHash(80)/companyInternalEdit(20)/",component:ga},{path:"/:lang(en)?/:configHash(\\w{30,80})?/:companyInternalEdit(\\w{20})?/v/:versionId(\\w{16})?",name:"Configurator configHash(80)/companyInternalEdit(20)/v/versionId(16)",component:ga},{path:"/:lang(en)?/:configHash(\\w{30,80})?/v/:versionId(\\w{16})?/:fullScreen(\\w{10})?",name:"Configurator with version",component:ga},{path:"/:lang([a-z]{2})?/:configurator(configurator)?/:templates(templates)/:templateId([\\w-]{36})?/:edit(edit)/:fullScreen(\\w{10})?",name:"Configurator templates (editable)",component:ga,meta:{requiresAuth:!0}},{path:"/:lang([a-z]{2})?/:configurator(configurator)?/:templateId([\\w-]{36})/:fullScreen(\\w{10})?",name:"Configurator templates (website view)",component:ga},{path:"/:lang(en)?/:pathMatch(.*)*",name:"NotFound",component:ga}],uT=iF({history:Vk("/"),routes:U$});let dT=!1,fT=!1;uT.beforeEach(async(n,e,t)=>{dT||(Lm(hr,bn),dT=!0);const r=n.matched.some(i=>i.meta.requiresAuth),o=n.matched.some(i=>i.meta.guest);if(!fT&&r&&(fT=!0,await bn.init()),r||o){const i=bn.state.isAuthenticated;if(o&&i){const a=n.params.lang||"nl";return t(`/${a}/templates/admin`)}}t()});const wt=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,hn=globalThis,zl="9.46.0";function eu(){return Pm(hn),hn}function Pm(n){const e=n.__SENTRY__=n.__SENTRY__||{};return e.version=e.version||zl,e[zl]=e[zl]||{}}function Tf(n,e,t=hn){const r=t.__SENTRY__=t.__SENTRY__||{},o=r[zl]=r[zl]||{};return o[n]||(o[n]=e())}const z$=["debug","info","warn","error","log","assert","trace"],G$="Sentry Logger ",Dm={};function Ja(n){if(!("console"in hn))return n();const e=hn.console,t={},r=Object.keys(Dm);r.forEach(o=>{const i=Dm[o];t[o]=e[o],e[o]=i});try{return n()}finally{r.forEach(o=>{e[o]=t[o]})}}function H$(){mA().enabled=!0}function W$(){mA().enabled=!1}function hT(){return mA().enabled}function j$(...n){pA("log",...n)}function Q$(...n){pA("warn",...n)}function $$(...n){pA("error",...n)}function pA(n,...e){wt&&hT()&&Ja(()=>{hn.console[n](`${G$}[${n}]:`,...e)})}function mA(){return wt?Tf("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const lt={enable:H$,disable:W$,isEnabled:hT,log:j$,warn:Q$,error:$$},pT=50,Gl="?",mT=/\(error: (.*)\)/,gT=/captureMessage|captureException/;function _T(...n){const e=n.sort((t,r)=>t[0]-r[0]).map(t=>t[1]);return(t,r=0,o=0)=>{const i=[],a=t.split(` +`);for(let s=r;s1024)continue;const c=mT.test(l)?l.replace(mT,"$1"):l;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){i.push(d);break}}if(i.length>=pT+o)break}}return X$(i.slice(o))}}function Y$(n){return Array.isArray(n)?_T(...n):n}function X$(n){if(!n.length)return[];const e=Array.from(n);return/sentryWrapped/.test(Bm(e).function||"")&&e.pop(),e.reverse(),gT.test(Bm(e).function||"")&&(e.pop(),gT.test(Bm(e).function||"")&&e.pop()),e.slice(0,pT).map(t=>({...t,filename:t.filename||Bm(e).filename,function:t.function||Gl}))}function Bm(n){return n[n.length-1]||{}}const gA="";function es(n){try{return!n||typeof n!="function"?gA:n.name||gA}catch{return gA}}function vT(n){const e=n.exception;if(e){const t=[];try{return e.values.forEach(r=>{r.stacktrace.frames&&t.push(...r.stacktrace.frames)}),t}catch{return}}}const Nm={},AT={};function Hl(n,e){Nm[n]=Nm[n]||[],Nm[n].push(e)}function Wl(n,e){if(!AT[n]){AT[n]=!0;try{e()}catch(t){wt&<.error(`Error while instrumenting ${n}`,t)}}}function Gi(n,e){const t=n&&Nm[n];if(t)for(const r of t)try{r(e)}catch(o){wt&<.error(`Error while triggering instrumentation handler. +Type: ${n} +Name: ${es(r)} +Error:`,o)}}let _A=null;function q$(n){const e="error";Hl(e,n),Wl(e,K$)}function K$(){_A=hn.onerror,hn.onerror=function(n,e,t,r,o){return Gi("error",{column:r,error:o,line:t,msg:n,url:e}),_A?_A.apply(this,arguments):!1},hn.onerror.__SENTRY_INSTRUMENTED__=!0}let vA=null;function Z$(n){const e="unhandledrejection";Hl(e,n),Wl(e,J$)}function J$(){vA=hn.onunhandledrejection,hn.onunhandledrejection=function(n){return Gi("unhandledrejection",n),vA?vA.apply(this,arguments):!0},hn.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const yT=Object.prototype.toString;function AA(n){switch(yT.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return $s(n,Error)}}function tu(n,e){return yT.call(n)===`[object ${e}]`}function bT(n){return tu(n,"ErrorEvent")}function xT(n){return tu(n,"DOMError")}function eY(n){return tu(n,"DOMException")}function ts(n){return tu(n,"String")}function yA(n){return typeof n=="object"&&n!==null&&"__sentry_template_string__"in n&&"__sentry_template_values__"in n}function bA(n){return n===null||yA(n)||typeof n!="object"&&typeof n!="function"}function If(n){return tu(n,"Object")}function Om(n){return typeof Event<"u"&&$s(n,Event)}function tY(n){return typeof Element<"u"&&$s(n,Element)}function nY(n){return tu(n,"RegExp")}function km(n){return!!(n!=null&&n.then&&typeof n.then=="function")}function rY(n){return If(n)&&"nativeEvent"in n&&"preventDefault"in n&&"stopPropagation"in n}function $s(n,e){try{return n instanceof e}catch{return!1}}function ET(n){return!!(typeof n=="object"&&n!==null&&(n.__isVue||n._isVue))}function oY(n){return typeof Request<"u"&&$s(n,Request)}const xA=hn,iY=80;function Fm(n,e={}){if(!n)return"";try{let t=n;const r=5,o=[];let i=0,a=0;const s=" > ",l=s.length;let c;const u=Array.isArray(e)?e:e.keyAttrs,d=!Array.isArray(e)&&e.maxStringLength||iY;for(;t&&i++1&&a+o.length*l+c.length>=d));)o.push(c),a+=c.length,t=t.parentNode;return o.reverse().join(s)}catch{return""}}function aY(n,e){const t=n,r=[];if(!(t!=null&&t.tagName))return"";if(xA.HTMLElement&&t instanceof HTMLElement&&t.dataset){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}r.push(t.tagName.toLowerCase());const o=e!=null&&e.length?e.filter(a=>t.getAttribute(a)).map(a=>[a,t.getAttribute(a)]):null;if(o!=null&&o.length)o.forEach(a=>{r.push(`[${a[0]}="${a[1]}"]`)});else{t.id&&r.push(`#${t.id}`);const a=t.className;if(a&&ts(a)){const s=a.split(/\s+/);for(const l of s)r.push(`.${l}`)}}const i=["aria-label","type","name","title","alt"];for(const a of i){const s=t.getAttribute(a);s&&r.push(`[${a}="${s}"]`)}return r.join("")}function Vm(){try{return xA.document.location.href}catch{return""}}function sY(n){if(!xA.HTMLElement)return null;let e=n;const t=5;for(let r=0;rlY(n,r,t))}function Oo(n,e,t){if(!(e in n))return;const r=n[e];if(typeof r!="function")return;const o=t(r);typeof o=="function"&&ST(o,r);try{n[e]=o}catch{wt&<.log(`Failed to replace method "${e}" in object`,n)}}function Ai(n,e,t){try{Object.defineProperty(n,e,{value:t,writable:!0,configurable:!0})}catch{wt&<.log(`Failed to add non-enumerable property "${e}" to object`,n)}}function ST(n,e){try{const t=e.prototype||{};n.prototype=e.prototype=t,Ai(n,"__sentry_original__",e)}catch{}}function EA(n){return n.__sentry_original__}function wT(n){if(AA(n))return{message:n.message,name:n.name,stack:n.stack,...TT(n)};if(Om(n)){const e={type:n.type,target:MT(n.target),currentTarget:MT(n.currentTarget),...TT(n)};return typeof CustomEvent<"u"&&$s(n,CustomEvent)&&(e.detail=n.detail),e}else return n}function MT(n){try{return tY(n)?Fm(n):Object.prototype.toString.call(n)}catch{return""}}function TT(n){if(typeof n=="object"&&n!==null){const e={};for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e}else return{}}function cY(n,e=40){const t=Object.keys(wT(n));t.sort();const r=t[0];if(!r)return"[object has no keys]";if(r.length>=e)return Um(r,e);for(let o=t.length;o>0;o--){const i=t.slice(0,o).join(", ");if(!(i.length>e))return o===t.length?i:Um(i,e)}return""}function uY(){const n=hn;return n.crypto||n.msCrypto}function Ko(n=uY()){let e=()=>Math.random()*16;try{if(n!=null&&n.randomUUID)return n.randomUUID().replace(/-/g,"");n!=null&&n.getRandomValues&&(e=()=>{const t=new Uint8Array(1);return n.getRandomValues(t),t[0]})}catch{}return("10000000100040008000"+1e11).replace(/[018]/g,t=>(t^(e()&15)>>t/4).toString(16))}function IT(n){var e,t;return(t=(e=n.exception)==null?void 0:e.values)==null?void 0:t[0]}function jl(n){const{message:e,event_id:t}=n;if(e)return e;const r=IT(n);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||t||"":t||""}function CA(n,e,t){const r=n.exception=n.exception||{},o=r.values=r.values||[],i=o[0]=o[0]||{};i.value||(i.value=e||""),i.type||(i.type="Error")}function nu(n,e){const t=IT(n);if(!t)return;const r={type:"generic",handled:!0},o=t.mechanism;if(t.mechanism={...r,...o,...e},e&&"data"in e){const i={...o==null?void 0:o.data,...e.data};t.mechanism.data=i}}function RT(n){if(dY(n))return!0;try{Ai(n,"__sentry_captured__",!0)}catch{}return!1}function dY(n){try{return n.__sentry_captured__}catch{}}const LT=1e3;function Lf(){return Date.now()/LT}function fY(){const{performance:n}=hn;if(!(n!=null&&n.now)||!n.timeOrigin)return Lf;const e=n.timeOrigin;return()=>(e+n.now())/LT}let PT;function ko(){return(PT??(PT=fY()))()}let SA;function hY(){var u;const{performance:n}=hn;if(!(n!=null&&n.now))return[void 0,"none"];const e=3600*1e3,t=n.now(),r=Date.now(),o=n.timeOrigin?Math.abs(n.timeOrigin+t-r):e,i=o_Y(t)};return n&&ru(t,n),t}function ru(n,e={}){if(e.user&&(!n.ipAddress&&e.user.ip_address&&(n.ipAddress=e.user.ip_address),!n.did&&!e.did&&(n.did=e.user.id||e.user.email||e.user.username)),n.timestamp=e.timestamp||ko(),e.abnormal_mechanism&&(n.abnormal_mechanism=e.abnormal_mechanism),e.ignoreDuration&&(n.ignoreDuration=e.ignoreDuration),e.sid&&(n.sid=e.sid.length===32?e.sid:Ko()),e.init!==void 0&&(n.init=e.init),!n.did&&e.did&&(n.did=`${e.did}`),typeof e.started=="number"&&(n.started=e.started),n.ignoreDuration)n.duration=void 0;else if(typeof e.duration=="number")n.duration=e.duration;else{const t=n.timestamp-n.started;n.duration=t>=0?t:0}e.release&&(n.release=e.release),e.environment&&(n.environment=e.environment),!n.ipAddress&&e.ipAddress&&(n.ipAddress=e.ipAddress),!n.userAgent&&e.userAgent&&(n.userAgent=e.userAgent),typeof e.errors=="number"&&(n.errors=e.errors),e.status&&(n.status=e.status)}function gY(n,e){let t={};n.status==="ok"&&(t={status:"exited"}),ru(n,t)}function _Y(n){return{sid:`${n.sid}`,init:n.init,started:new Date(n.started*1e3).toISOString(),timestamp:new Date(n.timestamp*1e3).toISOString(),status:n.status,errors:n.errors,did:typeof n.did=="number"||typeof n.did=="string"?`${n.did}`:void 0,duration:n.duration,abnormal_mechanism:n.abnormal_mechanism,attrs:{release:n.release,environment:n.environment,ip_address:n.ipAddress,user_agent:n.userAgent}}}function Pf(n,e,t=2){if(!e||typeof e!="object"||t<=0)return e;if(n&&Object.keys(e).length===0)return n;const r={...n};for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Pf(r[o],e[o],t-1));return r}function zm(){return Ko()}function Gm(){return Ko().substring(16)}const wA="_sentrySpan";function MA(n,e){e?Ai(n,wA,e):delete n[wA]}function Hm(n){return n[wA]}const vY=100;class _a{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:zm(),sampleRand:Math.random()}}clone(){const e=new _a;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,MA(e,Hm(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&ru(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this._tags={...this._tags,[e]:t},this._notifyScopeListeners(),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t=typeof e=="function"?e(this):e,r=t instanceof _a?t.getScopeData():If(t)?e:void 0,{tags:o,extra:i,user:a,contexts:s,level:l,fingerprint:c=[],propagationContext:u}=r||{};return this._tags={...this._tags,...o},this._extra={...this._extra,...i},this._contexts={...this._contexts,...s},a&&Object.keys(a).length&&(this._user=a),l&&(this._level=l),c.length&&(this._fingerprint=c),u&&(this._propagationContext=u),this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,MA(this,void 0),this._attachments=[],this.setPropagationContext({traceId:zm(),sampleRand:Math.random()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){var i;const r=typeof t=="number"?t:vY;if(r<=0)return this;const o={timestamp:Lf(),...e,message:e.message?Um(e.message,2048):e.message};return this._breadcrumbs.push(o),this._breadcrumbs.length>r&&(this._breadcrumbs=this._breadcrumbs.slice(-r),(i=this._client)==null||i.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:Hm(this)}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Pf(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const r=(t==null?void 0:t.event_id)||Ko();if(!this._client)return wt&<.warn("No client configured on scope - will not capture exception!"),r;const o=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:o,...t,event_id:r},this),r}captureMessage(e,t,r){const o=(r==null?void 0:r.event_id)||Ko();if(!this._client)return wt&<.warn("No client configured on scope - will not capture message!"),o;const i=new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:i,...r,event_id:o},this),o}captureEvent(e,t){const r=(t==null?void 0:t.event_id)||Ko();return this._client?(this._client.captureEvent(e,{...t,event_id:r},this),r):(wt&<.warn("No client configured on scope - will not capture event!"),r)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function AY(){return Tf("defaultCurrentScope",()=>new _a)}function yY(){return Tf("defaultIsolationScope",()=>new _a)}class bY{constructor(e,t){let r;e?r=e:r=new _a;let o;t?o=t:o=new _a,this._stack=[{scope:r}],this._isolationScope=o}withScope(e){const t=this._pushScope();let r;try{r=e(t)}catch(o){throw this._popScope(),o}return km(r)?r.then(o=>(this._popScope(),o),o=>{throw this._popScope(),o}):(this._popScope(),r)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function ou(){const n=eu(),e=Pm(n);return e.stack=e.stack||new bY(AY(),yY())}function xY(n){return ou().withScope(n)}function EY(n,e){const t=ou();return t.withScope(()=>(t.getStackTop().scope=n,e(n)))}function DT(n){return ou().withScope(()=>n(ou().getIsolationScope()))}function CY(){return{withIsolationScope:DT,withScope:xY,withSetScope:EY,withSetIsolationScope:(n,e)=>DT(e),getCurrentScope:()=>ou().getScope(),getIsolationScope:()=>ou().getIsolationScope()}}function Df(n){const e=Pm(n);return e.acs?e.acs:CY()}function Zo(){const n=eu();return Df(n).getCurrentScope()}function ns(){const n=eu();return Df(n).getIsolationScope()}function SY(){return Tf("globalScope",()=>new _a)}function TA(...n){const e=eu(),t=Df(e);if(n.length===2){const[r,o]=n;return r?t.withSetScope(r,o):t.withScope(o)}return t.withScope(n[0])}function Pn(){return Zo().getClient()}function wY(n){const e=n.getPropagationContext(),{traceId:t,parentSpanId:r,propagationSpanId:o}=e,i={trace_id:t,span_id:o||Gm()};return r&&(i.parent_span_id=r),i}const Bf="sentry.source",BT="sentry.sample_rate",MY="sentry.previous_trace_sample_rate",IA="sentry.op",Nf="sentry.origin",TY="sentry.measurement_unit",IY="sentry.measurement_value",NT="sentry.custom_span_name",RA="sentry.profile_id",LA="sentry.exclusive_time",RY=0,LY=1,OT="_sentryScope",kT="_sentryIsolationScope";function PY(n,e,t){n&&(Ai(n,kT,t),Ai(n,OT,e))}function Wm(n){return{scope:n[OT],isolationScope:n[kT]}}const DY="sentry-",BY=/^sentry-/;function NY(n){const e=OY(n);if(!e)return;const t=Object.entries(e).reduce((r,[o,i])=>{if(o.match(BY)){const a=o.slice(DY.length);r[a]=i}return r},{});if(Object.keys(t).length>0)return t}function OY(n){if(!(!n||!ts(n)&&!Array.isArray(n)))return Array.isArray(n)?n.reduce((e,t)=>{const r=FT(t);return Object.entries(r).forEach(([o,i])=>{e[o]=i}),e},{}):FT(n)}function FT(n){return n.split(",").map(e=>e.split("=").map(t=>{try{return decodeURIComponent(t.trim())}catch{return}})).reduce((e,[t,r])=>(t&&r&&(e[t]=r),e),{})}function Of(n){if(typeof n=="boolean")return Number(n);const e=typeof n=="string"?parseFloat(n):n;if(!(typeof e!="number"||isNaN(e)||e<0||e>1))return e}const VT=0,PA=1;let UT=!1;function kY(n){const{spanId:e,traceId:t}=n.spanContext(),{data:r,op:o,parent_span_id:i,status:a,origin:s,links:l}=Jo(n);return{parent_span_id:i,span_id:e,trace_id:t,data:r,op:o,status:a,origin:s,links:l}}function FY(n){const{spanId:e,traceId:t,isRemote:r}=n.spanContext(),o=r?e:Jo(n).parent_span_id,i=Wm(n).scope,a=r?(i==null?void 0:i.getPropagationContext().propagationSpanId)||Gm():e;return{parent_span_id:o,span_id:a,trace_id:t}}function zT(n){if(n&&n.length>0)return n.map(({context:{spanId:e,traceId:t,traceFlags:r,...o},attributes:i})=>({span_id:e,trace_id:t,sampled:r===PA,attributes:i,...o}))}function iu(n){return typeof n=="number"?GT(n):Array.isArray(n)?n[0]+n[1]/1e9:n instanceof Date?GT(n.getTime()):ko()}function GT(n){return n>9999999999?n/1e3:n}function Jo(n){var r;if(UY(n))return n.getSpanJSON();const{spanId:e,traceId:t}=n.spanContext();if(VY(n)){const{attributes:o,startTime:i,name:a,endTime:s,status:l,links:c}=n,u="parentSpanId"in n?n.parentSpanId:"parentSpanContext"in n?(r=n.parentSpanContext)==null?void 0:r.spanId:void 0;return{span_id:e,trace_id:t,data:o,description:a,parent_span_id:u,start_timestamp:iu(i),timestamp:iu(s)||void 0,status:HT(l),op:o[IA],origin:o[Nf],links:zT(c)}}return{span_id:e,trace_id:t,start_timestamp:0,data:{}}}function VY(n){const e=n;return!!e.attributes&&!!e.startTime&&!!e.name&&!!e.endTime&&!!e.status}function UY(n){return typeof n.getSpanJSON=="function"}function kf(n){const{traceFlags:e}=n.spanContext();return e===PA}function HT(n){if(!(!n||n.code===RY))return n.code===LY?"ok":n.message||"unknown_error"}const Ff="_sentryChildSpans",DA="_sentryRootSpan";function WT(n,e){const t=n[DA]||n;Ai(e,DA,t),n[Ff]?n[Ff].add(e):Ai(n,Ff,new Set([e]))}function zY(n){const e=new Set;function t(r){if(!e.has(r)&&kf(r)){e.add(r);const o=r[Ff]?Array.from(r[Ff]):[];for(const i of o)t(i)}}return t(n),Array.from(e)}function rs(n){return n[DA]||n}function BA(){const n=eu(),e=Df(n);return e.getActiveSpan?e.getActiveSpan():Hm(Zo())}function NA(){UT||(Ja(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly.")}),UT=!0)}function jm(n){var t;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=n||((t=Pn())==null?void 0:t.getOptions());return!!e&&(e.tracesSampleRate!=null||!!e.tracesSampler)}const OA="production",GY=/^o(\d+)\./,HY=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function WY(n){return n==="http"||n==="https"}function Vf(n,e=!1){const{host:t,path:r,pass:o,port:i,projectId:a,protocol:s,publicKey:l}=n;return`${s}://${l}${e&&o?`:${o}`:""}@${t}${i?`:${i}`:""}/${r&&`${r}/`}${a}`}function jY(n){const e=HY.exec(n);if(!e){Ja(()=>{console.error(`Invalid Sentry Dsn: ${n}`)});return}const[t,r,o="",i="",a="",s=""]=e.slice(1);let l="",c=s;const u=c.split("/");if(u.length>1&&(l=u.slice(0,-1).join("/"),c=u.pop()),c){const d=c.match(/^\d+/);d&&(c=d[0])}return jT({host:i,pass:o,path:l,projectId:c,port:a,protocol:t,publicKey:r})}function jT(n){return{protocol:n.protocol,publicKey:n.publicKey||"",pass:n.pass||"",host:n.host,port:n.port||"",path:n.path||"",projectId:n.projectId}}function QY(n){if(!wt)return!0;const{port:e,projectId:t,protocol:r}=n;return["protocol","publicKey","host","projectId"].find(a=>n[a]?!1:(lt.error(`Invalid Sentry Dsn: ${a} missing`),!0))?!1:t.match(/^\d+$/)?WY(r)?e&&isNaN(parseInt(e,10))?(lt.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(lt.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),!1):(lt.error(`Invalid Sentry Dsn: Invalid projectId ${t}`),!1)}function $Y(n){const e=n.match(GY);return e==null?void 0:e[1]}function YY(n){const e=typeof n=="string"?jY(n):jT(n);if(!(!e||!QY(e)))return e}const QT="_frozenDsc";function kA(n,e){Ai(n,QT,e)}function $T(n,e){const t=e.getOptions(),{publicKey:r,host:o}=e.getDsn()||{};let i;t.orgId?i=String(t.orgId):o&&(i=$Y(o));const a={environment:t.environment||OA,release:t.release,public_key:r,trace_id:n,org_id:i};return e.emit("createDsc",a),a}function XY(n,e){const t=e.getPropagationContext();return t.dsc||$T(t.traceId,n)}function au(n){var p;const e=Pn();if(!e)return{};const t=rs(n),r=Jo(t),o=r.data,i=t.spanContext().traceState,a=(i==null?void 0:i.get("sentry.sample_rate"))??o[BT]??o[MY];function s(m){return(typeof a=="number"||typeof a=="string")&&(m.sample_rate=`${a}`),m}const l=t[QT];if(l)return s(l);const c=i==null?void 0:i.get("sentry.dsc"),u=c&&NY(c);if(u)return s(u);const d=$T(n.spanContext().traceId,e),f=o[Bf],h=r.description;return f!=="url"&&h&&(d.transaction=h),jm()&&(d.sampled=String(kf(t)),d.sample_rand=(i==null?void 0:i.get("sentry.sample_rand"))??((p=Wm(t).scope)==null?void 0:p.getPropagationContext().sampleRand.toString())),s(d),e.emit("createDsc",d,t),d}class FA{constructor(e={}){this._traceId=e.traceId||zm(),this._spanId=e.spanId||Gm()}spanContext(){return{spanId:this._spanId,traceId:this._traceId,traceFlags:VT}}end(e){}setAttribute(e,t){return this}setAttributes(e){return this}setStatus(e){return this}updateName(e){return this}isRecording(){return!1}addEvent(e,t,r){return this}addLink(e){return this}addLinks(e){return this}recordException(e,t){}}function Hi(n,e=100,t=1/0){try{return VA("",n,e,t)}catch(r){return{ERROR:`**non-serializable** (${r})`}}}function YT(n,e=3,t=100*1024){const r=Hi(n,e);return JY(r)>t?YT(n,e-1,t):r}function VA(n,e,t=1/0,r=1/0,o=eX()){const[i,a]=o;if(e==null||["boolean","string"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e))return e;const s=qY(n,e);if(!s.startsWith("[object "))return s;if(e.__sentry_skip_normalization__)return e;const l=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:t;if(l===0)return s.replace("object ","");if(i(e))return"[Circular ~]";const c=e;if(c&&typeof c.toJSON=="function")try{const h=c.toJSON();return VA("",h,l-1,r,o)}catch{}const u=Array.isArray(e)?[]:{};let d=0;const f=wT(e);for(const h in f){if(!Object.prototype.hasOwnProperty.call(f,h))continue;if(d>=r){u[h]="[MaxProperties ~]";break}const p=f[h];u[h]=VA(h,p,l-1,r,o),d++}return a(e),u}function qY(n,e){try{if(n==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(n==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if(ET(e))return"[VueViewModel]";if(rY(e))return"[SyntheticEvent]";if(typeof e=="number"&&!Number.isFinite(e))return`[${e}]`;if(typeof e=="function")return`[Function: ${es(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const t=KY(e);return/^HTML(\w*)Element$/.test(t)?`[HTMLElement: ${t}]`:`[object ${t}]`}catch(t){return`**non-serializable** (${t})`}}function KY(n){const e=Object.getPrototypeOf(n);return e!=null&&e.constructor?e.constructor.name:"null prototype"}function ZY(n){return~-encodeURI(n).split(/%..|./).length}function JY(n){return ZY(JSON.stringify(n))}function eX(){const n=new WeakSet;function e(r){return n.has(r)?!0:(n.add(r),!1)}function t(r){n.delete(r)}return[e,t]}function Ql(n,e=[]){return[n,e]}function tX(n,e){const[t,r]=n;return[t,[...r,e]]}function XT(n,e){const t=n[1];for(const r of t){const o=r[0].type;if(e(r,o))return!0}return!1}function UA(n){const e=Pm(hn);return e.encodePolyfill?e.encodePolyfill(n):new TextEncoder().encode(n)}function nX(n){const[e,t]=n;let r=JSON.stringify(e);function o(i){typeof r=="string"?r=typeof i=="string"?r+i:[UA(r),i]:r.push(typeof i=="string"?UA(i):i)}for(const i of t){const[a,s]=i;if(o(` +${JSON.stringify(a)} +`),typeof s=="string"||s instanceof Uint8Array)o(s);else{let l;try{l=JSON.stringify(s)}catch{l=JSON.stringify(Hi(s))}o(l)}}return typeof r=="string"?r:rX(r)}function rX(n){const e=n.reduce((o,i)=>o+i.length,0),t=new Uint8Array(e);let r=0;for(const o of n)t.set(o,r),r+=o.length;return t}function oX(n){return[{type:"span"},n]}function iX(n){const e=typeof n.data=="string"?UA(n.data):n.data;return[{type:"attachment",length:e.length,filename:n.filename,content_type:n.contentType,attachment_type:n.attachmentType},e]}const aX={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",raw_security:"security",log:"log_item"};function qT(n){return aX[n]}function zA(n){if(!(n!=null&&n.sdk))return;const{name:e,version:t}=n.sdk;return{name:e,version:t}}function KT(n,e,t,r){var i;const o=(i=n.sdkProcessingMetadata)==null?void 0:i.dynamicSamplingContext;return{event_id:n.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!t&&r&&{dsn:Vf(r)},...o&&{trace:o}}}function sX(n,e){return e&&(n.sdk=n.sdk||{},n.sdk.name=n.sdk.name||e.name,n.sdk.version=n.sdk.version||e.version,n.sdk.integrations=[...n.sdk.integrations||[],...e.integrations||[]],n.sdk.packages=[...n.sdk.packages||[],...e.packages||[]]),n}function lX(n,e,t,r){const o=zA(t),i={sent_at:new Date().toISOString(),...o&&{sdk:o},...!!r&&e&&{dsn:Vf(e)}},a="aggregates"in n?[{type:"sessions"},n]:[{type:"session"},n.toJSON()];return Ql(i,[a])}function cX(n,e,t,r){const o=zA(t),i=n.type&&n.type!=="replay_event"?n.type:"event";sX(n,t==null?void 0:t.sdk);const a=KT(n,o,r,e);return delete n.sdkProcessingMetadata,Ql(a,[[{type:i},n]])}function uX(n,e){function t(u){return!!u.trace_id&&!!u.public_key}const r=au(n[0]),o=e==null?void 0:e.getDsn(),i=e==null?void 0:e.getOptions().tunnel,a={sent_at:new Date().toISOString(),...t(r)&&{trace:r},...!!i&&o&&{dsn:Vf(o)}},s=e==null?void 0:e.getOptions().beforeSendSpan,l=s?u=>{const d=Jo(u),f=s(d);return f||(NA(),d)}:Jo,c=[];for(const u of n){const d=l(u);d&&c.push(oX(d))}return Ql(a,c)}function dX(n){if(!wt)return;const{description:e="< unknown name >",op:t="< unknown op >",parent_span_id:r}=Jo(n),{spanId:o}=n.spanContext(),i=kf(n),a=rs(n),s=a===n,l=`[Tracing] Starting ${i?"sampled":"unsampled"} ${s?"root ":""}span`,c=[`op: ${t}`,`name: ${e}`,`ID: ${o}`];if(r&&c.push(`parent ID: ${r}`),!s){const{op:u,description:d}=Jo(a);c.push(`root ID: ${a.spanContext().spanId}`),u&&c.push(`root op: ${u}`),d&&c.push(`root description: ${d}`)}lt.log(`${l} + ${c.join(` + `)}`)}function fX(n){if(!wt)return;const{description:e="< unknown name >",op:t="< unknown op >"}=Jo(n),{spanId:r}=n.spanContext(),i=rs(n)===n,a=`[Tracing] Finishing "${t}" ${i?"root ":""}span "${e}" with ID ${r}`;lt.log(a)}function ZT(n){if(!n||n.length===0)return;const e={};return n.forEach(t=>{const r=t.attributes||{},o=r[TY],i=r[IY];typeof o=="string"&&typeof i=="number"&&(e[t.name]={value:i,unit:o})}),e}const JT=1e3;class GA{constructor(e={}){this._traceId=e.traceId||zm(),this._spanId=e.spanId||Gm(),this._startTime=e.startTimestamp||ko(),this._links=e.links,this._attributes={},this.setAttributes({[Nf]:"manual",[IA]:e.op,...e.attributes}),this._name=e.name,e.parentSpanId&&(this._parentSpanId=e.parentSpanId),"sampled"in e&&(this._sampled=e.sampled),e.endTimestamp&&(this._endTime=e.endTimestamp),this._events=[],this._isStandaloneSpan=e.isStandalone,this._endTime&&this._onSpanEnded()}addLink(e){return this._links?this._links.push(e):this._links=[e],this}addLinks(e){return this._links?this._links.push(...e):this._links=e,this}recordException(e,t){}spanContext(){const{_spanId:e,_traceId:t,_sampled:r}=this;return{spanId:e,traceId:t,traceFlags:r?PA:VT}}setAttribute(e,t){return t===void 0?delete this._attributes[e]:this._attributes[e]=t,this}setAttributes(e){return Object.keys(e).forEach(t=>this.setAttribute(t,e[t])),this}updateStartTime(e){this._startTime=iu(e)}setStatus(e){return this._status=e,this}updateName(e){return this._name=e,this.setAttribute(Bf,"custom"),this}end(e){this._endTime||(this._endTime=iu(e),fX(this),this._onSpanEnded())}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[IA],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:HT(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[Nf],profile_id:this._attributes[RA],exclusive_time:this._attributes[LA],measurements:ZT(this._events),is_segment:this._isStandaloneSpan&&rs(this)===this||void 0,segment_id:this._isStandaloneSpan?rs(this).spanContext().spanId:void 0,links:zT(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(e,t,r){wt&<.log("[Tracing] Adding an event to span:",e);const o=eI(t)?t:r||ko(),i=eI(t)?{}:t||{},a={name:e,time:iu(o),attributes:i};return this._events.push(a),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){const e=Pn();if(e&&e.emit("spanEnd",this),!(this._isStandaloneSpan||this===rs(this)))return;if(this._isStandaloneSpan){this._sampled?pX(uX([this],e)):(wt&<.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),e&&e.recordDroppedEvent("sample_rate","span"));return}const r=this._convertSpanToTransaction();r&&(Wm(this).scope||Zo()).captureEvent(r)}_convertSpanToTransaction(){var u;if(!tI(Jo(this)))return;this._name||(wt&<.warn("Transaction has no name, falling back to ``."),this._name="");const{scope:e,isolationScope:t}=Wm(this),r=(u=e==null?void 0:e.getScopeData().sdkProcessingMetadata)==null?void 0:u.normalizedRequest;if(this._sampled!==!0)return;const i=zY(this).filter(d=>d!==this&&!hX(d)).map(d=>Jo(d)).filter(tI),a=this._attributes[Bf];delete this._attributes[NT],i.forEach(d=>{delete d.data[NT]});const s={contexts:{trace:kY(this)},spans:i.length>JT?i.sort((d,f)=>d.start_timestamp-f.start_timestamp).slice(0,JT):i,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:e,capturedSpanIsolationScope:t,dynamicSamplingContext:au(this)},request:r,...a&&{transaction_info:{source:a}}},l=ZT(this._events);return l&&Object.keys(l).length&&(wt&<.log("[Measurements] Adding measurements to transaction event",JSON.stringify(l,void 0,2)),s.measurements=l),s}}function eI(n){return n&&typeof n=="number"||n instanceof Date||Array.isArray(n)}function tI(n){return!!n.start_timestamp&&!!n.timestamp&&!!n.span_id&&!!n.trace_id}function hX(n){return n instanceof GA&&n.isStandaloneSpan()}function pX(n){const e=Pn();if(!e)return;const t=n[1];if(!t||t.length===0){e.recordDroppedEvent("before_send","span");return}e.sendEnvelope(n)}function mX(n,e,t){if(!jm(n))return[!1];let r,o;typeof n.tracesSampler=="function"?(o=n.tracesSampler({...e,inheritOrSampleWith:s=>typeof e.parentSampleRate=="number"?e.parentSampleRate:typeof e.parentSampled=="boolean"?Number(e.parentSampled):s}),r=!0):e.parentSampled!==void 0?o=e.parentSampled:typeof n.tracesSampleRate<"u"&&(o=n.tracesSampleRate,r=!0);const i=Of(o);if(i===void 0)return wt&<.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(o)} of type ${JSON.stringify(typeof o)}.`),[!1];if(!i)return wt&<.log(`[Tracing] Discarding transaction because ${typeof n.tracesSampler=="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),[!1,i,r];const a=tTA(n.scope,a):o!==void 0?a=>gX(o,a):a=>a())(()=>{const a=Zo(),s=yX(a,o);return n.onlyIfParent&&!s?new FA:_X({parentSpan:s,spanArguments:t,forceTransaction:r,scope:a})})}function gX(n,e){const t=oI();return t.withActiveSpan?t.withActiveSpan(n,e):TA(r=>(MA(r,n||void 0),e(r)))}function _X({parentSpan:n,spanArguments:e,forceTransaction:t,scope:r}){if(!jm()){const a=new FA;if(t||!n){const s={sampled:"false",sample_rate:"0",transaction:e.name,...au(a)};kA(a,s)}return a}const o=ns();let i;if(n&&!t)i=AX(n,r,e),WT(n,i);else if(n){const a=au(n),{traceId:s,spanId:l}=n.spanContext(),c=kf(n);i=iI({traceId:s,parentSpanId:l,...e},r,c),kA(i,a)}else{const{traceId:a,dsc:s,parentSpanId:l,sampled:c}={...o.getPropagationContext(),...r.getPropagationContext()};i=iI({traceId:a,parentSpanId:l,...e},r,c),s&&kA(i,s)}return dX(i),PY(i,r,o),i}function vX(n){const t={isStandalone:(n.experimental||{}).standalone,...n};if(n.startTime){const r={...t};return r.startTimestamp=iu(n.startTime),delete r.startTime,r}return t}function oI(){const n=eu();return Df(n)}function iI(n,e,t){var p;const r=Pn(),o=(r==null?void 0:r.getOptions())||{},{name:i=""}=n,a={spanAttributes:{...n.attributes},spanName:i,parentSampled:t};r==null||r.emit("beforeSampling",a,{decision:!1});const s=a.parentSampled??t,l=a.spanAttributes,c=e.getPropagationContext(),[u,d,f]=e.getScopeData().sdkProcessingMetadata[nI]?[!1]:mX(o,{name:i,parentSampled:s,attributes:l,parentSampleRate:Of((p=c.dsc)==null?void 0:p.sample_rate)},c.sampleRand),h=new GA({...n,attributes:{[Bf]:"custom",[BT]:d!==void 0&&f?d:void 0,...l},sampled:u});return!u&&r&&(wt&<.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),r.recordDroppedEvent("sample_rate","transaction")),r&&r.emit("spanStart",h),h}function AX(n,e,t){const{spanId:r,traceId:o}=n.spanContext(),i=e.getScopeData().sdkProcessingMetadata[nI]?!1:kf(n),a=i?new GA({...t,parentSpanId:r,traceId:o,sampled:i}):new FA({traceId:o});WT(n,a);const s=Pn();return s&&(s.emit("spanStart",a),t.endTimestamp&&s.emit("spanEnd",a)),a}function yX(n,e){if(e)return e;if(e===null)return;const t=Hm(n);if(!t)return;const r=Pn();return(r?r.getOptions():{}).parentSpanIsAlwaysRootSpan?rs(t):t}const HA=0,aI=1,sI=2;function os(n){return new Ys(e=>{e(n)})}function Qm(n){return new Ys((e,t)=>{t(n)})}class Ys{constructor(e){this._state=HA,this._handlers=[],this._runExecutor(e)}then(e,t){return new Ys((r,o)=>{this._handlers.push([!1,i=>{if(!e)r(i);else try{r(e(i))}catch(a){o(a)}},i=>{if(!t)o(i);else try{r(t(i))}catch(a){o(a)}}]),this._executeHandlers()})}catch(e){return this.then(t=>t,e)}finally(e){return new Ys((t,r)=>{let o,i;return this.then(a=>{i=!1,o=a,e&&e()},a=>{i=!0,o=a,e&&e()}).then(()=>{if(i){r(o);return}t(o)})})}_executeHandlers(){if(this._state===HA)return;const e=this._handlers.slice();this._handlers=[],e.forEach(t=>{t[0]||(this._state===aI&&t[1](this._value),this._state===sI&&t[2](this._value),t[0]=!0)})}_runExecutor(e){const t=(i,a)=>{if(this._state===HA){if(km(a)){a.then(r,o);return}this._state=i,this._value=a,this._executeHandlers()}},r=i=>{t(aI,i)},o=i=>{t(sI,i)};try{e(r,o)}catch(i){o(i)}}}function WA(n,e,t,r=0){return new Ys((o,i)=>{const a=n[r];if(e===null||typeof a!="function")o(e);else{const s=a({...e},t);wt&&a.id&&s===null&<.log(`Event processor "${a.id}" dropped event`),km(s)?s.then(l=>WA(n,l,t,r+1).then(o)).then(null,i):WA(n,s,t,r+1).then(o).then(null,i)}})}function bX(n,e){const{fingerprint:t,span:r,breadcrumbs:o,sdkProcessingMetadata:i}=e;xX(n,e),r&&SX(n,r),wX(n,t),EX(n,o),CX(n,i)}function lI(n,e){const{extra:t,tags:r,user:o,contexts:i,level:a,sdkProcessingMetadata:s,breadcrumbs:l,fingerprint:c,eventProcessors:u,attachments:d,propagationContext:f,transactionName:h,span:p}=e;$m(n,"extra",t),$m(n,"tags",r),$m(n,"user",o),$m(n,"contexts",i),n.sdkProcessingMetadata=Pf(n.sdkProcessingMetadata,s,2),a&&(n.level=a),h&&(n.transactionName=h),p&&(n.span=p),l.length&&(n.breadcrumbs=[...n.breadcrumbs,...l]),c.length&&(n.fingerprint=[...n.fingerprint,...c]),u.length&&(n.eventProcessors=[...n.eventProcessors,...u]),d.length&&(n.attachments=[...n.attachments,...d]),n.propagationContext={...n.propagationContext,...f}}function $m(n,e,t){n[e]=Pf(n[e],t,1)}function xX(n,e){const{extra:t,tags:r,user:o,contexts:i,level:a,transactionName:s}=e;Object.keys(t).length&&(n.extra={...t,...n.extra}),Object.keys(r).length&&(n.tags={...r,...n.tags}),Object.keys(o).length&&(n.user={...o,...n.user}),Object.keys(i).length&&(n.contexts={...i,...n.contexts}),a&&(n.level=a),s&&n.type!=="transaction"&&(n.transaction=s)}function EX(n,e){const t=[...n.breadcrumbs||[],...e];n.breadcrumbs=t.length?t:void 0}function CX(n,e){n.sdkProcessingMetadata={...n.sdkProcessingMetadata,...e}}function SX(n,e){n.contexts={trace:FY(e),...n.contexts},n.sdkProcessingMetadata={dynamicSamplingContext:au(e),...n.sdkProcessingMetadata};const t=rs(e),r=Jo(t).description;r&&!n.transaction&&n.type==="transaction"&&(n.transaction=r)}function wX(n,e){n.fingerprint=n.fingerprint?Array.isArray(n.fingerprint)?n.fingerprint:[n.fingerprint]:[],e&&(n.fingerprint=n.fingerprint.concat(e)),n.fingerprint.length||delete n.fingerprint}let Ym,cI,Xm;function MX(n){const e=hn._sentryDebugIds;if(!e)return{};const t=Object.keys(e);return Xm&&t.length===cI||(cI=t.length,Xm=t.reduce((r,o)=>{Ym||(Ym={});const i=Ym[o];if(i)r[i[0]]=i[1];else{const a=n(o);for(let s=a.length-1;s>=0;s--){const l=a[s],c=l==null?void 0:l.filename,u=e[o];if(c&&u){r[c]=u,Ym[o]=[c,u];break}}}return r},{})),Xm}function uI(n,e,t,r,o,i){const{normalizeDepth:a=3,normalizeMaxBreadth:s=1e3}=n,l={...e,event_id:e.event_id||t.event_id||Ko(),timestamp:e.timestamp||Lf()},c=t.integrations||n.integrations.map(g=>g.name);TX(l,n),LX(l,c),o&&o.emit("applyFrameMetadata",e),e.type===void 0&&IX(l,n.stackParser);const u=DX(r,t.captureContext);t.mechanism&&nu(l,t.mechanism);const d=o?o.getEventProcessors():[],f=SY().getScopeData();if(i){const g=i.getScopeData();lI(f,g)}if(u){const g=u.getScopeData();lI(f,g)}const h=[...t.attachments||[],...f.attachments];h.length&&(t.attachments=h),bX(l,f);const p=[...d,...f.eventProcessors];return WA(p,l,t).then(g=>(g&&RX(g),typeof a=="number"&&a>0?PX(g,a,s):g))}function TX(n,e){const{environment:t,release:r,dist:o,maxValueLength:i=250}=e;n.environment=n.environment||t||OA,!n.release&&r&&(n.release=r),!n.dist&&o&&(n.dist=o);const a=n.request;a!=null&&a.url&&(a.url=Um(a.url,i))}function IX(n,e){var r,o;const t=MX(e);(o=(r=n.exception)==null?void 0:r.values)==null||o.forEach(i=>{var a,s;(s=(a=i.stacktrace)==null?void 0:a.frames)==null||s.forEach(l=>{l.filename&&(l.debug_id=t[l.filename])})})}function RX(n){var r,o;const e={};if((o=(r=n.exception)==null?void 0:r.values)==null||o.forEach(i=>{var a,s;(s=(a=i.stacktrace)==null?void 0:a.frames)==null||s.forEach(l=>{l.debug_id&&(l.abs_path?e[l.abs_path]=l.debug_id:l.filename&&(e[l.filename]=l.debug_id),delete l.debug_id)})}),Object.keys(e).length===0)return;n.debug_meta=n.debug_meta||{},n.debug_meta.images=n.debug_meta.images||[];const t=n.debug_meta.images;Object.entries(e).forEach(([i,a])=>{t.push({type:"sourcemap",code_file:i,debug_id:a})})}function LX(n,e){e.length>0&&(n.sdk=n.sdk||{},n.sdk.integrations=[...n.sdk.integrations||[],...e])}function PX(n,e,t){var o,i;if(!n)return null;const r={...n,...n.breadcrumbs&&{breadcrumbs:n.breadcrumbs.map(a=>({...a,...a.data&&{data:Hi(a.data,e,t)}}))},...n.user&&{user:Hi(n.user,e,t)},...n.contexts&&{contexts:Hi(n.contexts,e,t)},...n.extra&&{extra:Hi(n.extra,e,t)}};return(o=n.contexts)!=null&&o.trace&&r.contexts&&(r.contexts.trace=n.contexts.trace,n.contexts.trace.data&&(r.contexts.trace.data=Hi(n.contexts.trace.data,e,t))),n.spans&&(r.spans=n.spans.map(a=>({...a,...a.data&&{data:Hi(a.data,e,t)}}))),(i=n.contexts)!=null&&i.flags&&r.contexts&&(r.contexts.flags=Hi(n.contexts.flags,3,t)),r}function DX(n,e){if(!e)return n;const t=n?n.clone():new _a;return t.update(e),t}function BX(n){if(n)return NX(n)?{captureContext:n}:kX(n)?{captureContext:n}:n}function NX(n){return n instanceof _a||typeof n=="function"}const OX=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function kX(n){return Object.keys(n).some(e=>OX.includes(e))}function jA(n,e){return Zo().captureException(n,BX(e))}function dI(n,e){return Zo().captureEvent(n,e)}function FX(n,e){ns().setContext(n,e)}function VX(n){ns().addEventProcessor(n)}function fI(n){const e=ns(),t=Zo(),{userAgent:r}=hn.navigator||{},o=mY({user:t.getUser()||e.getUser(),...r&&{userAgent:r},...n}),i=e.getSession();return(i==null?void 0:i.status)==="ok"&&ru(i,{status:"exited"}),hI(),e.setSession(o),o}function hI(){const n=ns(),t=Zo().getSession()||n.getSession();t&&gY(t),pI(),n.setSession()}function pI(){const n=ns(),e=Pn(),t=n.getSession();t&&e&&e.captureSession(t)}function mI(n=!1){if(n){hI();return}pI()}const UX="7";function zX(n){const e=n.protocol?`${n.protocol}:`:"",t=n.port?`:${n.port}`:"";return`${e}//${n.host}${t}${n.path?`/${n.path}`:""}/api/`}function GX(n){return`${zX(n)}${n.projectId}/envelope/`}function HX(n,e){const t={sentry_version:UX};return n.publicKey&&(t.sentry_key=n.publicKey),e&&(t.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(t).toString()}function WX(n,e,t){return e||`${GX(n)}?${HX(n,t)}`}const gI=[];function jX(n){const e={};return n.forEach(t=>{const{name:r}=t,o=e[r];o&&!o.isDefaultInstance&&t.isDefaultInstance||(e[r]=t)}),Object.values(e)}function QX(n){const e=n.defaultIntegrations||[],t=n.integrations;e.forEach(o=>{o.isDefaultInstance=!0});let r;if(Array.isArray(t))r=[...e,...t];else if(typeof t=="function"){const o=t(e);r=Array.isArray(o)?o:[o]}else r=e;return jX(r)}function $X(n,e){const t={};return e.forEach(r=>{r&&vI(n,r,t)}),t}function _I(n,e){for(const t of e)t!=null&&t.afterAllSetup&&t.afterAllSetup(n)}function vI(n,e,t){if(t[e.name]){wt&<.log(`Integration skipped because it was already installed: ${e.name}`);return}if(t[e.name]=e,gI.indexOf(e.name)===-1&&typeof e.setupOnce=="function"&&(e.setupOnce(),gI.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(n),typeof e.preprocessEvent=="function"){const r=e.preprocessEvent.bind(e);n.on("preprocessEvent",(o,i)=>r(o,i,n))}if(typeof e.processEvent=="function"){const r=e.processEvent.bind(e),o=Object.assign((i,a)=>r(i,a,n),{id:e.name});n.addEventProcessor(o)}wt&<.log(`Integration installed: ${e.name}`)}function DEe(n){return n}function YX(n,e,t){const r=[{type:"client_report"},{timestamp:Lf(),discarded_events:n}];return Ql(e?{dsn:e}:{},[r])}function AI(n){const e=[];n.message&&e.push(n.message);try{const t=n.exception.values[n.exception.values.length-1];t!=null&&t.value&&(e.push(t.value),t.type&&e.push(`${t.type}: ${t.value}`))}catch{}return e}function XX(n){var l;const{trace_id:e,parent_span_id:t,span_id:r,status:o,origin:i,data:a,op:s}=((l=n.contexts)==null?void 0:l.trace)??{};return{data:a??{},description:n.transaction,op:s,parent_span_id:t,span_id:r??"",start_timestamp:n.start_timestamp??0,status:o,timestamp:n.timestamp,trace_id:e??"",origin:i,profile_id:a==null?void 0:a[RA],exclusive_time:a==null?void 0:a[LA],measurements:n.measurements,is_segment:!0}}function qX(n){return{type:"transaction",timestamp:n.timestamp,start_timestamp:n.start_timestamp,transaction:n.description,contexts:{trace:{trace_id:n.trace_id,span_id:n.span_id,parent_span_id:n.parent_span_id,op:n.op,status:n.status,origin:n.origin,data:{...n.data,...n.profile_id&&{[RA]:n.profile_id},...n.exclusive_time&&{[LA]:n.exclusive_time}}}},measurements:n.measurements}}const yI="Not capturing exception because it's already been captured.",bI="Discarded session because of missing or non-string release",xI=Symbol.for("SentryInternalError"),EI=Symbol.for("SentryDoNotSendEventError");function qm(n){return{message:n,[xI]:!0}}function QA(n){return{message:n,[EI]:!0}}function CI(n){return!!n&&typeof n=="object"&&xI in n}function SI(n){return!!n&&typeof n=="object"&&EI in n}class KX{constructor(e){if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],e.dsn?this._dsn=YY(e.dsn):wt&<.warn("No DSN provided, client will not send events."),this._dsn){const t=WX(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:t})}}captureException(e,t,r){const o=Ko();if(RT(e))return wt&<.log(yI),o;const i={event_id:o,...t};return this._process(this.eventFromException(e,i).then(a=>this._captureEvent(a,i,r))),i.event_id}captureMessage(e,t,r,o){const i={event_id:Ko(),...r},a=yA(e)?e:String(e),s=bA(e)?this.eventFromMessage(a,t,i):this.eventFromException(e,i);return this._process(s.then(l=>this._captureEvent(l,i,o))),i.event_id}captureEvent(e,t,r){const o=Ko();if(t!=null&&t.originalException&&RT(t.originalException))return wt&<.log(yI),o;const i={event_id:o,...t},a=e.sdkProcessingMetadata||{},s=a.capturedSpanScope,l=a.capturedSpanIsolationScope;return this._process(this._captureEvent(e,i,s||r,l)),i.event_id}captureSession(e){this.sendSession(e),ru(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(e){const t=this._transport;return t?(this.emit("flush"),this._isClientDoneProcessing(e).then(r=>t.flush(e).then(o=>r&&o))):os(!0)}close(e){return this.flush(e).then(t=>(this.getOptions().enabled=!1,this.emit("close"),t))}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];vI(this,e,this._integrations),t||_I(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let r=cX(e,this._dsn,this._options._metadata,this._options.tunnel);for(const i of t.attachments||[])r=tX(r,iX(i));const o=this.sendEnvelope(r);o&&o.then(i=>this.emit("afterSendEvent",e,i),null)}sendSession(e){const{release:t,environment:r=OA}=this._options;if("aggregates"in e){const i=e.attrs||{};if(!i.release&&!t){wt&<.warn(bI);return}i.release=i.release||t,i.environment=i.environment||r,e.attrs=i}else{if(!e.release&&!t){wt&<.warn(bI);return}e.release=e.release||t,e.environment=e.environment||r}this.emit("beforeSendSession",e);const o=lX(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(o)}recordDroppedEvent(e,t,r=1){if(this._options.sendClientReports){const o=`${e}:${t}`;wt&<.log(`Recording outcome: "${o}"${r>1?` (${r} times)`:""}`),this._outcomes[o]=(this._outcomes[o]||0)+r}}on(e,t){const r=this._hooks[e]=this._hooks[e]||[];return r.push(t),()=>{const o=r.indexOf(t);o>-1&&r.splice(o,1)}}emit(e,...t){const r=this._hooks[e];r&&r.forEach(o=>o(...t))}sendEnvelope(e){return this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport?this._transport.send(e).then(null,t=>(wt&<.error("Error while sending envelope:",t),t)):(wt&<.error("Transport disabled"),os({}))}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=$X(this,e),_I(this,e)}_updateSessionFromEvent(e,t){var l;let r=t.level==="fatal",o=!1;const i=(l=t.exception)==null?void 0:l.values;if(i){o=!0;for(const c of i){const u=c.mechanism;if((u==null?void 0:u.handled)===!1){r=!0;break}}}const a=e.status==="ok";(a&&e.errors===0||a&&r)&&(ru(e,{...r&&{status:"crashed"},errors:e.errors||Number(o||r)}),this.captureSession(e))}_isClientDoneProcessing(e){return new Ys(t=>{let r=0;const o=1,i=setInterval(()=>{this._numProcessing==0?(clearInterval(i),t(!0)):(r+=o,e&&r>=e&&(clearInterval(i),t(!1)))},o)})}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,t,r,o){const i=this.getOptions(),a=Object.keys(this._integrations);return!t.integrations&&(a!=null&&a.length)&&(t.integrations=a),this.emit("preprocessEvent",e,t),e.type||o.setLastEventId(e.event_id||t.event_id),uI(i,e,t,r,this,o).then(s=>{if(s===null)return s;this.emit("postprocessEvent",s,t),s.contexts={trace:wY(r),...s.contexts};const l=XY(this,r);return s.sdkProcessingMetadata={dynamicSamplingContext:l,...s.sdkProcessingMetadata},s})}_captureEvent(e,t={},r=Zo(),o=ns()){return wt&&$A(e)&<.log(`Captured error event \`${AI(e)[0]||""}\``),this._processEvent(e,t,r,o).then(i=>i.event_id,i=>{wt&&(SI(i)?lt.log(i.message):CI(i)?lt.warn(i.message):lt.warn(i))})}_processEvent(e,t,r,o){const i=this.getOptions(),{sampleRate:a}=i,s=wI(e),l=$A(e),c=e.type||"error",u=`before send for type \`${c}\``,d=typeof a>"u"?void 0:Of(a);if(l&&typeof d=="number"&&Math.random()>d)return this.recordDroppedEvent("sample_rate","error"),Qm(QA(`Discarding event because it's not included in the random sample (sampling rate = ${a})`));const f=c==="replay_event"?"replay":c;return this._prepareEvent(e,t,r,o).then(h=>{if(h===null)throw this.recordDroppedEvent("event_processor",f),QA("An event processor returned `null`, will not send event.");if(t.data&&t.data.__sentry__===!0)return h;const m=JX(this,i,h,t);return ZX(m,u)}).then(h=>{var g;if(h===null){if(this.recordDroppedEvent("before_send",f),s){const A=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",A)}throw QA(`${u} returned \`null\`, will not send event.`)}const p=r.getSession()||o.getSession();if(l&&p&&this._updateSessionFromEvent(p,h),s){const _=((g=h.sdkProcessingMetadata)==null?void 0:g.spanCountBeforeProcessing)||0,A=h.spans?h.spans.length:0,y=_-A;y>0&&this.recordDroppedEvent("before_send","span",y)}const m=h.transaction_info;if(s&&m&&h.transaction!==e.transaction){const _="custom";h.transaction_info={...m,source:_}}return this.sendEvent(h,t),h}).then(null,h=>{throw SI(h)||CI(h)?h:(this.captureException(h,{data:{__sentry__:!0},originalException:h}),qm(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. +Reason: ${h}`))})}_process(e){this._numProcessing++,e.then(t=>(this._numProcessing--,t),t=>(this._numProcessing--,t))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([t,r])=>{const[o,i]=t.split(":");return{reason:o,category:i,quantity:r}})}_flushOutcomes(){wt&<.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){wt&<.log("No outcomes to send");return}if(!this._dsn){wt&<.log("No dsn provided, will not send outcomes");return}wt&<.log("Sending outcomes:",e);const t=YX(e,this._options.tunnel&&Vf(this._dsn));this.sendEnvelope(t)}}function ZX(n,e){const t=`${e} must return \`null\` or a valid event.`;if(km(n))return n.then(r=>{if(!If(r)&&r!==null)throw qm(t);return r},r=>{throw qm(`${e} rejected with ${r}`)});if(!If(n)&&n!==null)throw qm(t);return n}function JX(n,e,t,r){const{beforeSend:o,beforeSendTransaction:i,beforeSendSpan:a}=e;let s=t;if($A(s)&&o)return o(s,r);if(wI(s)){if(a){const l=a(XX(s));if(l?s=Pf(t,qX(l)):NA(),s.spans){const c=[];for(const u of s.spans){const d=a(u);d?c.push(d):(NA(),c.push(u))}s.spans=c}}if(i){if(s.spans){const l=s.spans.length;s.sdkProcessingMetadata={...t.sdkProcessingMetadata,spanCountBeforeProcessing:l}}return i(s,r)}}return s}function $A(n){return n.type===void 0}function wI(n){return n.type==="transaction"}function eq(n){return[{type:"log",item_count:n.length,content_type:"application/vnd.sentry.items.log+json"},{items:n}]}function tq(n,e,t,r){const o={};return e!=null&&e.sdk&&(o.sdk={name:e.sdk.name,version:e.sdk.version}),t&&r&&(o.dsn=Vf(r)),Ql(o,[eq(n)])}function YA(n,e){const t=nq(n)??[];if(t.length===0)return;const r=n.getOptions(),o=tq(t,r._metadata,r.tunnel,n.getDsn());MI().set(n,[]),n.emit("flushLogs"),n.sendEnvelope(o)}function nq(n){return MI().get(n)}function MI(){return Tf("clientToLogBufferMap",()=>new WeakMap)}function rq(n,e){e.debug===!0&&(wt?lt.enable():Ja(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),Zo().update(e.initialScope);const r=new n(e);return oq(r),r.init(),r}function oq(n){Zo().setClient(n)}const TI=Symbol.for("SentryBufferFullError");function iq(n){const e=[];function t(){return n===void 0||e.lengthr(s)).then(null,()=>r(s).then(null,()=>{})),s}function i(a){return new Ys((s,l)=>{let c=e.length;if(!c)return s(!0);const u=setTimeout(()=>{a&&a>0&&s(!1)},a);e.forEach(d=>{os(d).then(()=>{--c||(clearTimeout(u),s(!0))},l)})})}return{$:e,add:o,drain:i}}const aq=60*1e3;function sq(n,e=Date.now()){const t=parseInt(`${n}`,10);if(!isNaN(t))return t*1e3;const r=Date.parse(`${n}`);return isNaN(r)?aq:r-e}function lq(n,e){return n[e]||n.all||0}function II(n,e,t=Date.now()){return lq(n,e)>t}function RI(n,{statusCode:e,headers:t},r=Date.now()){const o={...n},i=t==null?void 0:t["x-sentry-rate-limits"],a=t==null?void 0:t["retry-after"];if(i)for(const s of i.trim().split(",")){const[l,c,,,u]=s.split(":",5),d=parseInt(l,10),f=(isNaN(d)?60:d)*1e3;if(!c)o.all=r+f;else for(const h of c.split(";"))h==="metric_bucket"?(!u||u.split(";").includes("custom"))&&(o[h]=r+f):o[h]=r+f}else a?o.all=r+sq(a,r):e===429&&(o.all=r+60*1e3);return o}const cq=64;function uq(n,e,t=iq(n.bufferSize||cq)){let r={};const o=a=>t.drain(a);function i(a){const s=[];if(XT(a,(d,f)=>{const h=qT(f);II(r,h)?n.recordDroppedEvent("ratelimit_backoff",h):s.push(d)}),s.length===0)return os({});const l=Ql(a[0],s),c=d=>{XT(l,(f,h)=>{n.recordDroppedEvent(d,qT(h))})},u=()=>e({body:nX(l)}).then(d=>(d.statusCode!==void 0&&(d.statusCode<200||d.statusCode>=300)&&wt&<.warn(`Sentry responded with status code ${d.statusCode} to sent event.`),r=RI(r,d),d),d=>{throw c("network_error"),wt&<.error("Encountered error running transport request:",d),d});return t.add(u).then(d=>d,d=>{if(d===TI)return wt&<.error("Skipped sending event because buffer is full."),c("queue_overflow"),os({});throw d})}return{send:i,flush:o}}function dq(n,e){const t=e==null?void 0:e.getDsn(),r=e==null?void 0:e.getOptions().tunnel;return hq(n,t)||fq(n,r)}function fq(n,e){return e?LI(n)===LI(e):!1}function hq(n,e){return e?n.includes(e.host):!1}function LI(n){return n[n.length-1]==="/"?n.slice(0,-1):n}function pq(n){var e;((e=n.user)==null?void 0:e.ip_address)===void 0&&(n.user={...n.user,ip_address:"{{auto}}"})}function mq(n){var e;"aggregates"in n?((e=n.attrs)==null?void 0:e.ip_address)===void 0&&(n.attrs={...n.attrs,ip_address:"{{auto}}"}):n.ipAddress===void 0&&(n.ipAddress="{{auto}}")}function PI(n,e,t=[e],r="npm"){const o=n._metadata||{};o.sdk||(o.sdk={name:`sentry.javascript.${e}`,packages:t.map(i=>({name:`${r}:@sentry/${i}`,version:zl})),version:zl}),n._metadata=o}function gq(n,e,t){let r,o,i;const a=t!=null&&t.maxWait?Math.max(t.maxWait,e):0,s=(t==null?void 0:t.setTimeoutImpl)||setTimeout;function l(){return c(),r=n(),r}function c(){o!==void 0&&clearTimeout(o),i!==void 0&&clearTimeout(i),o=i=void 0}function u(){return o!==void 0||i!==void 0?l():r}function d(){return o&&clearTimeout(o),o=s(l,e),a&&i===void 0&&(i=s(l,a)),r}return d.cancel=c,d.flush=u,d}const _q=100;function Xs(n,e){const t=Pn(),r=ns();if(!t)return;const{beforeBreadcrumb:o=null,maxBreadcrumbs:i=_q}=t.getOptions();if(i<=0)return;const s={timestamp:Lf(),...n},l=o?Ja(()=>o(s,e)):s;l!==null&&(t.emit&&t.emit("beforeAddBreadcrumb",l,e),r.addBreadcrumb(l,i))}let DI;const vq="FunctionToString",BI=new WeakMap,Aq=(()=>({name:vq,setupOnce(){DI=Function.prototype.toString;try{Function.prototype.toString=function(...n){const e=EA(this),t=BI.has(Pn())&&e!==void 0?e:this;return DI.apply(t,n)}}catch{}},setup(n){BI.set(n,!0)}})),yq=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,`can't redefine non-configurable property "solana"`,"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)","Can't find variable: _AutofillCallbackHandler",/^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/,/^Java exception was raised during method invocation$/],bq="EventFilters",xq=(n={})=>{let e;return{name:bq,setup(t){const r=t.getOptions();e=NI(n,r)},processEvent(t,r,o){if(!e){const i=o.getOptions();e=NI(n,i)}return Cq(t,e)?null:t}}},Eq=((n={})=>({...xq(n),name:"InboundFilters"}));function NI(n={},e={}){return{allowUrls:[...n.allowUrls||[],...e.allowUrls||[]],denyUrls:[...n.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...n.ignoreErrors||[],...e.ignoreErrors||[],...n.disableErrorDefaults?[]:yq],ignoreTransactions:[...n.ignoreTransactions||[],...e.ignoreTransactions||[]]}}function Cq(n,e){if(n.type){if(n.type==="transaction"&&wq(n,e.ignoreTransactions))return wt&<.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. +Event: ${jl(n)}`),!0}else{if(Sq(n,e.ignoreErrors))return wt&<.warn(`Event dropped due to being matched by \`ignoreErrors\` option. +Event: ${jl(n)}`),!0;if(Rq(n))return wt&<.warn(`Event dropped due to not having an error message, error type or stacktrace. +Event: ${jl(n)}`),!0;if(Mq(n,e.denyUrls))return wt&<.warn(`Event dropped due to being matched by \`denyUrls\` option. +Event: ${jl(n)}. +Url: ${Km(n)}`),!0;if(!Tq(n,e.allowUrls))return wt&<.warn(`Event dropped due to not being matched by \`allowUrls\` option. +Event: ${jl(n)}. +Url: ${Km(n)}`),!0}return!1}function Sq(n,e){return e!=null&&e.length?AI(n).some(t=>Rf(t,e)):!1}function wq(n,e){if(!(e!=null&&e.length))return!1;const t=n.transaction;return t?Rf(t,e):!1}function Mq(n,e){if(!(e!=null&&e.length))return!1;const t=Km(n);return t?Rf(t,e):!1}function Tq(n,e){if(!(e!=null&&e.length))return!0;const t=Km(n);return t?Rf(t,e):!0}function Iq(n=[]){for(let e=n.length-1;e>=0;e--){const t=n[e];if(t&&t.filename!==""&&t.filename!=="[native code]")return t.filename||null}return null}function Km(n){var e,t;try{const r=[...((e=n.exception)==null?void 0:e.values)??[]].reverse().find(i=>{var a,s,l;return((a=i.mechanism)==null?void 0:a.parent_id)===void 0&&((l=(s=i.stacktrace)==null?void 0:s.frames)==null?void 0:l.length)}),o=(t=r==null?void 0:r.stacktrace)==null?void 0:t.frames;return o?Iq(o):null}catch{return wt&<.error(`Cannot extract url for event ${jl(n)}`),null}}function Rq(n){var e,t;return(t=(e=n.exception)==null?void 0:e.values)!=null&&t.length?!n.message&&!n.exception.values.some(r=>r.stacktrace||r.type&&r.type!=="Error"||r.value):!1}function Lq(n,e,t,r,o,i){var s;if(!((s=o.exception)!=null&&s.values)||!i||!$s(i.originalException,Error))return;const a=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;a&&(o.exception.values=XA(n,e,r,i.originalException,t,o.exception.values,a,0))}function XA(n,e,t,r,o,i,a,s){if(i.length>=t+1)return i;let l=[...i];if($s(r[o],Error)){OI(a,s);const c=n(e,r[o]),u=l.length;kI(c,o,u,s),l=XA(n,e,t,r[o],o,[c,...l],c,u)}return Array.isArray(r.errors)&&r.errors.forEach((c,u)=>{if($s(c,Error)){OI(a,s);const d=n(e,c),f=l.length;kI(d,`errors[${u}]`,f,s),l=XA(n,e,t,c,o,[d,...l],d,f)}}),l}function OI(n,e){n.mechanism=n.mechanism||{type:"generic",handled:!0},n.mechanism={...n.mechanism,...n.type==="AggregateError"&&{is_exception_group:!0},exception_id:e}}function kI(n,e,t,r){n.mechanism=n.mechanism||{type:"generic",handled:!0},n.mechanism={...n.mechanism,type:"chained",source:e,exception_id:t,parent_id:r}}function Pq(n){const e="console";Hl(e,n),Wl(e,Dq)}function Dq(){"console"in hn&&z$.forEach(function(n){n in hn.console&&Oo(hn.console,n,function(e){return Dm[n]=e,function(...t){Gi("console",{args:t,level:n});const o=Dm[n];o==null||o.apply(hn.console,t)}})})}function FI(n){return n==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(n)?n:"log"}const Bq="Dedupe",Nq=(()=>{let n;return{name:Bq,processEvent(e){if(e.type)return e;try{if(Oq(e,n))return wt&<.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return n=e}}});function Oq(n,e){return e?!!(kq(n,e)||Fq(n,e)):!1}function kq(n,e){const t=n.message,r=e.message;return!(!t&&!r||t&&!r||!t&&r||t!==r||!UI(n,e)||!VI(n,e))}function Fq(n,e){const t=zI(e),r=zI(n);return!(!t||!r||t.type!==r.type||t.value!==r.value||!UI(n,e)||!VI(n,e))}function VI(n,e){let t=vT(n),r=vT(e);if(!t&&!r)return!0;if(t&&!r||!t&&r||(t=t,r=r,r.length!==t.length))return!1;for(let o=0;o=400&&n<500?"warning":n>=500?"error":void 0}const Uf=hn;function Vq(){return"history"in Uf&&!!Uf.history}function Uq(){if(!("fetch"in Uf))return!1;try{return new Headers,new Request("http://www.example.com"),new Response,!0}catch{return!1}}function KA(n){return n&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(n.toString())}function zq(){var t;if(typeof EdgeRuntime=="string")return!0;if(!Uq())return!1;if(KA(Uf.fetch))return!0;let n=!1;const e=Uf.document;if(e&&typeof e.createElement=="function")try{const r=e.createElement("iframe");r.hidden=!0,e.head.appendChild(r),(t=r.contentWindow)!=null&&t.fetch&&(n=KA(r.contentWindow.fetch)),e.head.removeChild(r)}catch(r){wt&<.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",r)}return n}function Gq(n,e){const t="fetch";Hl(t,n),Wl(t,()=>Hq(void 0,e))}function Hq(n,e=!1){e&&!zq()||Oo(hn,"fetch",function(t){return function(...r){const o=new Error,{method:i,url:a}=Wq(r),s={args:r,fetchData:{method:i,url:a},startTimestamp:ko()*1e3,virtualError:o,headers:jq(r)};return Gi("fetch",{...s}),t.apply(hn,r).then(async l=>(Gi("fetch",{...s,endTimestamp:ko()*1e3,response:l}),l),l=>{if(Gi("fetch",{...s,endTimestamp:ko()*1e3,error:l}),AA(l)&&l.stack===void 0&&(l.stack=o.stack,Ai(l,"framesToPop",1)),l instanceof TypeError&&(l.message==="Failed to fetch"||l.message==="Load failed"||l.message==="NetworkError when attempting to fetch resource."))try{const c=new URL(s.fetchData.url);l.message=`${l.message} (${c.host})`}catch{}throw l})}})}function ZA(n,e){return!!n&&typeof n=="object"&&!!n[e]}function HI(n){return typeof n=="string"?n:n?ZA(n,"url")?n.url:n.toString?n.toString():"":""}function Wq(n){if(n.length===0)return{method:"GET",url:""};if(n.length===2){const[t,r]=n;return{url:HI(t),method:ZA(r,"method")?String(r.method).toUpperCase():"GET"}}const e=n[0];return{url:HI(e),method:ZA(e,"method")?String(e.method).toUpperCase():"GET"}}function jq(n){const[e,t]=n;try{if(typeof t=="object"&&t!==null&&"headers"in t&&t.headers)return new Headers(t.headers);if(oY(e))return new Headers(e.headers)}catch{}}function Qq(){return typeof __SENTRY_BROWSER_BUNDLE__<"u"&&!!__SENTRY_BROWSER_BUNDLE__}function $q(){return"npm"}function Yq(){return!Qq()&&Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]"}function WI(){return typeof window<"u"&&(!Yq()||Xq())}function Xq(){const n=hn.process;return(n==null?void 0:n.type)==="renderer"}const sr=hn;let JA=0;function jI(){return JA>0}function qq(){JA++,setTimeout(()=>{JA--})}function su(n,e={}){function t(o){return typeof o=="function"}if(!t(n))return n;try{const o=n.__sentry_wrapped__;if(o)return typeof o=="function"?o:n;if(EA(n))return n}catch{return n}const r=function(...o){try{const i=o.map(a=>su(a,e));return n.apply(this,i)}catch(i){throw qq(),TA(a=>{a.addEventProcessor(s=>(e.mechanism&&(CA(s,void 0),nu(s,e.mechanism)),s.extra={...s.extra,arguments:o},s)),jA(i)}),i}};try{for(const o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])}catch{}ST(r,n),Ai(n,"__sentry_wrapped__",r);try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get(){return n.name}})}catch{}return r}function Kq(){const n=Vm(),{referrer:e}=sr.document||{},{userAgent:t}=sr.navigator||{},r={...e&&{Referer:e},...t&&{"User-Agent":t}};return{url:n,headers:r}}function ey(n,e){const t=ny(n,e),r={type:nK(e),value:rK(e)};return t.length&&(r.stacktrace={frames:t}),r.type===void 0&&r.value===""&&(r.value="Unrecoverable error caught"),r}function Zq(n,e,t,r){const o=Pn(),i=o==null?void 0:o.getOptions().normalizeDepth,a=lK(e),s={__serialized__:YT(e,i)};if(a)return{exception:{values:[ey(n,a)]},extra:s};const l={exception:{values:[{type:Om(e)?e.constructor.name:r?"UnhandledRejection":"Error",value:aK(e,{isUnhandledRejection:r})}]},extra:s};if(t){const c=ny(n,t);c.length&&(l.exception.values[0].stacktrace={frames:c})}return l}function ty(n,e){return{exception:{values:[ey(n,e)]}}}function ny(n,e){const t=e.stacktrace||e.stack||"",r=eK(e),o=tK(e);try{return n(t,r,o)}catch{}return[]}const Jq=/Minified React error #\d+;/i;function eK(n){return n&&Jq.test(n.message)?1:0}function tK(n){return typeof n.framesToPop=="number"?n.framesToPop:0}function QI(n){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?n instanceof WebAssembly.Exception:!1}function nK(n){const e=n==null?void 0:n.name;return!e&&QI(n)?n.message&&Array.isArray(n.message)&&n.message.length==2?n.message[0]:"WebAssembly.Exception":e}function rK(n){const e=n==null?void 0:n.message;return QI(n)?Array.isArray(n.message)&&n.message.length==2?n.message[1]:"wasm exception":e?e.error&&typeof e.error.message=="string"?e.error.message:e:"No error message"}function oK(n,e,t,r){const o=(t==null?void 0:t.syntheticException)||void 0,i=ry(n,e,o,r);return nu(i),i.level="error",t!=null&&t.event_id&&(i.event_id=t.event_id),os(i)}function iK(n,e,t="info",r,o){const i=(r==null?void 0:r.syntheticException)||void 0,a=oy(n,e,i,o);return a.level=t,r!=null&&r.event_id&&(a.event_id=r.event_id),os(a)}function ry(n,e,t,r,o){let i;if(bT(e)&&e.error)return ty(n,e.error);if(xT(e)||eY(e)){const a=e;if("stack"in e)i=ty(n,e);else{const s=a.name||(xT(a)?"DOMError":"DOMException"),l=a.message?`${s}: ${a.message}`:s;i=oy(n,l,t,r),CA(i,l)}return"code"in a&&(i.tags={...i.tags,"DOMException.code":`${a.code}`}),i}return AA(e)?ty(n,e):If(e)||Om(e)?(i=Zq(n,e,t,o),nu(i,{synthetic:!0}),i):(i=oy(n,e,t,r),CA(i,`${e}`),nu(i,{synthetic:!0}),i)}function oy(n,e,t,r){const o={};if(r&&t){const i=ny(n,t);i.length&&(o.exception={values:[{value:e,stacktrace:{frames:i}}]}),nu(o,{synthetic:!0})}if(yA(e)){const{__sentry_template_string__:i,__sentry_template_values__:a}=e;return o.logentry={message:i,params:a},o}return o.message=e,o}function aK(n,{isUnhandledRejection:e}){const t=cY(n),r=e?"promise rejection":"exception";return bT(n)?`Event \`ErrorEvent\` captured as ${r} with message \`${n.message}\``:Om(n)?`Event \`${sK(n)}\` (type=${n.type}) captured as ${r}`:`Object captured as ${r} with keys: ${t}`}function sK(n){try{const e=Object.getPrototypeOf(n);return e?e.constructor.name:void 0}catch{}}function lK(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const t=n[e];if(t instanceof Error)return t}}const cK=5e3;class uK extends KX{constructor(e){const t=dK(e),r=sr.SENTRY_SDK_SOURCE||$q();PI(t,"browser",["browser"],r),super(t);const{sendDefaultPii:o,sendClientReports:i,enableLogs:a,_experiments:s}=this._options,l=a??(s==null?void 0:s.enableLogs);sr.document&&(i||l)&&sr.document.addEventListener("visibilitychange",()=>{sr.document.visibilityState==="hidden"&&(i&&this._flushOutcomes(),l&&YA(this))}),l&&(this.on("flush",()=>{YA(this)}),this.on("afterCaptureLog",()=>{this._logFlushIdleTimeout&&clearTimeout(this._logFlushIdleTimeout),this._logFlushIdleTimeout=setTimeout(()=>{YA(this)},cK)})),o&&(this.on("postprocessEvent",pq),this.on("beforeSendSession",mq))}eventFromException(e,t){return oK(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",r){return iK(this._options.stackParser,e,t,r,this._options.attachStacktrace)}_prepareEvent(e,t,r,o){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,r,o)}}function dK(n){var e;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(e=sr.SENTRY_RELEASE)==null?void 0:e.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...n}}const Zm=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,qt=hn,fK=(n,e)=>n>e[1]?"poor":n>e[0]?"needs-improvement":"good",zf=(n,e,t,r)=>{let o,i;return a=>{e.value>=0&&(a||r)&&(i=e.value-(o??0),(i||o===void 0)&&(o=e.value,e.delta=i,e.rating=fK(e.value,t),n(e)))}},hK=()=>`v5-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`,$I=(n=!0)=>{var t,r;const e=(r=(t=qt.performance)==null?void 0:t.getEntriesByType)==null?void 0:r.call(t,"navigation")[0];if(!n||e&&e.responseStart>0&&e.responseStart{const n=$I();return(n==null?void 0:n.activationStart)??0},Gf=(n,e=-1)=>{var i,a;const t=$I();let r="navigate";return t&&((i=qt.document)!=null&&i.prerendering||Jm()>0?r="prerender":(a=qt.document)!=null&&a.wasDiscarded?r="restore":t.type&&(r=t.type.replace(/_/g,"-"))),{name:n,value:e,rating:"good",delta:0,entries:[],id:hK(),navigationType:r}},iy=new WeakMap;function ay(n,e){return iy.get(n)||iy.set(n,new e),iy.get(n)}class eg{constructor(){eg.prototype.__init.call(this),eg.prototype.__init2.call(this)}__init(){this._sessionValue=0}__init2(){this._sessionEntries=[]}_processEntry(e){var o;if(e.hadRecentInput)return;const t=this._sessionEntries[0],r=this._sessionEntries[this._sessionEntries.length-1];this._sessionValue&&t&&r&&e.startTime-r.startTime<1e3&&e.startTime-t.startTime<5e3?(this._sessionValue+=e.value,this._sessionEntries.push(e)):(this._sessionValue=e.value,this._sessionEntries=[e]),(o=this._onAfterProcessingUnexpectedShift)==null||o.call(this,e)}}const $l=(n,e,t={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(n)){const r=new PerformanceObserver(o=>{Promise.resolve().then(()=>{e(o.getEntries())})});return r.observe({type:n,buffered:!0,...t}),r}}catch{}},tg=n=>{let e=!1;return()=>{e||(n(),e=!0)}};let Hf=-1;const pK=()=>{var n,e;return((n=qt.document)==null?void 0:n.visibilityState)==="hidden"&&!((e=qt.document)!=null&&e.prerendering)?0:1/0},ng=n=>{qt.document.visibilityState==="hidden"&&Hf>-1&&(Hf=n.type==="visibilitychange"?n.timeStamp:0,gK())},mK=()=>{addEventListener("visibilitychange",ng,!0),addEventListener("prerenderingchange",ng,!0)},gK=()=>{removeEventListener("visibilitychange",ng,!0),removeEventListener("prerenderingchange",ng,!0)},sy=()=>{var n;if(qt.document&&Hf<0){const e=Jm();Hf=(qt.document.prerendering||(n=globalThis.performance.getEntriesByType("visibility-state").filter(r=>r.name==="hidden"&&r.startTime>e)[0])==null?void 0:n.startTime)??pK(),mK()}return{get firstHiddenTime(){return Hf}}},rg=n=>{var e;(e=qt.document)!=null&&e.prerendering?addEventListener("prerenderingchange",()=>n(),!0):n()},_K=[1800,3e3],vK=(n,e={})=>{rg(()=>{const t=sy(),r=Gf("FCP");let o;const a=$l("paint",s=>{for(const l of s)l.name==="first-contentful-paint"&&(a.disconnect(),l.startTime{vK(tg(()=>{var s,l;const t=Gf("CLS",0);let r;const o=ay(e,eg),i=c=>{for(const u of c)o._processEntry(u);o._sessionValue>t.value&&(t.value=o._sessionValue,t.entries=o._sessionEntries,r())},a=$l("layout-shift",i);a&&(r=zf(n,t,AK,e.reportAllChanges),(s=qt.document)==null||s.addEventListener("visibilitychange",()=>{var c;((c=qt.document)==null?void 0:c.visibilityState)==="hidden"&&(i(a.takeRecords()),r(!0))}),(l=qt==null?void 0:qt.setTimeout)==null||l.call(qt,r))}))},ly=n=>{const e=t=>{var r;(t.type==="pagehide"||((r=qt.document)==null?void 0:r.visibilityState)==="hidden")&&n(t)};qt.document&&(addEventListener("visibilitychange",e,!0),addEventListener("pagehide",e,!0))},bK=[100,300],xK=(n,e={})=>{rg(()=>{const t=sy(),r=Gf("FID");let o;const i=l=>{l.startTime{l.forEach(i)},s=$l("first-input",a);o=zf(n,r,bK,e.reportAllChanges),s&&ly(tg(()=>{a(s.takeRecords()),s.disconnect()}))})};let YI=0,cy=1/0,og=0;const EK=n=>{n.forEach(e=>{e.interactionId&&(cy=Math.min(cy,e.interactionId),og=Math.max(og,e.interactionId),YI=og?(og-cy)/7+1:0)})};let uy;const XI=()=>uy?YI:performance.interactionCount||0,CK=()=>{"interactionCount"in performance||uy||(uy=$l("event",EK,{type:"event",buffered:!0,durationThreshold:0}))},dy=10;let qI=0;const SK=()=>XI()-qI;class ig{constructor(){ig.prototype.__init.call(this),ig.prototype.__init2.call(this)}__init(){this._longestInteractionList=[]}__init2(){this._longestInteractionMap=new Map}_resetInteractions(){qI=XI(),this._longestInteractionList.length=0,this._longestInteractionMap.clear()}_estimateP98LongestInteraction(){const e=Math.min(this._longestInteractionList.length-1,Math.floor(SK()/50));return this._longestInteractionList[e]}_processEntry(e){var o,i;if((o=this._onBeforeProcessingEntry)==null||o.call(this,e),!(e.interactionId||e.entryType==="first-input"))return;const t=this._longestInteractionList.at(-1);let r=this._longestInteractionMap.get(e.interactionId);if(r||this._longestInteractionList.lengtht._latency){if(r?e.duration>r._latency?(r.entries=[e],r._latency=e.duration):e.duration===r._latency&&e.startTime===r.entries[0].startTime&&r.entries.push(e):(r={id:e.interactionId,entries:[e],_latency:e.duration},this._longestInteractionMap.set(r.id,r),this._longestInteractionList.push(r)),this._longestInteractionList.sort((a,s)=>s._latency-a._latency),this._longestInteractionList.length>dy){const a=this._longestInteractionList.splice(dy);for(const s of a)this._longestInteractionMap.delete(s.id)}(i=this._onAfterProcessingINPCandidate)==null||i.call(this,r)}}}const KI=n=>{var t;const e=qt.requestIdleCallback||qt.setTimeout;((t=qt.document)==null?void 0:t.visibilityState)==="hidden"?n():(n=tg(n),e(n),ly(n))},wK=[200,500],MK=40,TK=(n,e={})=>{globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype&&rg(()=>{CK();const t=Gf("INP");let r;const o=ay(e,ig),i=s=>{KI(()=>{for(const c of s)o._processEntry(c);const l=o._estimateP98LongestInteraction();l&&l._latency!==t.value&&(t.value=l._latency,t.entries=l.entries,r())})},a=$l("event",i,{durationThreshold:e.durationThreshold??MK});r=zf(n,t,wK,e.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),ly(()=>{i(a.takeRecords()),r(!0)}))})};class IK{_processEntry(e){var t;(t=this._onBeforeProcessingEntry)==null||t.call(this,e)}}const RK=[2500,4e3],LK=(n,e={})=>{rg(()=>{const t=sy(),r=Gf("LCP");let o;const i=ay(e,IK),a=l=>{e.reportAllChanges||(l=l.slice(-1));for(const c of l)i._processEntry(c),c.startTime{a(s.takeRecords()),s.disconnect(),o(!0)});for(const c of["keydown","click","visibilitychange"])qt.document&&addEventListener(c,()=>KI(l),{capture:!0,once:!0})}})},Wf={},ag={};let ZI,JI,e4,t4;function PK(n,e=!1){return sg("cls",n,kK,ZI,e)}function DK(n,e=!1){return sg("lcp",n,VK,e4,e)}function BK(n){return sg("fid",n,FK,JI)}function NK(n){return sg("inp",n,UK,t4)}function OK(n,e){return n4(n,e),ag[n]||(zK(n),ag[n]=!0),r4(n,e)}function jf(n,e){const t=Wf[n];if(t!=null&&t.length)for(const r of t)try{r(e)}catch(o){Zm&<.error(`Error while triggering instrumentation handler. +Type: ${n} +Name: ${es(r)} +Error:`,o)}}function kK(){return yK(n=>{jf("cls",{metric:n}),ZI=n},{reportAllChanges:!0})}function FK(){return xK(n=>{jf("fid",{metric:n}),JI=n})}function VK(){return LK(n=>{jf("lcp",{metric:n}),e4=n},{reportAllChanges:!0})}function UK(){return TK(n=>{jf("inp",{metric:n}),t4=n})}function sg(n,e,t,r,o=!1){n4(n,e);let i;return ag[n]||(i=t(),ag[n]=!0),r&&e({metric:r}),r4(n,e,o?i:void 0)}function zK(n){const e={};n==="event"&&(e.durationThreshold=0),$l(n,t=>{jf(n,{entries:t})},e)}function n4(n,e){Wf[n]=Wf[n]||[],Wf[n].push(e)}function r4(n,e,t){return()=>{t&&t();const r=Wf[n];if(!r)return;const o=r.indexOf(e);o!==-1&&r.splice(o,1)}}const GK=1e3;let o4,fy,hy;function i4(n){Hl("dom",n),Wl("dom",HK)}function HK(){if(!qt.document)return;const n=Gi.bind(null,"dom"),e=a4(n,!0);qt.document.addEventListener("click",e,!1),qt.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(t=>{var i,a;const o=(i=qt[t])==null?void 0:i.prototype;(a=o==null?void 0:o.hasOwnProperty)!=null&&a.call(o,"addEventListener")&&(Oo(o,"addEventListener",function(s){return function(l,c,u){if(l==="click"||l=="keypress")try{const d=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},f=d[l]=d[l]||{refCount:0};if(!f.handler){const h=a4(n);f.handler=h,s.call(this,l,h,u)}f.refCount++}catch{}return s.call(this,l,c,u)}}),Oo(o,"removeEventListener",function(s){return function(l,c,u){if(l==="click"||l=="keypress")try{const d=this.__sentry_instrumentation_handlers__||{},f=d[l];f&&(f.refCount--,f.refCount<=0&&(s.call(this,l,f.handler,u),f.handler=void 0,delete d[l]),Object.keys(d).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return s.call(this,l,c,u)}}))})}function WK(n){if(n.type!==fy)return!1;try{if(!n.target||n.target._sentryId!==hy)return!1}catch{}return!0}function jK(n,e){return n!=="keypress"?!1:e!=null&&e.tagName?!(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable):!0}function a4(n,e=!1){return t=>{if(!t||t._sentryCaptured)return;const r=QK(t);if(jK(t.type,r))return;Ai(t,"_sentryCaptured",!0),r&&!r._sentryId&&Ai(r,"_sentryId",Ko());const o=t.type==="keypress"?"input":t.type;WK(t)||(n({event:t,name:o,global:e}),fy=t.type,hy=r?r._sentryId:void 0),clearTimeout(o4),o4=qt.setTimeout(()=>{hy=void 0,fy=void 0},GK)}}function QK(n){try{return n.target}catch{return null}}let lg;function py(n){const e="history";Hl(e,n),Wl(e,$K)}function $K(){if(qt.addEventListener("popstate",()=>{const e=qt.location.href,t=lg;if(lg=e,t===e)return;Gi("history",{from:t,to:e})}),!Vq())return;function n(e){return function(...t){const r=t.length>2?t[2]:void 0;if(r){const o=lg,i=YK(String(r));if(lg=i,o===i)return e.apply(this,t);Gi("history",{from:o,to:i})}return e.apply(this,t)}}Oo(qt.history,"pushState",n),Oo(qt.history,"replaceState",n)}function YK(n){try{return new URL(n,qt.location.origin).toString()}catch{return n}}const cg={};function s4(n){const e=cg[n];if(e)return e;let t=qt[n];if(KA(t))return cg[n]=t.bind(qt);const r=qt.document;if(r&&typeof r.createElement=="function")try{const o=r.createElement("iframe");o.hidden=!0,r.head.appendChild(o);const i=o.contentWindow;i!=null&&i[n]&&(t=i[n]),r.head.removeChild(o)}catch(o){Zm&<.warn(`Could not create sandbox iframe for ${n} check, bailing to window.${n}: `,o)}return t&&(cg[n]=t.bind(qt))}function l4(n){cg[n]=void 0}function Qf(...n){return s4("setTimeout")(...n)}const lu="__sentry_xhr_v3__";function XK(n){Hl("xhr",n),Wl("xhr",qK)}function qK(){if(!qt.XMLHttpRequest)return;const n=XMLHttpRequest.prototype;n.open=new Proxy(n.open,{apply(e,t,r){const o=new Error,i=ko()*1e3,a=ts(r[0])?r[0].toUpperCase():void 0,s=KK(r[1]);if(!a||!s)return e.apply(t,r);t[lu]={method:a,url:s,request_headers:{}},a==="POST"&&s.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const l=()=>{const c=t[lu];if(c&&t.readyState===4){try{c.status_code=t.status}catch{}const u={endTimestamp:ko()*1e3,startTimestamp:i,xhr:t,virtualError:o};Gi("xhr",u)}};return"onreadystatechange"in t&&typeof t.onreadystatechange=="function"?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply(c,u,d){return l(),c.apply(u,d)}}):t.addEventListener("readystatechange",l),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(c,u,d){const[f,h]=d,p=u[lu];return p&&ts(f)&&ts(h)&&(p.request_headers[f.toLowerCase()]=h),c.apply(u,d)}}),e.apply(t,r)}}),n.send=new Proxy(n.send,{apply(e,t,r){const o=t[lu];if(!o)return e.apply(t,r);r[0]!==void 0&&(o.body=r[0]);const i={startTimestamp:ko()*1e3,xhr:t};return Gi("xhr",i),e.apply(t,r)}})}function KK(n){if(ts(n))return n;try{return n.toString()}catch{}}function c4(n){return new URLSearchParams(n).toString()}function u4(n,e=lt){try{if(typeof n=="string")return[n];if(n instanceof URLSearchParams)return[n.toString()];if(n instanceof FormData)return[c4(n)];if(!n)return[void 0]}catch(t){return Zm&&e.error(t,"Failed to serialize body",n),[void 0,"BODY_PARSE_ERROR"]}return Zm&&e.log("Skipping network body because of body type",n),[void 0,"UNPARSEABLE_BODY_TYPE"]}function d4(n=[]){if(!(n.length!==2||typeof n[1]!="object"))return n[1].body}function ZK(n,e=s4("fetch")){let t=0,r=0;function o(i){const a=i.body.length;t+=a,r++;const s={body:i.body,method:"POST",referrerPolicy:"strict-origin",headers:n.headers,keepalive:t<=6e4&&r<15,...n.fetchOptions};if(!e)return l4("fetch"),Qm("No fetch implementation available");try{return e(n.url,s).then(l=>(t-=a,r--,{statusCode:l.status,headers:{"x-sentry-rate-limits":l.headers.get("X-Sentry-Rate-Limits"),"retry-after":l.headers.get("Retry-After")}}))}catch(l){return l4("fetch"),t-=a,r--,Qm(l)}}return uq(n,o)}const JK=30,eZ=50;function my(n,e,t,r){const o={filename:n,function:e===""?Gl:e,in_app:!0};return t!==void 0&&(o.lineno=t),r!==void 0&&(o.colno=r),o}const tZ=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,nZ=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,rZ=/\((\S*)(?::(\d+))(?::(\d+))\)/,oZ=[JK,n=>{const e=tZ.exec(n);if(e){const[,r,o,i]=e;return my(r,Gl,+o,+i)}const t=nZ.exec(n);if(t){if(t[2]&&t[2].indexOf("eval")===0){const a=rZ.exec(t[2]);a&&(t[2]=a[1],t[3]=a[2],t[4]=a[3])}const[o,i]=f4(t[1]||Gl,t[2]);return my(i,o,t[3]?+t[3]:void 0,t[4]?+t[4]:void 0)}}],iZ=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,aZ=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,sZ=_T(...[oZ,[eZ,n=>{const e=iZ.exec(n);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const i=aZ.exec(e[3]);i&&(e[1]=e[1]||"eval",e[3]=i[1],e[4]=i[2],e[5]="")}let r=e[3],o=e[1]||Gl;return[o,r]=f4(o,r),my(r,o,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}}]]),f4=(n,e)=>{const t=n.indexOf("safari-extension")!==-1,r=n.indexOf("safari-web-extension")!==-1;return t||r?[n.indexOf("@")!==-1?n.split("@")[0]:Gl,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[n,e]},ug=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,dg=1024,lZ="Breadcrumbs",cZ=((n={})=>{const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...n};return{name:lZ,setup(t){e.console&&Pq(fZ(t)),e.dom&&i4(dZ(t,e.dom)),e.xhr&&XK(hZ(t)),e.fetch&&Gq(pZ(t)),e.history&&py(mZ(t)),e.sentry&&t.on("beforeSendEvent",uZ(t))}}});function uZ(n){return function(t){Pn()===n&&Xs({category:`sentry.${t.type==="transaction"?"transaction":"event"}`,event_id:t.event_id,level:t.level,message:jl(t)},{event:t})}}function dZ(n,e){return function(r){if(Pn()!==n)return;let o,i,a=typeof e=="object"?e.serializeAttribute:void 0,s=typeof e=="object"&&typeof e.maxStringLength=="number"?e.maxStringLength:void 0;s&&s>dg&&(ug&<.warn(`\`dom.maxStringLength\` cannot exceed ${dg}, but a value of ${s} was configured. Sentry will use ${dg} instead.`),s=dg),typeof a=="string"&&(a=[a]);try{const c=r.event,u=gZ(c)?c.target:c;o=Fm(u,{keyAttrs:a,maxStringLength:s}),i=sY(u)}catch{o=""}if(o.length===0)return;const l={category:`ui.${r.name}`,message:o};i&&(l.data={"ui.component_name":i}),Xs(l,{event:r.event,name:r.name,global:r.global})}}function fZ(n){return function(t){if(Pn()!==n)return;const r={category:"console",data:{arguments:t.args,logger:"console"},level:FI(t.level),message:CT(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)r.message=`Assertion failed: ${CT(t.args.slice(1)," ")||"console.assert"}`,r.data.arguments=t.args.slice(1);else return;Xs(r,{input:t.args,level:t.level})}}function hZ(n){return function(t){if(Pn()!==n)return;const{startTimestamp:r,endTimestamp:o}=t,i=t.xhr[lu];if(!r||!o||!i)return;const{method:a,url:s,status_code:l,body:c}=i,u={method:a,url:s,status_code:l},d={xhr:t.xhr,input:c,startTimestamp:r,endTimestamp:o},f={category:"xhr",data:u,type:"http",level:GI(l)};n.emit("beforeOutgoingRequestBreadcrumb",f,d),Xs(f,d)}}function pZ(n){return function(t){if(Pn()!==n)return;const{startTimestamp:r,endTimestamp:o}=t;if(o&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.fetchData.method,t.fetchData.url,t.error){const i=t.fetchData,a={data:t.error,input:t.args,startTimestamp:r,endTimestamp:o},s={category:"fetch",data:i,level:"error",type:"http"};n.emit("beforeOutgoingRequestBreadcrumb",s,a),Xs(s,a)}else{const i=t.response,a={...t.fetchData,status_code:i==null?void 0:i.status};t.fetchData.request_body_size,t.fetchData.response_body_size,i==null||i.status;const s={input:t.args,response:i,startTimestamp:r,endTimestamp:o},l={category:"fetch",data:a,type:"http",level:GI(a.status_code)};n.emit("beforeOutgoingRequestBreadcrumb",l,s),Xs(l,s)}}}function mZ(n){return function(t){if(Pn()!==n)return;let r=t.from,o=t.to;const i=qA(sr.location.href);let a=r?qA(r):void 0;const s=qA(o);a!=null&&a.path||(a=i),i.protocol===s.protocol&&i.host===s.host&&(o=s.relative),i.protocol===a.protocol&&i.host===a.host&&(r=a.relative),Xs({category:"navigation",data:{from:r,to:o}})}}function gZ(n){return!!n&&!!n.target}const _Z=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","BroadcastChannel","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","SharedWorker","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],vZ="BrowserApiErrors",AZ=((n={})=>{const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...n};return{name:vZ,setupOnce(){e.setTimeout&&Oo(sr,"setTimeout",h4),e.setInterval&&Oo(sr,"setInterval",h4),e.requestAnimationFrame&&Oo(sr,"requestAnimationFrame",yZ),e.XMLHttpRequest&&"XMLHttpRequest"in sr&&Oo(XMLHttpRequest.prototype,"send",bZ);const t=e.eventTarget;t&&(Array.isArray(t)?t:_Z).forEach(o=>xZ(o,e))}}});function h4(n){return function(...e){const t=e[0];return e[0]=su(t,{mechanism:{data:{function:es(n)},handled:!1,type:"instrument"}}),n.apply(this,e)}}function yZ(n){return function(e){return n.apply(this,[su(e,{mechanism:{data:{function:"requestAnimationFrame",handler:es(n)},handled:!1,type:"instrument"}})])}}function bZ(n){return function(...e){const t=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(o=>{o in t&&typeof t[o]=="function"&&Oo(t,o,function(i){const a={mechanism:{data:{function:o,handler:es(i)},handled:!1,type:"instrument"}},s=EA(i);return s&&(a.mechanism.data.handler=es(s)),su(i,a)})}),n.apply(this,e)}}function xZ(n,e){var o,i;const r=(o=sr[n])==null?void 0:o.prototype;(i=r==null?void 0:r.hasOwnProperty)!=null&&i.call(r,"addEventListener")&&(Oo(r,"addEventListener",function(a){return function(s,l,c){try{EZ(l)&&(l.handleEvent=su(l.handleEvent,{mechanism:{data:{function:"handleEvent",handler:es(l),target:n},handled:!1,type:"instrument"}}))}catch{}return e.unregisterOriginalCallbacks&&CZ(this,s,l),a.apply(this,[s,su(l,{mechanism:{data:{function:"addEventListener",handler:es(l),target:n},handled:!1,type:"instrument"}}),c])}}),Oo(r,"removeEventListener",function(a){return function(s,l,c){try{const u=l.__sentry_wrapped__;u&&a.call(this,s,u,c)}catch{}return a.call(this,s,l,c)}}))}function EZ(n){return typeof n.handleEvent=="function"}function CZ(n,e,t){n&&typeof n=="object"&&"removeEventListener"in n&&typeof n.removeEventListener=="function"&&n.removeEventListener(e,t)}const SZ=()=>({name:"BrowserSession",setupOnce(){if(typeof sr.document>"u"){ug&<.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}fI({ignoreDuration:!0}),mI(),py(({from:n,to:e})=>{n!==void 0&&n!==e&&(fI({ignoreDuration:!0}),mI())})}}),wZ="GlobalHandlers",MZ=((n={})=>{const e={onerror:!0,onunhandledrejection:!0,...n};return{name:wZ,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(TZ(t),p4("onerror")),e.onunhandledrejection&&(IZ(t),p4("onunhandledrejection"))}}});function TZ(n){q$(e=>{const{stackParser:t,attachStacktrace:r}=m4();if(Pn()!==n||jI())return;const{msg:o,url:i,line:a,column:s,error:l}=e,c=PZ(ry(t,l||o,void 0,r,!1),i,a,s);c.level="error",dI(c,{originalException:l,mechanism:{handled:!1,type:"onerror"}})})}function IZ(n){Z$(e=>{const{stackParser:t,attachStacktrace:r}=m4();if(Pn()!==n||jI())return;const o=RZ(e),i=bA(o)?LZ(o):ry(t,o,void 0,r,!0);i.level="error",dI(i,{originalException:o,mechanism:{handled:!1,type:"onunhandledrejection"}})})}function RZ(n){if(bA(n))return n;try{if("reason"in n)return n.reason;if("detail"in n&&"reason"in n.detail)return n.detail.reason}catch{}return n}function LZ(n){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(n)}`}]}}}function PZ(n,e,t,r){const o=n.exception=n.exception||{},i=o.values=o.values||[],a=i[0]=i[0]||{},s=a.stacktrace=a.stacktrace||{},l=s.frames=s.frames||[],c=r,u=t,d=ts(e)&&e.length>0?e:Vm();return l.length===0&&l.push({colno:c,filename:d,function:Gl,in_app:!0,lineno:u}),n}function p4(n){ug&<.log(`Global Handler attached: ${n}`)}function m4(){const n=Pn();return(n==null?void 0:n.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}const DZ=()=>({name:"HttpContext",preprocessEvent(n){var r;if(!sr.navigator&&!sr.location&&!sr.document)return;const e=Kq(),t={...e.headers,...(r=n.request)==null?void 0:r.headers};n.request={...e,...n.request,headers:t}}}),BZ="cause",NZ=5,OZ="LinkedErrors",kZ=((n={})=>{const e=n.limit||NZ,t=n.key||BZ;return{name:OZ,preprocessEvent(r,o,i){const a=i.getOptions();Lq(ey,a.stackParser,t,e,r,o)}}});function FZ(){return VZ()?(ug&&Ja(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function VZ(){var i;if(typeof sr.window>"u")return!1;const n=sr;if(n.nw)return!1;const e=n.chrome||n.browser;if(!((i=e==null?void 0:e.runtime)!=null&&i.id))return!1;const t=Vm(),r=["chrome-extension","moz-extension","ms-browser-extension","safari-web-extension"];return!(sr===sr.top&&r.some(a=>t.startsWith(`${a}://`)))}function g4(n){return[Eq(),Aq(),AZ(),cZ(),MZ(),kZ(),Nq(),DZ(),SZ()]}function UZ(n={}){const e=!n.skipBrowserExtensionCheck&&FZ(),t={...n,enabled:e?!1:n.enabled,stackParser:Y$(n.stackParser||sZ),integrations:QX({integrations:n.integrations,defaultIntegrations:n.defaultIntegrations==null?g4():n.defaultIntegrations}),transport:n.transport||ZK};return rq(uK,t)}const On=hn,gy="sentryReplaySession",zZ="replay_event",_y="Unable to send Replay",GZ=3e5,HZ=9e5,WZ=5e3,jZ=5500,QZ=6e4,$Z=5e3,YZ=3,_4=15e4,fg=5e3,XZ=3e3,qZ=300,vy=2e7,KZ=4999,ZZ=15e3,v4=36e5;var JZ=Object.defineProperty,eJ=(n,e,t)=>e in n?JZ(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A4=(n,e,t)=>eJ(n,typeof e!="symbol"?e+"":e,t),Dr=(n=>(n[n.Document=0]="Document",n[n.DocumentType=1]="DocumentType",n[n.Element=2]="Element",n[n.Text=3]="Text",n[n.CDATA=4]="CDATA",n[n.Comment=5]="Comment",n))(Dr||{});function tJ(n){return n.nodeType===n.ELEMENT_NODE}function $f(n){const e=n==null?void 0:n.host;return(e==null?void 0:e.shadowRoot)===n}function Yf(n){return Object.prototype.toString.call(n)==="[object ShadowRoot]"}function nJ(n){return n.includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}function rJ(n){const{cssText:e}=n;if(e.split('"').length<3)return e;const t=["@import",`url(${JSON.stringify(n.href)})`];return n.layerName===""?t.push("layer"):n.layerName&&t.push(`layer(${n.layerName})`),n.supportsText&&t.push(`supports(${n.supportsText})`),n.media.length&&t.push(n.media.mediaText),t.join(" ")+";"}function hg(n){try{const e=n.rules||n.cssRules;return e?nJ(Array.from(e,y4).join("")):null}catch{return null}}function oJ(n){let e="";for(let t=0;tthis.removeNodeFromMap(r))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)}replace(e,t){const r=this.getNode(e);if(r){const o=this.nodeMetaMap.get(r);o&&this.nodeMetaMap.set(t,o)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}};function lJ(){return new b4}function pg({maskInputOptions:n,tagName:e,type:t}){return e==="OPTION"&&(e="SELECT"),!!(n[e.toLowerCase()]||t&&n[t]||t==="password"||e==="INPUT"&&!t&&n.text)}function Xf({isMasked:n,element:e,value:t,maskInputFn:r}){let o=t||"";return n?(r&&(o=r(o,e)),"*".repeat(o.length)):o}function cu(n){return n.toLowerCase()}function Ay(n){return n.toUpperCase()}const x4="__rrweb_original__";function cJ(n){const e=n.getContext("2d");if(!e)return!0;const t=50;for(let r=0;rl!==0))return!1}return!0}function yy(n){const e=n.type;return n.hasAttribute("data-rr-is-password")?"password":e?cu(e):null}function mg(n,e,t){return e==="INPUT"&&(t==="radio"||t==="checkbox")?n.getAttribute("value")||"":n.value}function E4(n,e){let t;try{t=new URL(n,e??window.location.href)}catch{return null}const r=/\.([0-9a-z]+)(?:$)/i,o=t.pathname.match(r);return(o==null?void 0:o[1])??null}const C4={};function S4(n){const e=C4[n];if(e)return e;const t=window.document;let r=window[n];if(t&&typeof t.createElement=="function")try{const o=t.createElement("iframe");o.hidden=!0,t.head.appendChild(o);const i=o.contentWindow;i&&i[n]&&(r=i[n]),t.head.removeChild(o)}catch{}return C4[n]=r.bind(window)}function by(...n){return S4("setTimeout")(...n)}function w4(...n){return S4("clearTimeout")(...n)}function M4(n){try{return n.contentDocument}catch{}}let uJ=1;const dJ=new RegExp("[^a-z0-9-_:]"),qf=-2;function xy(){return uJ++}function fJ(n){if(n instanceof HTMLFormElement)return"form";const e=cu(n.tagName);return dJ.test(e)?"div":e}function hJ(n){let e="";return n.indexOf("//")>-1?e=n.split("/").slice(0,3).join("/"):e=n.split("/")[0],e=e.split("?")[0],e}let uu,T4;const pJ=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,mJ=/^(?:[a-z+]+:)?\/\//i,gJ=/^www\..*/i,_J=/^(data:)([^,]*),(.*)/i;function gg(n,e){return(n||"").replace(pJ,(t,r,o,i,a,s)=>{const l=o||a||s,c=r||i||"";if(!l)return t;if(mJ.test(l)||gJ.test(l))return`url(${c}${l}${c})`;if(_J.test(l))return`url(${c}${l}${c})`;if(l[0]==="/")return`url(${c}${hJ(e)+l}${c})`;const u=e.split("/"),d=l.split("/");u.pop();for(const f of d)f!=="."&&(f===".."?u.pop():u.push(f));return`url(${c}${u.join("/")}${c})`})}const vJ=/^[^ \t\n\r\u000c]+/,AJ=/^[, \t\n\r\u000c]+/;function yJ(n,e){if(e.trim()==="")return e;let t=0;function r(i){let a;const s=i.exec(e.substring(t));return s?(a=s[0],t+=a.length,a):""}const o=[];for(;r(AJ),!(t>=e.length);){let i=r(vJ);if(i.slice(-1)===",")i=du(n,i.substring(0,i.length-1)),o.push(i);else{let a="";i=du(n,i);let s=!1;for(;;){const l=e.charAt(t);if(l===""){o.push((i+a).trim());break}else if(s)l===")"&&(s=!1);else if(l===","){t+=1,o.push((i+a).trim());break}else l==="("&&(s=!0);a+=l,t+=1}}}return o.join(", ")}const I4=new WeakMap;function du(n,e){return!e||e.trim()===""?e:_g(n,e)}function bJ(n){return!!(n.tagName==="svg"||n.ownerSVGElement)}function _g(n,e){let t=I4.get(n);if(t||(t=n.createElement("a"),I4.set(n,t)),!e)e="";else if(e.startsWith("blob:")||e.startsWith("data:"))return e;return t.setAttribute("href",e),t.href}function R4(n,e,t,r,o,i){return r&&(t==="src"||t==="href"&&!(e==="use"&&r[0]==="#")||t==="xlink:href"&&r[0]!=="#"||t==="background"&&(e==="table"||e==="td"||e==="th")?du(n,r):t==="srcset"?yJ(n,r):t==="style"?gg(r,_g(n)):e==="object"&&t==="data"?du(n,r):typeof i=="function"?i(t,r,o):r)}function L4(n,e,t){return(n==="video"||n==="audio")&&e==="autoplay"}function P4(n,e,t,r){try{if(r&&n.matches(r))return!1;if(typeof e=="string"){if(n.classList.contains(e))return!0}else for(let o=n.classList.length;o--;){const i=n.classList[o];if(e.test(i))return!0}if(t)return n.matches(t)}catch{}return!1}function xJ(n,e){for(let t=n.classList.length;t--;){const r=n.classList[t];if(e.test(r))return!0}return!1}function Yl(n,e,t=1/0,r=0){return!n||n.nodeType!==n.ELEMENT_NODE||r>t?-1:e(n)?r:Yl(n.parentNode,e,t,r+1)}function fu(n,e){return t=>{const r=t;if(r===null)return!1;try{if(n){if(typeof n=="string"){if(r.matches(`.${n}`))return!0}else if(xJ(r,n))return!0}return!!(e&&r.matches(e))}catch{return!1}}}function hu(n,e,t,r,o,i){try{const a=n.nodeType===n.ELEMENT_NODE?n:n.parentElement;if(a===null)return!1;if(a.tagName==="INPUT"){const c=a.getAttribute("autocomplete");if(["current-password","new-password","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc"].includes(c))return!0}let s=-1,l=-1;if(i){if(l=Yl(a,fu(r,o)),l<0)return!0;s=Yl(a,fu(e,t),l>=0?l:1/0)}else{if(s=Yl(a,fu(e,t)),s<0)return!1;l=Yl(a,fu(r,o),s>=0?s:1/0)}return s>=0?l>=0?s<=l:!0:l>=0?!1:!!i}catch{}return!!i}function EJ(n,e,t){const r=n.contentWindow;if(!r)return;let o=!1,i;try{i=r.document.readyState}catch{return}if(i!=="complete"){const s=by(()=>{o||(e(),o=!0)},t);n.addEventListener("load",()=>{w4(s),o=!0,e()});return}const a="about:blank";if(r.location.href!==a||n.src===a||n.src==="")return by(e,0),n.addEventListener("load",e);n.addEventListener("load",e)}function CJ(n,e,t){let r=!1,o;try{o=n.sheet}catch{return}if(o)return;const i=by(()=>{r||(e(),r=!0)},t);n.addEventListener("load",()=>{w4(i),r=!0,e()})}function SJ(n,e){const{doc:t,mirror:r,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:s,maskAttributeFn:l,maskTextClass:c,unmaskTextClass:u,maskTextSelector:d,unmaskTextSelector:f,inlineStylesheet:h,maskInputOptions:p={},maskTextFn:m,maskInputFn:g,dataURLOptions:_={},inlineImages:A,recordCanvas:y,keepIframeSrcFn:b,newlyAddedElement:E=!1}=e,x=wJ(t,r);switch(n.nodeType){case n.DOCUMENT_NODE:return n.compatMode!=="CSS1Compat"?{type:Dr.Document,childNodes:[],compatMode:n.compatMode}:{type:Dr.Document,childNodes:[]};case n.DOCUMENT_TYPE_NODE:return{type:Dr.DocumentType,name:n.name,publicId:n.publicId,systemId:n.systemId,rootId:x};case n.ELEMENT_NODE:return TJ(n,{doc:t,blockClass:o,blockSelector:i,unblockSelector:a,inlineStylesheet:h,maskAttributeFn:l,maskInputOptions:p,maskInputFn:g,dataURLOptions:_,inlineImages:A,recordCanvas:y,keepIframeSrcFn:b,newlyAddedElement:E,rootId:x,maskTextClass:c,unmaskTextClass:u,maskTextSelector:d,unmaskTextSelector:f});case n.TEXT_NODE:return MJ(n,{doc:t,maskAllText:s,maskTextClass:c,unmaskTextClass:u,maskTextSelector:d,unmaskTextSelector:f,maskTextFn:m,maskInputOptions:p,maskInputFn:g,rootId:x});case n.CDATA_SECTION_NODE:return{type:Dr.CDATA,textContent:"",rootId:x};case n.COMMENT_NODE:return{type:Dr.Comment,textContent:n.textContent||"",rootId:x};default:return!1}}function wJ(n,e){if(!e.hasNode(n))return;const t=e.getId(n);return t===1?void 0:t}function MJ(n,e){var _;const{maskAllText:t,maskTextClass:r,unmaskTextClass:o,maskTextSelector:i,unmaskTextSelector:a,maskTextFn:s,maskInputOptions:l,maskInputFn:c,rootId:u}=e,d=n.parentNode&&n.parentNode.tagName;let f=n.textContent;const h=d==="STYLE"?!0:void 0,p=d==="SCRIPT"?!0:void 0,m=d==="TEXTAREA"?!0:void 0;if(h&&f){try{n.nextSibling||n.previousSibling||(_=n.parentNode.sheet)!=null&&_.cssRules&&(f=hg(n.parentNode.sheet))}catch(A){console.warn(`Cannot get CSS styles from text's parentNode. Error: ${A}`,n)}f=gg(f,_g(e.doc))}p&&(f="SCRIPT_PLACEHOLDER");const g=hu(n,r,i,o,a,t);if(!h&&!p&&!m&&f&&g&&(f=s?s(f,n.parentElement):f.replace(/[\S]/g,"*")),m&&f&&(l.textarea||g)&&(f=c?c(f,n.parentNode):f.replace(/[\S]/g,"*")),d==="OPTION"&&f){const A=pg({type:null,tagName:d,maskInputOptions:l});f=Xf({isMasked:hu(n,r,i,o,a,A),element:n,value:f,maskInputFn:c})}return{type:Dr.Text,textContent:f||"",isStyle:h,rootId:u}}function TJ(n,e){const{doc:t,blockClass:r,blockSelector:o,unblockSelector:i,inlineStylesheet:a,maskInputOptions:s={},maskAttributeFn:l,maskInputFn:c,dataURLOptions:u={},inlineImages:d,recordCanvas:f,keepIframeSrcFn:h,newlyAddedElement:p=!1,rootId:m,maskTextClass:g,unmaskTextClass:_,maskTextSelector:A,unmaskTextSelector:y}=e,b=P4(n,r,o,i),E=fJ(n);let x={};const w=n.attributes.length;for(let C=0;CD.href===n.href);let P=null;C&&(P=hg(C)),P&&(x.rel=null,x.href=null,x.crossorigin=null,x._cssText=gg(P,C.href))}if(E==="style"&&n.sheet&&!(n.innerText||n.textContent||"").trim().length){const C=hg(n.sheet);C&&(x._cssText=gg(C,_g(t)))}if(E==="input"||E==="textarea"||E==="select"||E==="option"){const C=n,P=yy(C),D=mg(C,Ay(E),P),Q=C.checked;if(P!=="submit"&&P!=="button"&&D){const re=hu(C,g,A,_,y,pg({type:P,tagName:Ay(E),maskInputOptions:s}));x.value=Xf({isMasked:re,element:C,value:D,maskInputFn:c})}Q&&(x.checked=Q)}if(E==="option"&&(n.selected&&!s.select?x.selected=!0:delete x.selected),E==="canvas"&&f){if(n.__context==="2d")cJ(n)||(x.rr_dataURL=n.toDataURL(u.type,u.quality));else if(!("__context"in n)){const C=n.toDataURL(u.type,u.quality),P=t.createElement("canvas");P.width=n.width,P.height=n.height;const D=P.toDataURL(u.type,u.quality);C!==D&&(x.rr_dataURL=C)}}if(E==="img"&&d){uu||(uu=t.createElement("canvas"),T4=uu.getContext("2d"));const C=n,P=C.currentSrc||C.getAttribute("src")||"",D=C.crossOrigin,Q=()=>{C.removeEventListener("load",Q);try{uu.width=C.naturalWidth,uu.height=C.naturalHeight,T4.drawImage(C,0,0),x.rr_dataURL=uu.toDataURL(u.type,u.quality)}catch(re){if(C.crossOrigin!=="anonymous"){C.crossOrigin="anonymous",C.complete&&C.naturalWidth!==0?Q():C.addEventListener("load",Q);return}else console.warn(`Cannot inline img src=${P}! Error: ${re}`)}C.crossOrigin==="anonymous"&&(D?x.crossOrigin=D:C.removeAttribute("crossorigin"))};C.complete&&C.naturalWidth!==0?Q():C.addEventListener("load",Q)}if((E==="audio"||E==="video")&&(x.rr_mediaState=n.paused?"paused":"played",x.rr_mediaCurrentTime=n.currentTime),p||(n.scrollLeft&&(x.rr_scrollLeft=n.scrollLeft),n.scrollTop&&(x.rr_scrollTop=n.scrollTop)),b){const{width:C,height:P}=n.getBoundingClientRect();x={class:x.class,rr_width:`${C}px`,rr_height:`${P}px`}}E==="iframe"&&!h(x.src)&&(!b&&!M4(n)&&(x.rr_src=x.src),delete x.src);let L;try{customElements.get(E)&&(L=!0)}catch{}return{type:Dr.Element,tagName:E,attributes:x,childNodes:[],isSVG:bJ(n)||void 0,needBlock:b,rootId:m,isCustom:L}}function kn(n){return n==null?"":n.toLowerCase()}function IJ(n,e){if(e.comment&&n.type===Dr.Comment)return!0;if(n.type===Dr.Element){if(e.script&&(n.tagName==="script"||n.tagName==="link"&&(n.attributes.rel==="preload"||n.attributes.rel==="modulepreload")||n.tagName==="link"&&n.attributes.rel==="prefetch"&&typeof n.attributes.href=="string"&&E4(n.attributes.href)==="js"))return!0;if(e.headFavicon&&(n.tagName==="link"&&n.attributes.rel==="shortcut icon"||n.tagName==="meta"&&(kn(n.attributes.name).match(/^msapplication-tile(image|color)$/)||kn(n.attributes.name)==="application-name"||kn(n.attributes.rel)==="icon"||kn(n.attributes.rel)==="apple-touch-icon"||kn(n.attributes.rel)==="shortcut icon")))return!0;if(n.tagName==="meta"){if(e.headMetaDescKeywords&&kn(n.attributes.name).match(/^description|keywords$/))return!0;if(e.headMetaSocial&&(kn(n.attributes.property).match(/^(og|twitter|fb):/)||kn(n.attributes.name).match(/^(og|twitter):/)||kn(n.attributes.name)==="pinterest"))return!0;if(e.headMetaRobots&&(kn(n.attributes.name)==="robots"||kn(n.attributes.name)==="googlebot"||kn(n.attributes.name)==="bingbot"))return!0;if(e.headMetaHttpEquiv&&n.attributes["http-equiv"]!==void 0)return!0;if(e.headMetaAuthorship&&(kn(n.attributes.name)==="author"||kn(n.attributes.name)==="generator"||kn(n.attributes.name)==="framework"||kn(n.attributes.name)==="publisher"||kn(n.attributes.name)==="progid"||kn(n.attributes.property).match(/^article:/)||kn(n.attributes.property).match(/^product:/)))return!0;if(e.headMetaVerification&&(kn(n.attributes.name)==="google-site-verification"||kn(n.attributes.name)==="yandex-verification"||kn(n.attributes.name)==="csrf-token"||kn(n.attributes.name)==="p:domain_verify"||kn(n.attributes.name)==="verify-v1"||kn(n.attributes.name)==="verification"||kn(n.attributes.name)==="shopify-checkout-api-token"))return!0}}return!1}function pu(n,e){const{doc:t,mirror:r,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:s,maskTextClass:l,unmaskTextClass:c,maskTextSelector:u,unmaskTextSelector:d,skipChild:f=!1,inlineStylesheet:h=!0,maskInputOptions:p={},maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOMOptions:A,dataURLOptions:y={},inlineImages:b=!1,recordCanvas:E=!1,onSerialize:x,onIframeLoad:w,iframeLoadTimeout:L=5e3,onStylesheetLoad:C,stylesheetLoadTimeout:P=5e3,keepIframeSrcFn:D=()=>!1,newlyAddedElement:Q=!1}=e;let{preserveWhiteSpace:re=!0}=e;const G=SJ(n,{doc:t,mirror:r,blockClass:o,blockSelector:i,maskAllText:s,unblockSelector:a,maskTextClass:l,unmaskTextClass:c,maskTextSelector:u,unmaskTextSelector:d,inlineStylesheet:h,maskInputOptions:p,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,dataURLOptions:y,inlineImages:b,recordCanvas:E,keepIframeSrcFn:D,newlyAddedElement:Q});if(!G)return console.warn(n,"not serialized"),null;let se;r.hasNode(n)?se=r.getId(n):IJ(G,A)||!re&&G.type===Dr.Text&&!G.isStyle&&!G.textContent.replace(/^\s+|\s+$/gm,"").length?se=qf:se=xy();const ee=Object.assign(G,{id:se});if(r.add(n,ee),se===qf)return null;x&&x(n);let ie=!f;if(ee.type===Dr.Element){ie=ie&&!ee.needBlock,delete ee.needBlock;const H=n.shadowRoot;H&&Yf(H)&&(ee.isShadowHost=!0)}if((ee.type===Dr.Document||ee.type===Dr.Element)&&ie){A.headWhitespace&&ee.type===Dr.Element&&ee.tagName==="head"&&(re=!1);const H={doc:t,mirror:r,blockClass:o,blockSelector:i,maskAllText:s,unblockSelector:a,maskTextClass:l,unmaskTextClass:c,maskTextSelector:u,unmaskTextSelector:d,skipChild:f,inlineStylesheet:h,maskInputOptions:p,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOMOptions:A,dataURLOptions:y,inlineImages:b,recordCanvas:E,preserveWhiteSpace:re,onSerialize:x,onIframeLoad:w,iframeLoadTimeout:L,onStylesheetLoad:C,stylesheetLoadTimeout:P,keepIframeSrcFn:D};for(const T of Array.from(n.childNodes)){const R=pu(T,H);R&&ee.childNodes.push(R)}if(tJ(n)&&n.shadowRoot)for(const T of Array.from(n.shadowRoot.childNodes)){const R=pu(T,H);R&&(Yf(n.shadowRoot)&&(R.isShadow=!0),ee.childNodes.push(R))}}return n.parentNode&&$f(n.parentNode)&&Yf(n.parentNode)&&(ee.isShadow=!0),ee.type===Dr.Element&&ee.tagName==="iframe"&&!P4(n,o,i,a)&&EJ(n,()=>{const H=M4(n);if(H&&w){const T=pu(H,{doc:H,mirror:r,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:s,maskTextClass:l,unmaskTextClass:c,maskTextSelector:u,unmaskTextSelector:d,skipChild:!1,inlineStylesheet:h,maskInputOptions:p,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOMOptions:A,dataURLOptions:y,inlineImages:b,recordCanvas:E,preserveWhiteSpace:re,onSerialize:x,onIframeLoad:w,iframeLoadTimeout:L,onStylesheetLoad:C,stylesheetLoadTimeout:P,keepIframeSrcFn:D});T&&w(n,T)}},L),ee.type===Dr.Element&&ee.tagName==="link"&&typeof ee.attributes.rel=="string"&&(ee.attributes.rel==="stylesheet"||ee.attributes.rel==="preload"&&typeof ee.attributes.href=="string"&&E4(ee.attributes.href)==="css")&&CJ(n,()=>{if(C){const H=pu(n,{doc:t,mirror:r,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:s,maskTextClass:l,unmaskTextClass:c,maskTextSelector:u,unmaskTextSelector:d,skipChild:!1,inlineStylesheet:h,maskInputOptions:p,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOMOptions:A,dataURLOptions:y,inlineImages:b,recordCanvas:E,preserveWhiteSpace:re,onSerialize:x,onIframeLoad:w,iframeLoadTimeout:L,onStylesheetLoad:C,stylesheetLoadTimeout:P,keepIframeSrcFn:D});H&&C(n,H)}},P),ee}function RJ(n,e){const{mirror:t=new b4,blockClass:r="rr-block",blockSelector:o=null,unblockSelector:i=null,maskAllText:a=!1,maskTextClass:s="rr-mask",unmaskTextClass:l=null,maskTextSelector:c=null,unmaskTextSelector:u=null,inlineStylesheet:d=!0,inlineImages:f=!1,recordCanvas:h=!1,maskAllInputs:p=!1,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOM:A=!1,dataURLOptions:y,preserveWhiteSpace:b,onSerialize:E,onIframeLoad:x,iframeLoadTimeout:w,onStylesheetLoad:L,stylesheetLoadTimeout:C,keepIframeSrcFn:P=()=>!1}=e||{};return pu(n,{doc:n,mirror:t,blockClass:r,blockSelector:o,unblockSelector:i,maskAllText:a,maskTextClass:s,unmaskTextClass:l,maskTextSelector:c,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:d,maskInputOptions:p===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0}:p===!1?{}:p,maskAttributeFn:m,maskTextFn:g,maskInputFn:_,slimDOMOptions:A===!0||A==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:A==="all",headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:A===!1?{}:A,dataURLOptions:y,inlineImages:f,recordCanvas:h,preserveWhiteSpace:b,onSerialize:E,onIframeLoad:x,iframeLoadTimeout:w,onStylesheetLoad:L,stylesheetLoadTimeout:C,keepIframeSrcFn:P,newlyAddedElement:!1})}function mo(n,e,t=document){const r={capture:!0,passive:!0};return t.addEventListener(n,e,r),()=>t.removeEventListener(n,e,r)}const mu=`Please stop import mirror directly. Instead of that,\r +now you can use replayer.getMirror() to access the mirror instance of a replayer,\r +or you can use record.mirror to access the mirror instance during recording.`;let D4={map:{},getId(){return console.error(mu),-1},getNode(){return console.error(mu),null},removeNodeFromMap(){console.error(mu)},has(){return console.error(mu),!1},reset(){console.error(mu)}};typeof window<"u"&&window.Proxy&&window.Reflect&&(D4=new Proxy(D4,{get(n,e,t){return e==="map"&&console.error(mu),Reflect.get(n,e,t)}}));function Kf(n,e,t={}){let r=null,o=0;return function(...i){const a=Date.now();!o&&t.leading===!1&&(o=a);const s=e-(a-o),l=this;s<=0||s>e?(r&&(kJ(r),r=null),o=a,n.apply(l,i)):!r&&t.trailing!==!1&&(r=Ag(()=>{o=t.leading===!1?0:Date.now(),r=null,n.apply(l,i)},s))}}function B4(n,e,t,r,o=window){const i=o.Object.getOwnPropertyDescriptor(n,e);return o.Object.defineProperty(n,e,r?t:{set(a){Ag(()=>{t.set.call(this,a)},0),i&&i.set&&i.set.call(this,a)}}),()=>B4(n,e,i||{},!0)}function Ey(n,e,t){try{if(!(e in n))return()=>{};const r=n[e],o=t(r);return typeof o=="function"&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),n[e]=o,()=>{n[e]=r}}catch{return()=>{}}}let vg=Date.now;/[1-9][0-9]{12}/.test(Date.now().toString())||(vg=()=>new Date().getTime());function N4(n){var t,r,o,i,a,s;const e=n.document;return{left:e.scrollingElement?e.scrollingElement.scrollLeft:n.pageXOffset!==void 0?n.pageXOffset:(e==null?void 0:e.documentElement.scrollLeft)||((r=(t=e==null?void 0:e.body)==null?void 0:t.parentElement)==null?void 0:r.scrollLeft)||((o=e==null?void 0:e.body)==null?void 0:o.scrollLeft)||0,top:e.scrollingElement?e.scrollingElement.scrollTop:n.pageYOffset!==void 0?n.pageYOffset:(e==null?void 0:e.documentElement.scrollTop)||((a=(i=e==null?void 0:e.body)==null?void 0:i.parentElement)==null?void 0:a.scrollTop)||((s=e==null?void 0:e.body)==null?void 0:s.scrollTop)||0}}function O4(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function k4(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function F4(n){if(!n)return null;try{return n.nodeType===n.ELEMENT_NODE?n:n.parentElement}catch{return null}}function ei(n,e,t,r,o){if(!n)return!1;const i=F4(n);if(!i)return!1;const a=fu(e,t);if(!o){const c=r&&i.matches(r);return a(i)&&!c}const s=Yl(i,a);let l=-1;return s<0?!1:(r&&(l=Yl(i,fu(null,r))),s>-1&&l<0?!0:s{let t=e[0];if(!(0 in e))throw new TypeError("1 argument is required");do if(this===t)return!0;while(t=t&&t.parentNode);return!1})}function U4(n,e){return!!(n.nodeName==="IFRAME"&&e.getMeta(n))}function z4(n,e){return!!(n.nodeName==="LINK"&&n.nodeType===n.ELEMENT_NODE&&n.getAttribute&&n.getAttribute("rel")==="stylesheet"&&e.getMeta(n))}function wy(n){return!!(n!=null&&n.shadowRoot)}class DJ{constructor(){this.id=1,this.styleIDMap=new WeakMap,this.idStyleMap=new Map}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let r;return t===void 0?r=this.id++:r=t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function G4(n){var t,r;let e=null;return((r=(t=n.getRootNode)==null?void 0:t.call(n))==null?void 0:r.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&n.getRootNode().host&&(e=n.getRootNode().host),e}function BJ(n){let e=n,t;for(;t=G4(e);)e=t;return e}function NJ(n){const e=n.ownerDocument;if(!e)return!1;const t=BJ(n);return e.contains(t)}function H4(n){const e=n.ownerDocument;return e?e.contains(n)||NJ(n):!1}const W4={};function My(n){const e=W4[n];if(e)return e;const t=window.document;let r=window[n];if(t&&typeof t.createElement=="function")try{const o=t.createElement("iframe");o.hidden=!0,t.head.appendChild(o);const i=o.contentWindow;i&&i[n]&&(r=i[n]),t.head.removeChild(o)}catch{}return W4[n]=r.bind(window)}function OJ(...n){return My("requestAnimationFrame")(...n)}function Ag(...n){return My("setTimeout")(...n)}function kJ(...n){return My("clearTimeout")(...n)}var Wt=(n=>(n[n.DomContentLoaded=0]="DomContentLoaded",n[n.Load=1]="Load",n[n.FullSnapshot=2]="FullSnapshot",n[n.IncrementalSnapshot=3]="IncrementalSnapshot",n[n.Meta=4]="Meta",n[n.Custom=5]="Custom",n[n.Plugin=6]="Plugin",n))(Wt||{}),Ot=(n=>(n[n.Mutation=0]="Mutation",n[n.MouseMove=1]="MouseMove",n[n.MouseInteraction=2]="MouseInteraction",n[n.Scroll=3]="Scroll",n[n.ViewportResize=4]="ViewportResize",n[n.Input=5]="Input",n[n.TouchMove=6]="TouchMove",n[n.MediaInteraction=7]="MediaInteraction",n[n.StyleSheetRule=8]="StyleSheetRule",n[n.CanvasMutation=9]="CanvasMutation",n[n.Font=10]="Font",n[n.Log=11]="Log",n[n.Drag=12]="Drag",n[n.StyleDeclaration=13]="StyleDeclaration",n[n.Selection=14]="Selection",n[n.AdoptedStyleSheet=15]="AdoptedStyleSheet",n[n.CustomElement=16]="CustomElement",n))(Ot||{}),go=(n=>(n[n.MouseUp=0]="MouseUp",n[n.MouseDown=1]="MouseDown",n[n.Click=2]="Click",n[n.ContextMenu=3]="ContextMenu",n[n.DblClick=4]="DblClick",n[n.Focus=5]="Focus",n[n.Blur=6]="Blur",n[n.TouchStart=7]="TouchStart",n[n.TouchMove_Departed=8]="TouchMove_Departed",n[n.TouchEnd=9]="TouchEnd",n[n.TouchCancel=10]="TouchCancel",n))(go||{}),is=(n=>(n[n.Mouse=0]="Mouse",n[n.Pen=1]="Pen",n[n.Touch=2]="Touch",n))(is||{}),gu=(n=>(n[n.Play=0]="Play",n[n.Pause=1]="Pause",n[n.Seeked=2]="Seeked",n[n.VolumeChange=3]="VolumeChange",n[n.RateChange=4]="RateChange",n))(gu||{});function Ty(n){try{return n.contentDocument}catch{}}function FJ(n){try{return n.contentWindow}catch{}}function j4(n){return"__ln"in n}class VJ{constructor(){this.length=0,this.head=null,this.tail=null}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let r=0;r`${n}@${e}`;class UJ{constructor(){this.frozen=!1,this.locked=!1,this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.mapRemoves=[],this.movedMap={},this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.processMutations=e=>{e.forEach(this.processMutation),this.emit()},this.emit=()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,r=new VJ,o=l=>{let c=l,u=qf;for(;u===qf;)c=c&&c.nextSibling,u=c&&this.mirror.getId(c);return u},i=l=>{if(!l.parentNode||!H4(l))return;const c=$f(l.parentNode)?this.mirror.getId(G4(l)):this.mirror.getId(l.parentNode),u=o(l);if(c===-1||u===-1)return r.addNode(l);const d=pu(l,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskAllText:this.maskAllText,unblockSelector:this.unblockSelector,maskTextClass:this.maskTextClass,unmaskTextClass:this.unmaskTextClass,maskTextSelector:this.maskTextSelector,unmaskTextSelector:this.unmaskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskAttributeFn:this.maskAttributeFn,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:f=>{U4(f,this.mirror)&&!ei(f,this.blockClass,this.blockSelector,this.unblockSelector,!1)&&this.iframeManager.addIframe(f),z4(f,this.mirror)&&this.stylesheetManager.trackLinkElement(f),wy(l)&&this.shadowDomManager.addShadowRoot(l.shadowRoot,this.doc)},onIframeLoad:(f,h)=>{ei(f,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(this.iframeManager.attachIframe(f,h),f.contentWindow&&this.canvasManager.addWindow(f.contentWindow),this.shadowDomManager.observeAttachShadow(f))},onStylesheetLoad:(f,h)=>{this.stylesheetManager.attachLinkElement(f,h)}});d&&(e.push({parentId:c,nextId:u,node:d}),t.add(d.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const l of this.movedSet)$4(this.removes,l,this.mirror)&&!this.movedSet.has(l.parentNode)||i(l);for(const l of this.addedSet)!Y4(this.droppedSet,l)&&!$4(this.removes,l,this.mirror)||Y4(this.movedSet,l)?i(l):this.droppedSet.add(l);let a=null;for(;r.length;){let l=null;if(a){const c=this.mirror.getId(a.value.parentNode),u=o(a.value);c!==-1&&u!==-1&&(l=a)}if(!l){let c=r.tail;for(;c;){const u=c;if(c=c.previous,u){const d=this.mirror.getId(u.value.parentNode);if(o(u.value)===-1)continue;if(d!==-1){l=u;break}else{const h=u.value;if(h.parentNode&&h.parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const p=h.parentNode.host;if(this.mirror.getId(p)!==-1){l=u;break}}}}}}if(!l){for(;r.head;)r.removeNode(r.head.value);break}a=l.previous,r.removeNode(l.value),i(l.value)}const s={texts:this.texts.map(l=>({id:this.mirror.getId(l.node),value:l.value})).filter(l=>!t.has(l.id)).filter(l=>this.mirror.has(l.id)),attributes:this.attributes.map(l=>{const{attributes:c}=l;if(typeof c.style=="string"){const u=JSON.stringify(l.styleDiff),d=JSON.stringify(l._unchangedStyles);u.length!t.has(l.id)).filter(l=>this.mirror.has(l.id)),removes:this.removes,adds:e};!s.texts.length&&!s.attributes.length&&!s.removes.length&&!s.adds.length||(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.movedMap={},this.mutationCb(s))},this.processMutation=e=>{if(!Cy(e.target,this.mirror))switch(e.type){case"characterData":{const t=e.target.textContent;!ei(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)&&t!==e.oldValue&&this.texts.push({value:hu(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,this.maskAllText)&&t?this.maskTextFn?this.maskTextFn(t,F4(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const t=e.target;let r=e.attributeName,o=e.target.getAttribute(r);if(r==="value"){const a=yy(t),s=t.tagName;o=mg(t,s,a);const l=pg({maskInputOptions:this.maskInputOptions,tagName:s,type:a}),c=hu(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,l);o=Xf({isMasked:c,element:t,value:o,maskInputFn:this.maskInputFn})}if(ei(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||o===e.oldValue)return;let i=this.attributeMap.get(e.target);if(t.tagName==="IFRAME"&&r==="src"&&!this.keepIframeSrcFn(o))if(!Ty(t))r="rr_src";else return;if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),r==="type"&&t.tagName==="INPUT"&&(e.oldValue||"").toLowerCase()==="password"&&t.setAttribute("data-rr-is-password","true"),!L4(t.tagName,r)&&(i.attributes[r]=R4(this.doc,cu(t.tagName),cu(r),o,t,this.maskAttributeFn),r==="style")){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch{this.unattachedDoc=this.doc}const a=this.unattachedDoc.createElement("span");e.oldValue&&a.setAttribute("style",e.oldValue);for(const s of Array.from(t.style)){const l=t.style.getPropertyValue(s),c=t.style.getPropertyPriority(s);l!==a.style.getPropertyValue(s)||c!==a.style.getPropertyPriority(s)?c===""?i.styleDiff[s]=l:i.styleDiff[s]=[l,c]:i._unchangedStyles[s]=[l,c]}for(const s of Array.from(a.style))t.style.getPropertyValue(s)===""&&(i.styleDiff[s]=!1)}break}case"childList":{if(ei(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!0))return;e.addedNodes.forEach(t=>this.genAdds(t,e.target)),e.removedNodes.forEach(t=>{const r=this.mirror.getId(t),o=$f(e.target)?this.mirror.getId(e.target.host):this.mirror.getId(e.target);ei(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||Cy(t,this.mirror)||!LJ(t,this.mirror)||(this.addedSet.has(t)?(Iy(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&r===-1||V4(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Q4(r,o)]?Iy(this.movedSet,t):this.removes.push({parentId:o,id:r,isShadow:$f(e.target)&&Yf(e.target)?!0:void 0})),this.mapRemoves.push(t))});break}}},this.genAdds=(e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!(this.addedSet.has(e)||this.movedSet.has(e))){if(this.mirror.hasNode(e)){if(Cy(e,this.mirror))return;this.movedSet.add(e);let r=null;t&&this.mirror.hasNode(t)&&(r=this.mirror.getId(t)),r&&r!==-1&&(this.movedMap[Q4(this.mirror.getId(e),r)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);ei(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(e.childNodes.forEach(r=>this.genAdds(r)),wy(e)&&e.shadowRoot.childNodes.forEach(r=>{this.processedNodeManager.add(r,this),this.genAdds(r,e)}))}}}init(e){["mutationCb","blockClass","blockSelector","unblockSelector","maskAllText","maskTextClass","unmaskTextClass","maskTextSelector","unmaskTextSelector","inlineStylesheet","maskInputOptions","maskAttributeFn","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach(t=>{this[t]=e[t]})}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Iy(n,e){n.delete(e),e.childNodes.forEach(t=>Iy(n,t))}function $4(n,e,t){return n.length===0?!1:zJ(n,e,t)}function zJ(n,e,t){let r=e.parentNode;for(;r;){const o=t.getId(r);if(n.some(i=>i.id===o))return!0;r=r.parentNode}return!1}function Y4(n,e){return n.size===0?!1:X4(n,e)}function X4(n,e){const{parentNode:t}=e;return t?n.has(t)?!0:X4(n,t):!1}let Zf;function GJ(n){Zf=n}function HJ(){Zf=void 0}const an=n=>Zf?(...t)=>{try{return n(...t)}catch(r){if(Zf&&Zf(r)===!0)return()=>{};throw r}}:n,_u=[];function Jf(n){try{if("composedPath"in n){const e=n.composedPath();if(e.length)return e[0]}else if("path"in n&&n.path.length)return n.path[0]}catch{}return n&&n.target}function q4(n,e){var a,s;const t=new UJ;_u.push(t),t.init(n);let r=window.MutationObserver||window.__rrMutationObserver;const o=(s=(a=window==null?void 0:window.Zone)==null?void 0:a.__symbol__)==null?void 0:s.call(a,"MutationObserver");o&&window[o]&&(r=window[o]);const i=new r(an(l=>{n.onMutation&&n.onMutation(l)===!1||t.processMutations.bind(t)(l)}));return i.observe(e,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),i}function WJ({mousemoveCb:n,sampling:e,doc:t,mirror:r}){if(e.mousemove===!1)return()=>{};const o=typeof e.mousemove=="number"?e.mousemove:50,i=typeof e.mousemoveCallback=="number"?e.mousemoveCallback:500;let a=[],s;const l=Kf(an(d=>{const f=Date.now()-s;n(a.map(h=>(h.timeOffset-=f,h)),d),a=[],s=null}),i),c=an(Kf(an(d=>{const f=Jf(d),{clientX:h,clientY:p}=Sy(d)?d.changedTouches[0]:d;s||(s=vg()),a.push({x:h,y:p,id:r.getId(f),timeOffset:vg()-s}),l(typeof DragEvent<"u"&&d instanceof DragEvent?Ot.Drag:d instanceof MouseEvent?Ot.MouseMove:Ot.TouchMove)}),o,{trailing:!1})),u=[mo("mousemove",c,t),mo("touchmove",c,t),mo("drag",c,t)];return an(()=>{u.forEach(d=>d())})}function jJ({mouseInteractionCb:n,doc:e,mirror:t,blockClass:r,blockSelector:o,unblockSelector:i,sampling:a}){if(a.mouseInteraction===!1)return()=>{};const s=a.mouseInteraction===!0||a.mouseInteraction===void 0?{}:a.mouseInteraction,l=[];let c=null;const u=d=>f=>{const h=Jf(f);if(ei(h,r,o,i,!0))return;let p=null,m=d;if("pointerType"in f){switch(f.pointerType){case"mouse":p=is.Mouse;break;case"touch":p=is.Touch;break;case"pen":p=is.Pen;break}p===is.Touch?go[d]===go.MouseDown?m="TouchStart":go[d]===go.MouseUp&&(m="TouchEnd"):is.Pen}else Sy(f)&&(p=is.Touch);p!==null?(c=p,(m.startsWith("Touch")&&p===is.Touch||m.startsWith("Mouse")&&p===is.Mouse)&&(p=null)):go[d]===go.Click&&(p=c,c=null);const g=Sy(f)?f.changedTouches[0]:f;if(!g)return;const _=t.getId(h),{clientX:A,clientY:y}=g;an(n)({type:go[m],id:_,x:A,y,...p!==null&&{pointerType:p}})};return Object.keys(go).filter(d=>Number.isNaN(Number(d))&&!d.endsWith("_Departed")&&s[d]!==!1).forEach(d=>{let f=cu(d);const h=u(d);if(window.PointerEvent)switch(go[d]){case go.MouseDown:case go.MouseUp:f=f.replace("mouse","pointer");break;case go.TouchStart:case go.TouchEnd:return}l.push(mo(f,h,e))}),an(()=>{l.forEach(d=>d())})}function K4({scrollCb:n,doc:e,mirror:t,blockClass:r,blockSelector:o,unblockSelector:i,sampling:a}){const s=an(Kf(an(l=>{const c=Jf(l);if(!c||ei(c,r,o,i,!0))return;const u=t.getId(c);if(c===e&&e.defaultView){const d=N4(e.defaultView);n({id:u,x:d.left,y:d.top})}else n({id:u,x:c.scrollLeft,y:c.scrollTop})}),a.scroll||100));return mo("scroll",s,e)}function QJ({viewportResizeCb:n},{win:e}){let t=-1,r=-1;const o=an(Kf(an(()=>{const i=O4(),a=k4();(t!==i||r!==a)&&(n({width:Number(a),height:Number(i)}),t=i,r=a)}),200));return mo("resize",o,e)}const $J=["INPUT","TEXTAREA","SELECT"],Z4=new WeakMap;function YJ({inputCb:n,doc:e,mirror:t,blockClass:r,blockSelector:o,unblockSelector:i,ignoreClass:a,ignoreSelector:s,maskInputOptions:l,maskInputFn:c,sampling:u,userTriggeredOnInput:d,maskTextClass:f,unmaskTextClass:h,maskTextSelector:p,unmaskTextSelector:m}){function g(w){let L=Jf(w);const C=w.isTrusted,P=L&&Ay(L.tagName);if(P==="OPTION"&&(L=L.parentElement),!L||!P||$J.indexOf(P)<0||ei(L,r,o,i,!0))return;const D=L;if(D.classList.contains(a)||s&&D.matches(s))return;const Q=yy(L);let re=mg(D,P,Q),G=!1;const se=pg({maskInputOptions:l,tagName:P,type:Q}),ee=hu(L,f,p,h,m,se);(Q==="radio"||Q==="checkbox")&&(G=L.checked),re=Xf({isMasked:ee,element:L,value:re,maskInputFn:c}),_(L,d?{text:re,isChecked:G,userTriggered:C}:{text:re,isChecked:G});const ie=L.name;Q==="radio"&&ie&&G&&e.querySelectorAll(`input[type="radio"][name="${ie}"]`).forEach(H=>{if(H!==L){const T=Xf({isMasked:ee,element:H,value:mg(H,P,Q),maskInputFn:c});_(H,d?{text:T,isChecked:!G,userTriggered:!1}:{text:T,isChecked:!G})}})}function _(w,L){const C=Z4.get(w);if(!C||C.text!==L.text||C.isChecked!==L.isChecked){Z4.set(w,L);const P=t.getId(w);an(n)({...L,id:P})}}const y=(u.input==="last"?["change"]:["input","change"]).map(w=>mo(w,an(g),e)),b=e.defaultView;if(!b)return()=>{y.forEach(w=>w())};const E=b.Object.getOwnPropertyDescriptor(b.HTMLInputElement.prototype,"value"),x=[[b.HTMLInputElement.prototype,"value"],[b.HTMLInputElement.prototype,"checked"],[b.HTMLSelectElement.prototype,"value"],[b.HTMLTextAreaElement.prototype,"value"],[b.HTMLSelectElement.prototype,"selectedIndex"],[b.HTMLOptionElement.prototype,"selected"]];return E&&E.set&&y.push(...x.map(w=>B4(w[0],w[1],{set(){an(g)({target:this,isTrusted:!1})}},!1,b))),an(()=>{y.forEach(w=>w())})}function yg(n){const e=[];function t(r,o){if(bg("CSSGroupingRule")&&r.parentRule instanceof CSSGroupingRule||bg("CSSMediaRule")&&r.parentRule instanceof CSSMediaRule||bg("CSSSupportsRule")&&r.parentRule instanceof CSSSupportsRule||bg("CSSConditionRule")&&r.parentRule instanceof CSSConditionRule){const a=Array.from(r.parentRule.cssRules).indexOf(r);o.unshift(a)}else if(r.parentStyleSheet){const a=Array.from(r.parentStyleSheet.cssRules).indexOf(r);o.unshift(a)}return o}return t(n,e)}function qs(n,e,t){let r,o;return n?(n.ownerNode?r=e.getId(n.ownerNode):o=t.getId(n),{styleId:o,id:r}):{}}function XJ({styleSheetRuleCb:n,mirror:e,stylesheetManager:t},{win:r}){if(!r.CSSStyleSheet||!r.CSSStyleSheet.prototype)return()=>{};const o=r.CSSStyleSheet.prototype.insertRule;r.CSSStyleSheet.prototype.insertRule=new Proxy(o,{apply:an((u,d,f)=>{const[h,p]=f,{id:m,styleId:g}=qs(d,e,t.styleMirror);return(m&&m!==-1||g&&g!==-1)&&n({id:m,styleId:g,adds:[{rule:h,index:p}]}),u.apply(d,f)})});const i=r.CSSStyleSheet.prototype.deleteRule;r.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:an((u,d,f)=>{const[h]=f,{id:p,styleId:m}=qs(d,e,t.styleMirror);return(p&&p!==-1||m&&m!==-1)&&n({id:p,styleId:m,removes:[{index:h}]}),u.apply(d,f)})});let a;r.CSSStyleSheet.prototype.replace&&(a=r.CSSStyleSheet.prototype.replace,r.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:an((u,d,f)=>{const[h]=f,{id:p,styleId:m}=qs(d,e,t.styleMirror);return(p&&p!==-1||m&&m!==-1)&&n({id:p,styleId:m,replace:h}),u.apply(d,f)})}));let s;r.CSSStyleSheet.prototype.replaceSync&&(s=r.CSSStyleSheet.prototype.replaceSync,r.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:an((u,d,f)=>{const[h]=f,{id:p,styleId:m}=qs(d,e,t.styleMirror);return(p&&p!==-1||m&&m!==-1)&&n({id:p,styleId:m,replaceSync:h}),u.apply(d,f)})}));const l={};xg("CSSGroupingRule")?l.CSSGroupingRule=r.CSSGroupingRule:(xg("CSSMediaRule")&&(l.CSSMediaRule=r.CSSMediaRule),xg("CSSConditionRule")&&(l.CSSConditionRule=r.CSSConditionRule),xg("CSSSupportsRule")&&(l.CSSSupportsRule=r.CSSSupportsRule));const c={};return Object.entries(l).forEach(([u,d])=>{c[u]={insertRule:d.prototype.insertRule,deleteRule:d.prototype.deleteRule},d.prototype.insertRule=new Proxy(c[u].insertRule,{apply:an((f,h,p)=>{const[m,g]=p,{id:_,styleId:A}=qs(h.parentStyleSheet,e,t.styleMirror);return(_&&_!==-1||A&&A!==-1)&&n({id:_,styleId:A,adds:[{rule:m,index:[...yg(h),g||0]}]}),f.apply(h,p)})}),d.prototype.deleteRule=new Proxy(c[u].deleteRule,{apply:an((f,h,p)=>{const[m]=p,{id:g,styleId:_}=qs(h.parentStyleSheet,e,t.styleMirror);return(g&&g!==-1||_&&_!==-1)&&n({id:g,styleId:_,removes:[{index:[...yg(h),m]}]}),f.apply(h,p)})})}),an(()=>{r.CSSStyleSheet.prototype.insertRule=o,r.CSSStyleSheet.prototype.deleteRule=i,a&&(r.CSSStyleSheet.prototype.replace=a),s&&(r.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach(([u,d])=>{d.prototype.insertRule=c[u].insertRule,d.prototype.deleteRule=c[u].deleteRule})})}function J4({mirror:n,stylesheetManager:e},t){var a,s,l;let r=null;t.nodeName==="#document"?r=n.getId(t):r=n.getId(t.host);const o=t.nodeName==="#document"?(a=t.defaultView)==null?void 0:a.Document:(l=(s=t.ownerDocument)==null?void 0:s.defaultView)==null?void 0:l.ShadowRoot,i=o!=null&&o.prototype?Object.getOwnPropertyDescriptor(o==null?void 0:o.prototype,"adoptedStyleSheets"):void 0;return r===null||r===-1||!o||!i?()=>{}:(Object.defineProperty(t,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get(){var c;return(c=i.get)==null?void 0:c.call(this)},set(c){var d;const u=(d=i.set)==null?void 0:d.call(this,c);if(r!==null&&r!==-1)try{e.adoptStyleSheets(c,r)}catch{}return u}}),an(()=>{Object.defineProperty(t,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get:i.get,set:i.set})}))}function qJ({styleDeclarationCb:n,mirror:e,ignoreCSSAttributes:t,stylesheetManager:r},{win:o}){const i=o.CSSStyleDeclaration.prototype.setProperty;o.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:an((s,l,c)=>{var m;const[u,d,f]=c;if(t.has(u))return i.apply(l,[u,d,f]);const{id:h,styleId:p}=qs((m=l.parentRule)==null?void 0:m.parentStyleSheet,e,r.styleMirror);return(h&&h!==-1||p&&p!==-1)&&n({id:h,styleId:p,set:{property:u,value:d,priority:f},index:yg(l.parentRule)}),s.apply(l,c)})});const a=o.CSSStyleDeclaration.prototype.removeProperty;return o.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:an((s,l,c)=>{var h;const[u]=c;if(t.has(u))return a.apply(l,[u]);const{id:d,styleId:f}=qs((h=l.parentRule)==null?void 0:h.parentStyleSheet,e,r.styleMirror);return(d&&d!==-1||f&&f!==-1)&&n({id:d,styleId:f,remove:{property:u},index:yg(l.parentRule)}),s.apply(l,c)})}),an(()=>{o.CSSStyleDeclaration.prototype.setProperty=i,o.CSSStyleDeclaration.prototype.removeProperty=a})}function KJ({mediaInteractionCb:n,blockClass:e,blockSelector:t,unblockSelector:r,mirror:o,sampling:i,doc:a}){const s=an(c=>Kf(an(u=>{const d=Jf(u);if(!d||ei(d,e,t,r,!0))return;const{currentTime:f,volume:h,muted:p,playbackRate:m}=d;n({type:c,id:o.getId(d),currentTime:f,volume:h,muted:p,playbackRate:m})}),i.media||500)),l=[mo("play",s(gu.Play),a),mo("pause",s(gu.Pause),a),mo("seeked",s(gu.Seeked),a),mo("volumechange",s(gu.VolumeChange),a),mo("ratechange",s(gu.RateChange),a)];return an(()=>{l.forEach(c=>c())})}function ZJ({fontCb:n,doc:e}){const t=e.defaultView;if(!t)return()=>{};const r=[],o=new WeakMap,i=t.FontFace;t.FontFace=function(l,c,u){const d=new i(l,c,u);return o.set(d,{family:l,buffer:typeof c!="string",descriptors:u,fontSource:typeof c=="string"?c:JSON.stringify(Array.from(new Uint8Array(c)))}),d};const a=Ey(e.fonts,"add",function(s){return function(l){return Ag(an(()=>{const c=o.get(l);c&&(n(c),o.delete(l))}),0),s.apply(this,[l])}});return r.push(()=>{t.FontFace=i}),r.push(a),an(()=>{r.forEach(s=>s())})}function JJ(n){const{doc:e,mirror:t,blockClass:r,blockSelector:o,unblockSelector:i,selectionCb:a}=n;let s=!0;const l=an(()=>{const c=e.getSelection();if(!c||s&&(c!=null&&c.isCollapsed))return;s=c.isCollapsed||!1;const u=[],d=c.rangeCount||0;for(let f=0;f{}:Ey(t.customElements,"define",function(o){return function(i,a,s){try{e({define:{name:i}})}catch{}return o.apply(this,[i,a,s])}})}function tee(n,e={}){const t=n.doc.defaultView;if(!t)return()=>{};let r;n.recordDOM&&(r=q4(n,n.doc));const o=WJ(n),i=jJ(n),a=K4(n),s=QJ(n,{win:t}),l=YJ(n),c=KJ(n);let u=()=>{},d=()=>{},f=()=>{},h=()=>{};n.recordDOM&&(u=XJ(n,{win:t}),d=J4(n,n.doc),f=qJ(n,{win:t}),n.collectFonts&&(h=ZJ(n)));const p=JJ(n),m=eee(n),g=[];for(const _ of n.plugins)g.push(_.observer(_.callback,t,_.options));return an(()=>{_u.forEach(_=>_.reset()),r==null||r.disconnect(),o(),i(),a(),s(),l(),c(),u(),d(),f(),h(),p(),m(),g.forEach(_=>_())})}function bg(n){return typeof window[n]<"u"}function xg(n){return!!(typeof window[n]<"u"&&window[n].prototype&&"insertRule"in window[n].prototype&&"deleteRule"in window[n].prototype)}class Ry{constructor(e){this.generateIdFn=e,this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap}getId(e,t,r,o){const i=r||this.getIdToRemoteIdMap(e),a=o||this.getRemoteIdToIdMap(e);let s=i.get(t);return s||(s=this.generateIdFn(),i.set(t,s),a.set(s,t)),s}getIds(e,t){const r=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map(i=>this.getId(e,i,r,o))}getRemoteId(e,t,r){const o=r||this.getRemoteIdToIdMap(e);if(typeof t!="number")return t;const i=o.get(t);return i||-1}getRemoteIds(e,t){const r=this.getRemoteIdToIdMap(e);return t.map(o=>this.getRemoteId(e,o,r))}reset(e){if(!e){this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap;return}this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class nee{constructor(){this.crossOriginIframeMirror=new Ry(xy),this.crossOriginIframeRootIdMap=new WeakMap}addIframe(){}addLoadListener(){}attachIframe(){}}class ree{constructor(e){this.iframes=new WeakMap,this.crossOriginIframeMap=new WeakMap,this.crossOriginIframeMirror=new Ry(xy),this.crossOriginIframeRootIdMap=new WeakMap,this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new Ry(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var o,i;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&((o=e.contentWindow)==null||o.addEventListener("message",this.handleMessage.bind(this))),(i=this.loadListener)==null||i.call(this,e);const r=Ty(e);r&&r.adoptedStyleSheets&&r.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(r.adoptedStyleSheets,this.mirror.getId(r))}handleMessage(e){const t=e;if(t.data.type!=="rrweb"||t.origin!==t.data.origin||!e.source)return;const o=this.crossOriginIframeMap.get(e.source);if(!o)return;const i=this.transformCrossOriginEvent(o,t.data.event);i&&this.wrappedEmit(i,t.data.isCheckout)}transformCrossOriginEvent(e,t){var r;switch(t.type){case Wt.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const o=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,o),this.patchRootIdOnNode(t.data.node,o),{timestamp:t.timestamp,type:Wt.IncrementalSnapshot,data:{source:Ot.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Wt.Meta:case Wt.Load:case Wt.DomContentLoaded:return!1;case Wt.Plugin:return t;case Wt.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Wt.IncrementalSnapshot:switch(t.data.source){case Ot.Mutation:return t.data.adds.forEach(o=>{this.replaceIds(o,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(o.node,e);const i=this.crossOriginIframeRootIdMap.get(e);i&&this.patchRootIdOnNode(o.node,i)}),t.data.removes.forEach(o=>{this.replaceIds(o,e,["parentId","id"])}),t.data.attributes.forEach(o=>{this.replaceIds(o,e,["id"])}),t.data.texts.forEach(o=>{this.replaceIds(o,e,["id"])}),t;case Ot.Drag:case Ot.TouchMove:case Ot.MouseMove:return t.data.positions.forEach(o=>{this.replaceIds(o,e,["id"])}),t;case Ot.ViewportResize:return!1;case Ot.MediaInteraction:case Ot.MouseInteraction:case Ot.Scroll:case Ot.CanvasMutation:case Ot.Input:return this.replaceIds(t.data,e,["id"]),t;case Ot.StyleSheetRule:case Ot.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Ot.Font:return t;case Ot.Selection:return t.data.ranges.forEach(o=>{this.replaceIds(o,e,["start","end"])}),t;case Ot.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),(r=t.data.styles)==null||r.forEach(o=>{this.replaceStyleIds(o,e,["styleId"])}),t}}return!1}replace(e,t,r,o){for(const i of o)!Array.isArray(t[i])&&typeof t[i]!="number"||(Array.isArray(t[i])?t[i]=e.getIds(r,t[i]):t[i]=e.getId(r,t[i]));return t}replaceIds(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)}replaceStyleIds(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(r=>{this.replaceIdOnNode(r,t)})}patchRootIdOnNode(e,t){e.type!==Dr.Document&&!e.rootId&&(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(r=>{this.patchRootIdOnNode(r,t)})}}class oee{init(){}addShadowRoot(){}observeAttachShadow(){}reset(){}}class iee{constructor(e){this.shadowDoms=new WeakSet,this.restoreHandlers=[],this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Yf(e)||this.shadowDoms.has(e))return;this.shadowDoms.add(e),this.bypassOptions.canvasManager.addShadowRoot(e);const r=q4({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push(()=>r.disconnect()),this.restoreHandlers.push(K4({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),Ag(()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(e.host)),this.restoreHandlers.push(J4({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))},0)}observeAttachShadow(e){const t=Ty(e),r=FJ(e);!t||!r||this.patchAttachShadow(r.Element,t)}patchAttachShadow(e,t){const r=this;this.restoreHandlers.push(Ey(e.prototype,"attachShadow",function(o){return function(i){const a=o.call(this,i);return this.shadowRoot&&H4(this)&&r.addShadowRoot(this.shadowRoot,t),a}}))}reset(){this.restoreHandlers.forEach(e=>{try{e()}catch{}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet,this.bypassOptions.canvasManager.resetShadowRoots()}}for(var e5="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",aee=typeof Uint8Array>"u"?[]:new Uint8Array(256),Eg=0;Eg({rule:y4(s),index:l}))})),r.styleIds.push(a)}o.length>0&&(r.styles=o),this.adoptedStyleSheetCb(r)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class lee{constructor(){this.nodeMap=new WeakMap,this.active=!1}inOtherBuffer(e,t){const r=this.nodeMap.get(e);return r&&Array.from(r).some(o=>o!==t)}add(e,t){this.active||(this.active=!0,OJ(()=>{this.nodeMap=new WeakMap,this.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let er,Cg;try{if(Array.from([1],n=>n*2)[0]!==2){const n=document.createElement("iframe");document.body.appendChild(n),Array.from=((AN=n.contentWindow)==null?void 0:AN.Array.from)||Array.from,document.body.removeChild(n)}}catch(n){console.debug("Unable to override Array.from",n)}const Wi=lJ();function as(n={}){const{emit:e,checkoutEveryNms:t,checkoutEveryNth:r,blockClass:o="rr-block",blockSelector:i=null,unblockSelector:a=null,ignoreClass:s="rr-ignore",ignoreSelector:l=null,maskAllText:c=!1,maskTextClass:u="rr-mask",unmaskTextClass:d=null,maskTextSelector:f=null,unmaskTextSelector:h=null,inlineStylesheet:p=!0,maskAllInputs:m,maskInputOptions:g,slimDOMOptions:_,maskAttributeFn:A,maskInputFn:y,maskTextFn:b,maxCanvasSize:E=null,packFn:x,sampling:w={},dataURLOptions:L={},mousemoveWait:C,recordDOM:P=!0,recordCanvas:D=!1,recordCrossOriginIframes:Q=!1,recordAfter:re=n.recordAfter==="DOMContentLoaded"?n.recordAfter:"load",userTriggeredOnInput:G=!1,collectFonts:se=!1,inlineImages:ee=!1,plugins:ie,keepIframeSrcFn:H=()=>!1,ignoreCSSAttributes:T=new Set([]),errorHandler:R,onMutation:O,getCanvasManager:W}=n;GJ(R);const ae=Q?window.parent===window:!0;let ne=!1;if(!ae)try{window.parent.document&&(ne=!1)}catch{ne=!0}if(ae&&!e)throw new Error("emit function is required");if(!ae&&!ne)return()=>{};C!==void 0&&w.mousemove===void 0&&(w.mousemove=C),Wi.reset();const oe=m===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,radio:!0,checkbox:!0}:g!==void 0?g:{},F=_===!0||_==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:_==="all",headMetaDescKeywords:_==="all"}:_||{};PJ();let k,q=0;const j=Y=>{for(const le of ie||[])le.eventProcessor&&(Y=le.eventProcessor(Y));return x&&!ne&&(Y=x(Y)),Y};er=(Y,le)=>{var fe;const me=Y;if(me.timestamp=vg(),(fe=_u[0])!=null&&fe.isFrozen()&&me.type!==Wt.FullSnapshot&&!(me.type===Wt.IncrementalSnapshot&&me.data.source===Ot.Mutation)&&_u.forEach(te=>te.unfreeze()),ae)e==null||e(j(me),le);else if(ne){const te={type:"rrweb",event:j(me),origin:window.location.origin,isCheckout:le};window.parent.postMessage(te,"*")}if(me.type===Wt.FullSnapshot)k=me,q=0;else if(me.type===Wt.IncrementalSnapshot){if(me.data.source===Ot.Mutation&&me.data.isAttachIframe)return;q++;const te=r&&q>=r,de=t&&k&&me.timestamp-k.timestamp>t;(te||de)&&V(!0)}};const U=Y=>{er({type:Wt.IncrementalSnapshot,data:{source:Ot.Mutation,...Y}})},z=Y=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.Scroll,...Y}}),v=Y=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.CanvasMutation,...Y}}),M=Y=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.AdoptedStyleSheet,...Y}}),S=new see({mutationCb:U,adoptedStyleSheetCb:M}),I=typeof __RRWEB_EXCLUDE_IFRAME__=="boolean"&&__RRWEB_EXCLUDE_IFRAME__?new nee:new ree({mirror:Wi,mutationCb:U,stylesheetManager:S,recordCrossOriginIframes:Q,wrappedEmit:er});for(const Y of ie||[])Y.getMirror&&Y.getMirror({nodeMirror:Wi,crossOriginIframeMirror:I.crossOriginIframeMirror,crossOriginIframeStyleMirror:I.crossOriginIframeStyleMirror});const J=new lee,$=uee(W,{mirror:Wi,win:window,mutationCb:Y=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.CanvasMutation,...Y}}),recordCanvas:D,blockClass:o,blockSelector:i,unblockSelector:a,maxCanvasSize:E,sampling:w.canvas,dataURLOptions:L,errorHandler:R}),B=typeof __RRWEB_EXCLUDE_SHADOW_DOM__=="boolean"&&__RRWEB_EXCLUDE_SHADOW_DOM__?new oee:new iee({mutationCb:U,scrollCb:z,bypassOptions:{onMutation:O,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:c,maskTextClass:u,unmaskTextClass:d,maskTextSelector:f,unmaskTextSelector:h,inlineStylesheet:p,maskInputOptions:oe,dataURLOptions:L,maskAttributeFn:A,maskTextFn:b,maskInputFn:y,recordCanvas:D,inlineImages:ee,sampling:w,slimDOMOptions:F,iframeManager:I,stylesheetManager:S,canvasManager:$,keepIframeSrcFn:H,processedNodeManager:J},mirror:Wi}),V=(Y=!1)=>{if(!P)return;er({type:Wt.Meta,data:{href:window.location.href,width:k4(),height:O4()}},Y),S.reset(),B.init(),_u.forEach(me=>me.lock());const le=RJ(document,{mirror:Wi,blockClass:o,blockSelector:i,unblockSelector:a,maskAllText:c,maskTextClass:u,unmaskTextClass:d,maskTextSelector:f,unmaskTextSelector:h,inlineStylesheet:p,maskAllInputs:oe,maskAttributeFn:A,maskInputFn:y,maskTextFn:b,slimDOM:F,dataURLOptions:L,recordCanvas:D,inlineImages:ee,onSerialize:me=>{U4(me,Wi)&&I.addIframe(me),z4(me,Wi)&&S.trackLinkElement(me),wy(me)&&B.addShadowRoot(me.shadowRoot,document)},onIframeLoad:(me,fe)=>{I.attachIframe(me,fe),me.contentWindow&&$.addWindow(me.contentWindow),B.observeAttachShadow(me)},onStylesheetLoad:(me,fe)=>{S.attachLinkElement(me,fe)},keepIframeSrcFn:H});if(!le)return console.warn("Failed to snapshot the document");er({type:Wt.FullSnapshot,data:{node:le,initialOffset:N4(window)}}),_u.forEach(me=>me.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&S.adoptStyleSheets(document.adoptedStyleSheets,Wi.getId(document))};Cg=V;try{const Y=[],le=fe=>{var te;return an(tee)({onMutation:O,mutationCb:U,mousemoveCb:(de,we)=>er({type:Wt.IncrementalSnapshot,data:{source:we,positions:de}}),mouseInteractionCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.MouseInteraction,...de}}),scrollCb:z,viewportResizeCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.ViewportResize,...de}}),inputCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.Input,...de}}),mediaInteractionCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.MediaInteraction,...de}}),styleSheetRuleCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.StyleSheetRule,...de}}),styleDeclarationCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.StyleDeclaration,...de}}),canvasMutationCb:v,fontCb:de=>er({type:Wt.IncrementalSnapshot,data:{source:Ot.Font,...de}}),selectionCb:de=>{er({type:Wt.IncrementalSnapshot,data:{source:Ot.Selection,...de}})},customElementCb:de=>{er({type:Wt.IncrementalSnapshot,data:{source:Ot.CustomElement,...de}})},blockClass:o,ignoreClass:s,ignoreSelector:l,maskAllText:c,maskTextClass:u,unmaskTextClass:d,maskTextSelector:f,unmaskTextSelector:h,maskInputOptions:oe,inlineStylesheet:p,sampling:w,recordDOM:P,recordCanvas:D,inlineImages:ee,userTriggeredOnInput:G,collectFonts:se,doc:fe,maskAttributeFn:A,maskInputFn:y,maskTextFn:b,keepIframeSrcFn:H,blockSelector:i,unblockSelector:a,slimDOMOptions:F,dataURLOptions:L,mirror:Wi,iframeManager:I,stylesheetManager:S,shadowDomManager:B,processedNodeManager:J,canvasManager:$,ignoreCSSAttributes:T,plugins:((te=ie==null?void 0:ie.filter(de=>de.observer))==null?void 0:te.map(de=>({observer:de.observer,options:de.options,callback:we=>er({type:Wt.Plugin,data:{plugin:de.name,payload:we}})})))||[]},{})};I.addLoadListener(fe=>{try{Y.push(le(fe.contentDocument))}catch(te){console.warn(te)}});const me=()=>{V(),Y.push(le(document))};return document.readyState==="interactive"||document.readyState==="complete"?me():(Y.push(mo("DOMContentLoaded",()=>{er({type:Wt.DomContentLoaded,data:{}}),re==="DOMContentLoaded"&&me()})),Y.push(mo("load",()=>{er({type:Wt.Load,data:{}}),re==="load"&&me()},window))),()=>{Y.forEach(fe=>fe()),J.destroy(),Cg=void 0,HJ()}}catch(Y){console.warn(Y)}}function cee(n){if(!Cg)throw new Error("please take full snapshot after start recording");Cg(n)}as.mirror=Wi,as.takeFullSnapshot=cee;function uee(n,e){try{return n?n(e):new t5}catch{return console.warn("Unable to initialize CanvasManager"),new t5}}var n5;(function(n){n[n.NotStarted=0]="NotStarted",n[n.Running=1]="Running",n[n.Stopped=2]="Stopped"})(n5||(n5={}));const dee=3,fee=5;function Ly(n){return n>9999999999?n:n*1e3}function Py(n){return n>9999999999?n/1e3:n}function eh(n,e){e.category!=="sentry.transaction"&&(["ui.click","ui.input"].includes(e.category)?n.triggerUserActivity():n.checkAndHandleExpiredSession(),n.addUpdate(()=>(n.throttledAddEvent({type:Wt.Custom,timestamp:(e.timestamp||0)*1e3,data:{tag:"breadcrumb",payload:Hi(e,10,1e3)}}),e.category==="console")))}const hee="button,a";function r5(n){return n.closest(hee)||n}function o5(n){const e=i5(n);return!e||!(e instanceof Element)?e:r5(e)}function i5(n){return pee(n)?n.target:n}function pee(n){return typeof n=="object"&&!!n&&"target"in n}let Ks;function mee(n){return Ks||(Ks=[],gee()),Ks.push(n),()=>{const e=Ks?Ks.indexOf(n):-1;e>-1&&Ks.splice(e,1)}}function gee(){Oo(On,"open",function(n){return function(...e){if(Ks)try{Ks.forEach(t=>t())}catch{}return n.apply(On,e)}})}const _ee=new Set([Ot.Mutation,Ot.StyleSheetRule,Ot.StyleDeclaration,Ot.AdoptedStyleSheet,Ot.CanvasMutation,Ot.Selection,Ot.MediaInteraction]);function vee(n,e,t){n.handleClick(e,t)}class Aee{constructor(e,t,r=eh){this._lastMutation=0,this._lastScroll=0,this._clicks=[],this._timeout=t.timeout/1e3,this._threshold=t.threshold/1e3,this._scrollTimeout=t.scrollTimeout/1e3,this._replay=e,this._ignoreSelector=t.ignoreSelector,this._addBreadcrumbEvent=r}addListeners(){const e=mee(()=>{this._lastMutation=a5()});this._teardown=()=>{e(),this._clicks=[],this._lastMutation=0,this._lastScroll=0}}removeListeners(){this._teardown&&this._teardown(),this._checkClickTimeout&&clearTimeout(this._checkClickTimeout)}handleClick(e,t){if(bee(t,this._ignoreSelector)||!xee(e))return;const r={timestamp:Py(e.timestamp),clickBreadcrumb:e,clickCount:0,node:t};this._clicks.some(o=>o.node===r.node&&Math.abs(o.timestamp-r.timestamp)<1)||(this._clicks.push(r),this._clicks.length===1&&this._scheduleCheckClicks())}registerMutation(e=Date.now()){this._lastMutation=Py(e)}registerScroll(e=Date.now()){this._lastScroll=Py(e)}registerClick(e){const t=r5(e);this._handleMultiClick(t)}_handleMultiClick(e){this._getClicks(e).forEach(t=>{t.clickCount++})}_getClicks(e){return this._clicks.filter(t=>t.node===e)}_checkClicks(){const e=[],t=a5();this._clicks.forEach(r=>{!r.mutationAfter&&this._lastMutation&&(r.mutationAfter=r.timestamp<=this._lastMutation?this._lastMutation-r.timestamp:void 0),!r.scrollAfter&&this._lastScroll&&(r.scrollAfter=r.timestamp<=this._lastScroll?this._lastScroll-r.timestamp:void 0),r.timestamp+this._timeout<=t&&e.push(r)});for(const r of e){const o=this._clicks.indexOf(r);o>-1&&(this._generateBreadcrumbs(r),this._clicks.splice(o,1))}this._clicks.length&&this._scheduleCheckClicks()}_generateBreadcrumbs(e){const t=this._replay,r=e.scrollAfter&&e.scrollAfter<=this._scrollTimeout,o=e.mutationAfter&&e.mutationAfter<=this._threshold,i=!r&&!o,{clickCount:a,clickBreadcrumb:s}=e;if(i){const l=Math.min(e.mutationAfter||this._timeout,this._timeout)*1e3,c=l1){const l={type:"default",message:s.message,timestamp:s.timestamp,category:"ui.multiClick",data:{...s.data,url:On.location.href,route:t.getCurrentRoute(),clickCount:a,metric:!0}};this._addBreadcrumbEvent(t,l)}}_scheduleCheckClicks(){this._checkClickTimeout&&clearTimeout(this._checkClickTimeout),this._checkClickTimeout=Qf(()=>this._checkClicks(),1e3)}}const yee=["A","BUTTON","INPUT"];function bee(n,e){return!!(!yee.includes(n.tagName)||n.tagName==="INPUT"&&!["submit","button"].includes(n.getAttribute("type")||"")||n.tagName==="A"&&(n.hasAttribute("download")||n.hasAttribute("target")&&n.getAttribute("target")!=="_self")||e&&n.matches(e))}function xee(n){return!!(n.data&&typeof n.data.nodeId=="number"&&n.timestamp)}function a5(){return Date.now()/1e3}function Eee(n,e){try{if(!Cee(e))return;const{source:t}=e.data;if(_ee.has(t)&&n.registerMutation(e.timestamp),t===Ot.Scroll&&n.registerScroll(e.timestamp),See(e)){const{type:r,id:o}=e.data,i=as.mirror.getNode(o);i instanceof HTMLElement&&r===go.Click&&n.registerClick(i)}}catch{}}function Cee(n){return n.type===dee}function See(n){return n.data.source===Ot.MouseInteraction}function va(n){return{timestamp:Date.now()/1e3,type:"default",...n}}var Dy=(n=>(n[n.Document=0]="Document",n[n.DocumentType=1]="DocumentType",n[n.Element=2]="Element",n[n.Text=3]="Text",n[n.CDATA=4]="CDATA",n[n.Comment=5]="Comment",n))(Dy||{});const wee=new Set(["id","class","aria-label","role","name","alt","title","data-test-id","data-testid","disabled","aria-disabled","data-sentry-component"]);function Mee(n){const e={};!n["data-sentry-component"]&&n["data-sentry-element"]&&(n["data-sentry-component"]=n["data-sentry-element"]);for(const t in n)if(wee.has(t)){let r=t;(t==="data-testid"||t==="data-test-id")&&(r="testId"),e[r]=n[t]}return e}const Tee=n=>e=>{if(!n.isEnabled())return;const t=Iee(e);if(!t)return;const r=e.name==="click",o=r?e.event:void 0;r&&n.clickDetector&&(o!=null&&o.target)&&!o.altKey&&!o.metaKey&&!o.ctrlKey&&!o.shiftKey&&vee(n.clickDetector,t,o5(e.event)),eh(n,t)};function s5(n,e){const t=as.mirror.getId(n),r=t&&as.mirror.getNode(t),o=r&&as.mirror.getMeta(r),i=o&&Lee(o)?o:null;return{message:e,data:i?{nodeId:t,node:{id:t,tagName:i.tagName,textContent:Array.from(i.childNodes).map(a=>a.type===Dy.Text&&a.textContent).filter(Boolean).map(a=>a.trim()).join(""),attributes:Mee(i.attributes)}}:{}}}function Iee(n){const{target:e,message:t}=Ree(n);return va({category:`ui.${n.name}`,...s5(e,t)})}function Ree(n){const e=n.name==="click";let t,r=null;try{r=e?o5(n.event):i5(n.event),t=Fm(r,{maxStringLength:200})||""}catch{t=""}return{target:r,message:t}}function Lee(n){return n.type===Dy.Element}function Pee(n,e){if(!n.isEnabled())return;n.updateUserActivity();const t=Dee(e);t&&eh(n,t)}function Dee(n){const{metaKey:e,shiftKey:t,ctrlKey:r,altKey:o,key:i,target:a}=n;if(!a||Bee(a)||!i)return null;const s=e||r||o,l=i.length===1;if(!s&&l)return null;const c=Fm(a,{maxStringLength:200})||"",u=s5(a,c);return va({category:"ui.keyDown",message:c,data:{...u.data,metaKey:e,shiftKey:t,ctrlKey:r,altKey:o,key:i}})}function Bee(n){return n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.isContentEditable}const Nee={resource:Uee,paint:Fee,navigation:Vee};function Sg(n,e){return({metric:t})=>void e.replayPerformanceEntries.push(n(t))}function Oee(n){return n.map(kee).filter(Boolean)}function kee(n){const e=Nee[n.entryType];return e?e(n):null}function vu(n){return((pY()||On.performance.timeOrigin)+n)/1e3}function Fee(n){const{duration:e,entryType:t,name:r,startTime:o}=n,i=vu(o);return{type:t,name:r,start:i,end:i+e,data:void 0}}function Vee(n){const{entryType:e,name:t,decodedBodySize:r,duration:o,domComplete:i,encodedBodySize:a,domContentLoadedEventStart:s,domContentLoadedEventEnd:l,domInteractive:c,loadEventStart:u,loadEventEnd:d,redirectCount:f,startTime:h,transferSize:p,type:m}=n;return o===0?null:{type:`${e}.${m}`,start:vu(h),end:vu(i),name:t,data:{size:p,decodedBodySize:r,encodedBodySize:a,duration:o,domInteractive:c,domContentLoadedEventStart:s,domContentLoadedEventEnd:l,loadEventStart:u,loadEventEnd:d,domComplete:i,redirectCount:f}}}function Uee(n){const{entryType:e,initiatorType:t,name:r,responseEnd:o,startTime:i,decodedBodySize:a,encodedBodySize:s,responseStatus:l,transferSize:c}=n;return["fetch","xmlhttprequest"].includes(t)?null:{type:`${e}.${t}`,start:vu(i),end:vu(o),name:r,data:{size:c,statusCode:l,decodedBodySize:a,encodedBodySize:s}}}function zee(n){const e=n.entries[n.entries.length-1],t=e!=null&&e.element?[e.element]:void 0;return wg(n,"largest-contentful-paint",t)}function Gee(n){return n.sources!==void 0}function Hee(n){const e=[],t=[];for(const r of n.entries)if(Gee(r)){const o=[];for(const i of r.sources)if(i.node){t.push(i.node);const a=as.mirror.getId(i.node);a&&o.push(a)}e.push({value:r.value,nodeIds:o.length?o:void 0})}return wg(n,"cumulative-layout-shift",t,e)}function Wee(n){const e=n.entries[n.entries.length-1],t=e!=null&&e.target?[e.target]:void 0;return wg(n,"first-input-delay",t)}function jee(n){const e=n.entries[n.entries.length-1],t=e!=null&&e.target?[e.target]:void 0;return wg(n,"interaction-to-next-paint",t)}function wg(n,e,t,r){const o=n.value,i=n.rating,a=vu(o);return{type:"web-vital",name:e,start:a,end:a,data:{value:o,size:o,rating:i,nodeIds:t?t.map(s=>as.mirror.getId(s)):void 0,attributions:r}}}function Qee(n){function e(o){n.performanceEntries.includes(o)||n.performanceEntries.push(o)}function t({entries:o}){o.forEach(e)}const r=[];return["navigation","paint","resource"].forEach(o=>{r.push(OK(o,t))}),r.push(DK(Sg(zee,n)),PK(Sg(Hee,n)),BK(Sg(Wee,n)),NK(Sg(jee,n))),()=>{r.forEach(o=>o())}}const Pt=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,$ee='var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(t,e){for(var i=new n(31),s=0;s<31;++s)i[s]=e+=1<>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,s=0,a=new n(r);s>f]=l}else for(o=new n(i),s=0;s>15-t[s]);return o},p=new t(288);for(c=0;c<144;++c)p[c]=8;for(c=144;c<256;++c)p[c]=9;for(c=256;c<280;++c)p[c]=7;for(c=280;c<288;++c)p[c]=8;var g=new t(32);for(c=0;c<32;++c)g[c]=5;var w=d(p,9,0),y=d(g,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},_=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},x=function(r,e){for(var i=[],s=0;sd&&(d=o[s].s);var p=new n(d+1),g=A(i[c-1],p,0);if(g>e){s=0;var w=0,y=g-e,m=1<e))break;w+=m-(1<>=y;w>0;){var M=o[s].s;p[M]=0&&w;--s){var E=o[s].s;p[E]==e&&(--p[E],++w)}g=e}return{t:new t(p),l:g}},A=function(t,n,r){return-1==t.s?Math.max(A(t.l,n,r+1),A(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,s=t[0],a=1,o=function(t){e[i++]=t},h=1;h<=r;++h)if(t[h]==s&&h!=r)++a;else{if(!s&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(s),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(s);a=1,s=t[h]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s4&&!H[s[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(h,p)+T(f,g)+l,X=T(h,M)+T(f,U)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=w,P=p,Q=y,R=g;for(B=0;B255){_(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;_(r,m,Q[et]),m+=R[et],et>3&&(_(r,m,rt>>5&8191),m+=i[et])}else _(r,m,N[rt]),m+=P[rt]}return _(r,m,N[256]),m+P[256]},C=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,s=0|r.length,a=0;a!=s;){for(var o=Math.min(a+2655,s);a>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(s,a,o,h,u){if(!u&&(u={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),v=new t(c.length+s.length);v.set(c),v.set(s,c.length),s=v,u.w=c.length}return function(s,a,o,h,u,c){var v=c.z||s.length,d=new t(h+v+5*(1+Math.ceil(v/7e3))+u),p=d.subarray(h,d.length-u),g=c.l,w=7&(c.r||0);if(a){w&&(p[0]=c.r>>3);for(var y=C[a-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!g)){w=U(s,p,0,F,I,S,O,q,G,j-G,w),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(s[j+Q]==s[j+Q-W]){for(var $=0;$Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;Pnt&&(nt=et,K=rt)}}}W+=(J=K)-(K=_[J])&32767}if(R){F[q++]=268435456|f[Q]<<18|l[R];var it=31&f[Q],st=31&l[R];O+=e[it]+i[st],++I[257+it],++S[st],B=j+Q,++L}else F[q++]=s[j],++I[s[j]]}}for(j=Math.max(j,B);j=v&&(p[w/8|0]=g,at=v),w=k(p,w+1,s.subarray(j,at))}c.i=v}return b(d,0,h+m(w)+u)}(s,null==a.level?6:a.level,null==a.mem?u.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):20:12+a.mem,o,h,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if("function"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var s=this.b.length-this.s.z;this.b.set(n.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(s),32768),this.s.z=n.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n.prototype.flush=function(){this.ondata||E(5),this.s.l&&E(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,s=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),a=s.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(s,n),O(s,a-8,r.d()),O(s,a-4,e),s}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t.prototype.flush=function(){j.prototype.flush.call(this)},t}(),G="undefined"!=typeof TextEncoder&&new TextEncoder,H="undefined"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(G)return G.encode(n);for(var e=n.length,i=new t(n.length+(n.length>>1)),s=0,a=function(t){i[s++]=t},o=0;oi.length){var h=new t(s+8+(e-o<<1));h.set(i),i=h}var f=n.charCodeAt(o);f<128||r?a(f):f<2048?(a(192|f>>6),a(128|63&f)):f>55295&&f<57344?(a(240|(f=65536+(1047552&f)|1023&n.charCodeAt(++o))>>18),a(128|f>>12&63),a(128|f>>6&63),a(128|63&f)):(a(224|f>>12),a(128|f>>6&63),a(128|63&f))}return b(i,0,s)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const n=this._hasEvents?",":"";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push("]",!0);const t=function(t){let n=0;for(const r of t)n+=r.length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n{this._deflatedData.push(t)},this.stream=new J((t,n)=>{this.deflate.push(t,n)}),this.stream.push("[")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener("message",function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&"function"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}}),postMessage({id:void 0,method:"init",success:!0,response:void 0});';function Yee(){const n=new Blob([$ee]);return URL.createObjectURL(n)}const l5=["log","warn","error"],Mg="[Replay] ";function By(n,e="info"){Xs({category:"console",data:{logger:"replay"},level:e,message:`${Mg}${n}`},{level:e})}function Xee(){let n=!1,e=!1;const t={exception:()=>{},infoTick:()=>{},setConfig:r=>{n=!!r.captureExceptions,e=!!r.traceInternals}};return Pt?(l5.forEach(r=>{t[r]=(...o)=>{lt[r](Mg,...o),e&&By(o.join(""),FI(r))}}),t.exception=(r,...o)=>{o.length&&t.error&&t.error(...o),lt.error(Mg,r),n?jA(r):e&&By(r,"error")},t.infoTick=(...r)=>{lt.log(Mg,...r),e&&setTimeout(()=>By(r[0]),0)}):l5.forEach(r=>{t[r]=()=>{}}),t}const Dt=Xee();class Ny extends Error{constructor(){super(`Event buffer exceeded maximum size of ${vy}.`)}}class c5{constructor(){this.events=[],this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return this.events.length>0}get type(){return"sync"}destroy(){this.events=[]}async addEvent(e){const t=JSON.stringify(e).length;if(this._totalSize+=t,this._totalSize>vy)throw new Ny;this.events.push(e)}finish(){return new Promise(e=>{const t=this.events;this.clear(),e(JSON.stringify(t))})}clear(){this.events=[],this._totalSize=0,this.hasCheckout=!1}getEarliestTimestamp(){const e=this.events.map(t=>t.timestamp).sort()[0];return e?Ly(e):null}}class qee{constructor(e){this._worker=e,this._id=0}ensureReady(){return this._ensureReadyPromise?this._ensureReadyPromise:(this._ensureReadyPromise=new Promise((e,t)=>{this._worker.addEventListener("message",({data:r})=>{r.success?e():t()},{once:!0}),this._worker.addEventListener("error",r=>{t(r)},{once:!0})}),this._ensureReadyPromise)}destroy(){Pt&&Dt.log("Destroying compression worker"),this._worker.terminate()}postMessage(e,t){const r=this._getAndIncrementId();return new Promise((o,i)=>{const a=({data:s})=>{const l=s;if(l.method===e&&l.id===r){if(this._worker.removeEventListener("message",a),!l.success){Pt&&Dt.error("Error in compression worker: ",l.response),i(new Error("Error in compression worker"));return}o(l.response)}};this._worker.addEventListener("message",a),this._worker.postMessage({id:r,method:e,arg:t})})}_getAndIncrementId(){return this._id++}}class Kee{constructor(e){this._worker=new qee(e),this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return!!this._earliestTimestamp}get type(){return"worker"}ensureReady(){return this._worker.ensureReady()}destroy(){this._worker.destroy()}addEvent(e){const t=Ly(e.timestamp);(!this._earliestTimestamp||tvy?Promise.reject(new Ny):this._sendEventToWorker(r)}finish(){return this._finishRequest()}clear(){this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this._worker.postMessage("clear").then(null,e=>{Pt&&Dt.exception(e,'Sending "clear" message to worker failed',e)})}getEarliestTimestamp(){return this._earliestTimestamp}_sendEventToWorker(e){return this._worker.postMessage("addEvent",e)}async _finishRequest(){const e=await this._worker.postMessage("finish");return this._earliestTimestamp=null,this._totalSize=0,e}}class Zee{constructor(e){this._fallback=new c5,this._compression=new Kee(e),this._used=this._fallback,this._ensureWorkerIsLoadedPromise=this._ensureWorkerIsLoaded()}get waitForCheckout(){return this._used.waitForCheckout}get type(){return this._used.type}get hasEvents(){return this._used.hasEvents}get hasCheckout(){return this._used.hasCheckout}set hasCheckout(e){this._used.hasCheckout=e}set waitForCheckout(e){this._used.waitForCheckout=e}destroy(){this._fallback.destroy(),this._compression.destroy()}clear(){return this._used.clear()}getEarliestTimestamp(){return this._used.getEarliestTimestamp()}addEvent(e){return this._used.addEvent(e)}async finish(){return await this.ensureWorkerIsLoaded(),this._used.finish()}ensureWorkerIsLoaded(){return this._ensureWorkerIsLoadedPromise}async _ensureWorkerIsLoaded(){try{await this._compression.ensureReady()}catch(e){Pt&&Dt.exception(e,"Failed to load the compression worker, falling back to simple buffer");return}await this._switchToCompressionWorker()}async _switchToCompressionWorker(){const{events:e,hasCheckout:t,waitForCheckout:r}=this._fallback,o=[];for(const i of e)o.push(this._compression.addEvent(i));this._compression.hasCheckout=t,this._compression.waitForCheckout=r,this._used=this._compression;try{await Promise.all(o),this._fallback.clear()}catch(i){Pt&&Dt.exception(i,"Failed to add events when switching buffers.")}}}function Jee({useCompression:n,workerUrl:e}){if(n&&window.Worker){const t=ete(e);if(t)return t}return Pt&&Dt.log("Using simple buffer"),new c5}function ete(n){try{const e=n||tte();if(!e)return;Pt&&Dt.log(`Using compression worker${n?` from ${n}`:""}`);const t=new Worker(e);return new Zee(t)}catch(e){Pt&&Dt.exception(e,"Failed to create compression worker")}}function tte(){return typeof __SENTRY_EXCLUDE_REPLAY_WORKER__>"u"||!__SENTRY_EXCLUDE_REPLAY_WORKER__?Yee():""}function Oy(){try{return"sessionStorage"in On&&!!On.sessionStorage}catch{return!1}}function nte(n){rte(),n.session=void 0}function rte(){if(Oy())try{On.sessionStorage.removeItem(gy)}catch{}}function u5(n){return n===void 0?!1:Math.random()n.getContext().initialTimestamp+n.getOptions().maxReplayDuration?(Pt&&Dt.infoTick(`Skipping event with timestamp ${t} because it is after maxReplayDuration`),!1):!0}function lte(n,e){try{if(typeof e=="function"&&ate(n))return e(n)}catch(t){return Pt&&Dt.exception(t,"An error occurred in the `beforeAddRecordingEvent` callback, skipping the event..."),null}return n}function zy(n){return!n.type}function Gy(n){return n.type==="transaction"}function cte(n){return n.type==="replay_event"}function _5(n){return n.type==="feedback"}function ute(n){return(e,t)=>{if(!n.isEnabled()||!zy(e)&&!Gy(e))return;const r=t==null?void 0:t.statusCode;if(!(!r||r<200||r>=300)){if(Gy(e)){dte(n,e);return}fte(n,e)}}}function dte(n,e){var r,o;const t=n.getContext();(o=(r=e.contexts)==null?void 0:r.trace)!=null&&o.trace_id&&t.traceIds.size<100&&t.traceIds.add(e.contexts.trace.trace_id)}function fte(n,e){const t=n.getContext();if(e.event_id&&t.errorIds.size<100&&t.errorIds.add(e.event_id),n.recordingMode!=="buffer"||!e.tags||!e.tags.replayId)return;const{beforeErrorSampling:r}=n.getOptions();typeof r=="function"&&!r(e)||Qf(async()=>{try{await n.sendBufferedReplayOrFlush()}catch(o){n.handleException(o)}})}function hte(n){return e=>{!n.isEnabled()||!zy(e)||pte(n,e)}}function pte(n,e){var r,o,i;const t=(i=(o=(r=e.exception)==null?void 0:r.values)==null?void 0:o[0])==null?void 0:i.value;if(typeof t=="string"&&(t.match(/(reactjs\.org\/docs\/error-decoder\.html\?invariant=|react\.dev\/errors\/)(418|419|422|423|425)/)||t.match(/(does not match server-rendered HTML|Hydration failed because)/i))){const a=va({category:"replay.hydrate-error",data:{url:Vm()}});eh(n,a)}}function mte(n){const e=Pn();e&&e.on("beforeAddBreadcrumb",t=>gte(n,t))}function gte(n,e){if(!n.isEnabled()||!v5(e))return;const t=_te(e);t&&eh(n,t)}function _te(n){return!v5(n)||["fetch","xhr","sentry.event","sentry.transaction"].includes(n.category)||n.category.startsWith("ui.")?null:n.category==="console"?vte(n):va(n)}function vte(n){var o;const e=(o=n.data)==null?void 0:o.arguments;if(!Array.isArray(e)||e.length===0)return va(n);let t=!1;const r=e.map(i=>{if(!i)return i;if(typeof i=="string")return i.length>fg?(t=!0,`${i.slice(0,fg)}…`):i;if(typeof i=="object")try{const a=Hi(i,7);return JSON.stringify(a).length>fg?(t=!0,`${JSON.stringify(a,null,2).slice(0,fg)}…`):a}catch{}return i});return va({...n,data:{...n.data,arguments:r,...t?{_meta:{warnings:["CONSOLE_ARG_TRUNCATED"]}}:{}}})}function v5(n){return!!n.category}function Ate(n,e){var t,r,o;return n.type||!((r=(t=n.exception)==null?void 0:t.values)!=null&&r.length)?!1:!!((o=e.originalException)!=null&&o.__rrweb__)}function A5(){const n=Zo().getPropagationContext().dsc;n&&delete n.replay_id;const e=BA();if(e){const t=au(e);delete t.replay_id}}function yte(n,e){n.triggerUserActivity(),n.addUpdate(()=>e.timestamp?(n.throttledAddEvent({type:Wt.Custom,timestamp:e.timestamp*1e3,data:{tag:"breadcrumb",payload:{timestamp:e.timestamp,type:"default",category:"sentry.feedback",data:{feedbackId:e.event_id}}}}),!1):!0)}function bte(n,e){return n.recordingMode!=="buffer"||e.message===_y||!e.exception||e.type?!1:u5(n.getOptions().errorSampleRate)}function xte(n){return Object.assign((e,t)=>!n.isEnabled()||n.isPaused()?e:cte(e)?(delete e.breadcrumbs,e):!zy(e)&&!Gy(e)&&!_5(e)?e:n.checkAndHandleExpiredSession()?_5(e)?(n.flush(),e.contexts.feedback.replay_id=n.getSessionId(),yte(n,e),e):Ate(e,t)&&!n.getOptions()._experiments.captureExceptions?(Pt&&Dt.log("Ignoring error from rrweb internals",e),null):((bte(n,e)||n.recordingMode==="session")&&(e.tags={...e.tags,replayId:n.getSessionId()}),e):(A5(),e),{id:"Replay"})}function Tg(n,e){return e.map(({type:t,start:r,end:o,name:i,data:a})=>{const s=n.throttledAddEvent({type:Wt.Custom,timestamp:r,data:{tag:"performanceSpan",payload:{op:t,description:i,startTimestamp:r,endTimestamp:o,data:a}}});return typeof s=="string"?Promise.resolve(null):s})}function Ete(n){const{from:e,to:t}=n,r=Date.now()/1e3;return{type:"navigation.push",start:r,end:r,name:t,data:{previous:e}}}function Cte(n){return e=>{if(!n.isEnabled())return;const t=Ete(e);t!==null&&(n.getContext().urls.push(t.name),n.triggerUserActivity(),n.addUpdate(()=>(Tg(n,[t]),!1)))}}function Ste(n,e){return Pt&&n.getOptions()._experiments.traceInternals?!1:dq(e,Pn())}function y5(n,e){n.isEnabled()&&e!==null&&(Ste(n,e.name)||n.addUpdate(()=>(Tg(n,[e]),!0)))}function Ig(n){if(!n)return;const e=new TextEncoder;try{if(typeof n=="string")return e.encode(n).length;if(n instanceof URLSearchParams)return e.encode(n.toString()).length;if(n instanceof FormData){const t=c4(n);return e.encode(t).length}if(n instanceof Blob)return n.size;if(n instanceof ArrayBuffer)return n.byteLength}catch{}}function b5(n){if(!n)return;const e=parseInt(n,10);return isNaN(e)?void 0:e}function Rg(n,e){if(!n)return{headers:{},size:void 0,_meta:{warnings:[e]}};const t={...n._meta},r=t.warnings||[];return t.warnings=[...r,e],n._meta=t,n}function x5(n,e){if(!e)return null;const{startTimestamp:t,endTimestamp:r,url:o,method:i,statusCode:a,request:s,response:l}=e;return{type:n,start:t/1e3,end:r/1e3,name:o,data:{method:i,statusCode:a,request:s,response:l}}}function th(n){return{headers:{},size:n,_meta:{warnings:["URL_SKIPPED"]}}}function Zs(n,e,t){if(!e&&Object.keys(n).length===0)return;if(!e)return{headers:n};if(!t)return{headers:n,size:e};const r={headers:n,size:e},{body:o,warnings:i}=wte(t);return r.body=o,i!=null&&i.length&&(r._meta={warnings:i}),r}function Hy(n,e){return Object.entries(n).reduce((t,[r,o])=>{const i=r.toLowerCase();return e.includes(i)&&n[r]&&(t[i]=o),t},{})}function wte(n){if(!n||typeof n!="string")return{body:n};const e=n.length>_4,t=Mte(n);if(e){const r=n.slice(0,_4);return t?{body:r,warnings:["MAYBE_JSON_TRUNCATED"]}:{body:`${r}…`,warnings:["TEXT_TRUNCATED"]}}if(t)try{return{body:JSON.parse(n)}}catch{}return{body:n}}function Mte(n){const e=n[0],t=n[n.length-1];return e==="["&&t==="]"||e==="{"&&t==="}"}function Lg(n,e){const t=Tte(n);return Rf(t,e)}function Tte(n,e=On.document.baseURI){if(n.startsWith("http://")||n.startsWith("https://")||n.startsWith(On.location.origin))return n;const t=new URL(n,e);if(t.origin!==new URL(e).origin)return n;const r=t.href;return!n.endsWith("/")&&r.endsWith("/")?r.slice(0,-1):r}async function Ite(n,e,t){try{const r=await Lte(n,e,t),o=x5("resource.fetch",r);y5(t.replay,o)}catch(r){Pt&&Dt.exception(r,"Failed to capture fetch breadcrumb")}}function Rte(n,e){const{input:t,response:r}=e,o=t?d4(t):void 0,i=Ig(o),a=r?b5(r.headers.get("content-length")):void 0;i!==void 0&&(n.data.request_body_size=i),a!==void 0&&(n.data.response_body_size=a)}async function Lte(n,e,t){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r}=e,{url:a,method:s,status_code:l=0,request_body_size:c,response_body_size:u}=n.data,d=Lg(a,t.networkDetailAllowUrls)&&!Lg(a,t.networkDetailDenyUrls),f=d?Pte(t,e.input,c):th(c),h=await Dte(d,t,e.response,u);return{startTimestamp:o,endTimestamp:i,url:a,method:s,statusCode:l,request:f,response:h}}function Pte({networkCaptureBodies:n,networkRequestHeaders:e},t,r){const o=t?Ote(t,e):{};if(!n)return Zs(o,r,void 0);const i=d4(t),[a,s]=u4(i,Dt),l=Zs(o,r,a);return s?Rg(l,s):l}async function Dte(n,{networkCaptureBodies:e,networkResponseHeaders:t},r,o){if(!n&&o!==void 0)return th(o);const i=r?E5(r.headers,t):{};if(!r||!e&&o!==void 0)return Zs(i,o,void 0);const[a,s]=await Nte(r),l=Bte(a,{networkCaptureBodies:e,responseBodySize:o,captureDetails:n,headers:i});return s?Rg(l,s):l}function Bte(n,{networkCaptureBodies:e,responseBodySize:t,captureDetails:r,headers:o}){try{const i=n!=null&&n.length&&t===void 0?Ig(n):t;return r?e?Zs(o,i,n):Zs(o,i,void 0):th(i)}catch(i){return Pt&&Dt.exception(i,"Failed to serialize response body"),Zs(o,t,void 0)}}async function Nte(n){const e=kte(n);if(!e)return[void 0,"BODY_PARSE_ERROR"];try{return[await Fte(e)]}catch(t){return t instanceof Error&&t.message.indexOf("Timeout")>-1?(Pt&&Dt.warn("Parsing text body from response timed out"),[void 0,"BODY_PARSE_TIMEOUT"]):(Pt&&Dt.exception(t,"Failed to get text body from response"),[void 0,"BODY_PARSE_ERROR"])}}function E5(n,e){const t={};return e.forEach(r=>{n.get(r)&&(t[r]=n.get(r))}),t}function Ote(n,e){return n.length===1&&typeof n[0]!="string"?C5(n[0],e):n.length===2?C5(n[1],e):{}}function C5(n,e){if(!n)return{};const t=n.headers;return t?t instanceof Headers?E5(t,e):Array.isArray(t)?{}:Hy(t,e):{}}function kte(n){try{return n.clone()}catch(e){Pt&&Dt.exception(e,"Failed to clone response body")}}function Fte(n){return new Promise((e,t)=>{const r=Qf(()=>t(new Error("Timeout while trying to read response body")),500);Vte(n).then(o=>e(o),o=>t(o)).finally(()=>clearTimeout(r))})}async function Vte(n){return await n.text()}async function Ute(n,e,t){try{const r=Gte(n,e,t),o=x5("resource.xhr",r);y5(t.replay,o)}catch(r){Pt&&Dt.exception(r,"Failed to capture xhr breadcrumb")}}function zte(n,e){const{xhr:t,input:r}=e;if(!t)return;const o=Ig(r),i=t.getResponseHeader("content-length")?b5(t.getResponseHeader("content-length")):Qte(t.response,t.responseType);o!==void 0&&(n.data.request_body_size=o),i!==void 0&&(n.data.response_body_size=i)}function Gte(n,e,t){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r,input:a,xhr:s}=e,{url:l,method:c,status_code:u=0,request_body_size:d,response_body_size:f}=n.data;if(!l)return null;if(!s||!Lg(l,t.networkDetailAllowUrls)||Lg(l,t.networkDetailDenyUrls)){const x=th(d),w=th(f);return{startTimestamp:o,endTimestamp:i,url:l,method:c,statusCode:u,request:x,response:w}}const h=s[lu],p=h?Hy(h.request_headers,t.networkRequestHeaders):{},m=Hy(Hte(s),t.networkResponseHeaders),[g,_]=t.networkCaptureBodies?u4(a,Dt):[void 0],[A,y]=t.networkCaptureBodies?Wte(s):[void 0],b=Zs(p,d,g),E=Zs(m,f,A);return{startTimestamp:o,endTimestamp:i,url:l,method:c,statusCode:u,request:_?Rg(b,_):b,response:y?Rg(E,y):E}}function Hte(n){const e=n.getAllResponseHeaders();return e?e.split(`\r +`).reduce((t,r)=>{const[o,i]=r.split(": ");return i&&(t[o.toLowerCase()]=i),t},{}):{}}function Wte(n){const e=[];try{return[n.responseText]}catch(t){e.push(t)}try{return jte(n.response,n.responseType)}catch(t){e.push(t)}return Pt&&Dt.warn("Failed to get xhr response body",...e),[void 0]}function jte(n,e){try{if(typeof n=="string")return[n];if(n instanceof Document)return[n.body.outerHTML];if(e==="json"&&n&&typeof n=="object")return[JSON.stringify(n)];if(!n)return[void 0]}catch(t){return Pt&&Dt.exception(t,"Failed to serialize body",n),[void 0,"BODY_PARSE_ERROR"]}return Pt&&Dt.log("Skipping network body because of body type",n),[void 0,"UNPARSEABLE_BODY_TYPE"]}function Qte(n,e){try{const t=e==="json"&&n&&typeof n=="object"?JSON.stringify(n):n;return Ig(t)}catch{return}}function $te(n){const e=Pn();try{const{networkDetailAllowUrls:t,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:a}=n.getOptions(),s={replay:n,networkDetailAllowUrls:t,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:a};e&&e.on("beforeAddBreadcrumb",(l,c)=>Yte(s,l,c))}catch{}}function Yte(n,e,t){if(e.data)try{Xte(e)&&Kte(t)&&(zte(e,t),Ute(e,t,n)),qte(e)&&Zte(t)&&(Rte(e,t),Ite(e,t,n))}catch(r){Pt&&Dt.exception(r,"Error when enriching network breadcrumb")}}function Xte(n){return n.category==="xhr"}function qte(n){return n.category==="fetch"}function Kte(n){return n==null?void 0:n.xhr}function Zte(n){return n==null?void 0:n.response}function Jte(n){const e=Pn();i4(Tee(n)),py(Cte(n)),mte(n),$te(n);const t=xte(n);VX(t),e&&(e.on("beforeSendEvent",hte(n)),e.on("afterSendEvent",ute(n)),e.on("createDsc",r=>{const o=n.getSessionId();o&&n.isEnabled()&&n.recordingMode==="session"&&n.checkAndHandleExpiredSession()&&(r.replay_id=o)}),e.on("spanStart",r=>{n.lastActiveSpan=r}),e.on("spanEnd",r=>{n.lastActiveSpan=r}),e.on("beforeSendFeedback",async(r,o)=>{var a;const i=n.getSessionId();o!=null&&o.includeReplay&&n.isEnabled()&&i&&((a=r.contexts)!=null&&a.feedback)&&(r.contexts.feedback.source==="api"&&await n.sendBufferedReplayOrFlush(),r.contexts.feedback.replay_id=i)}),e.on("openFeedbackWidget",async()=>{await n.sendBufferedReplayOrFlush()}))}async function ene(n){try{return Promise.all(Tg(n,[tne(On.performance.memory)]))}catch{return[]}}function tne(n){const{jsHeapSizeLimit:e,totalJSHeapSize:t,usedJSHeapSize:r}=n,o=Date.now()/1e3;return{type:"memory",name:"memory",start:o,end:o,data:{memory:{jsHeapSizeLimit:e,totalJSHeapSize:t,usedJSHeapSize:r}}}}function nne(n,e,t){return gq(n,e,{...t,setTimeoutImpl:Qf})}const yi=hn.navigator;function rne(){return/iPhone|iPad|iPod/i.test((yi==null?void 0:yi.userAgent)??"")||/Macintosh/i.test((yi==null?void 0:yi.userAgent)??"")&&(yi!=null&&yi.maxTouchPoints)&&(yi==null?void 0:yi.maxTouchPoints)>1?{sampling:{mousemove:!1}}:{}}function one(n){let e=!1;return(t,r)=>{if(!n.checkAndHandleExpiredSession()){Pt&&Dt.warn("Received replay event after session expired.");return}const o=r||!e;e=!0,n.clickDetector&&Eee(n.clickDetector,t),n.addUpdate(()=>{if(n.recordingMode==="buffer"&&o&&n.setInitialState(),!Uy(n,t,o))return!0;if(!o)return!1;const i=n.session;if(ane(n,o),n.recordingMode==="buffer"&&i&&n.eventBuffer){const a=n.eventBuffer.getEarliestTimestamp();a&&(Pt&&Dt.log(`Updating session start time to earliest event in buffer to ${new Date(a)}`),i.started=a,n.getOptions().stickySession&&ky(i))}return i!=null&&i.previousSessionId||n.recordingMode==="session"&&n.flush(),!0})}}function ine(n){const e=n.getOptions();return{type:Wt.Custom,timestamp:Date.now(),data:{tag:"options",payload:{shouldRecordCanvas:n.isRecordingCanvas(),sessionSampleRate:e.sessionSampleRate,errorSampleRate:e.errorSampleRate,useCompressionOption:e.useCompression,blockAllMedia:e.blockAllMedia,maskAllText:e.maskAllText,maskAllInputs:e.maskAllInputs,useCompression:n.eventBuffer?n.eventBuffer.type==="worker":!1,networkDetailHasUrls:e.networkDetailAllowUrls.length>0,networkCaptureBodies:e.networkCaptureBodies,networkRequestHasHeaders:e.networkRequestHeaders.length>0,networkResponseHasHeaders:e.networkResponseHeaders.length>0}}}}function ane(n,e){!e||!n.session||n.session.segmentId!==0||Uy(n,ine(n),!1)}function sne(n){if(!n)return null;try{return n.nodeType===n.ELEMENT_NODE?n:n.parentElement}catch{return null}}function lne(n,e,t,r){return Ql(KT(n,zA(n),r,t),[[{type:"replay_event"},n],[{type:"replay_recording",length:typeof e=="string"?new TextEncoder().encode(e).length:e.length},e]])}function cne({recordingData:n,headers:e}){let t;const r=`${JSON.stringify(e)} +`;if(typeof n=="string")t=`${r}${n}`;else{const i=new TextEncoder().encode(r);t=new Uint8Array(i.length+n.length),t.set(i),t.set(n,i.length)}return t}async function une({client:n,scope:e,replayId:t,event:r}){const o=typeof n._integrations=="object"&&n._integrations!==null&&!Array.isArray(n._integrations)?Object.keys(n._integrations):void 0,i={event_id:t,integrations:o};n.emit("preprocessEvent",r,i);const a=await uI(n.getOptions(),r,i,e,n,ns());if(!a)return null;n.emit("postprocessEvent",a,i),a.platform=a.platform||"javascript";const s=n.getSdkMetadata(),{name:l,version:c}=(s==null?void 0:s.sdk)||{};return a.sdk={...a.sdk,name:l||"sentry.javascript.unknown",version:c||"0.0.0"},a}async function dne({recordingData:n,replayId:e,segmentId:t,eventContext:r,timestamp:o,session:i}){const a=cne({recordingData:n,headers:{segment_id:t}}),{urls:s,errorIds:l,traceIds:c,initialTimestamp:u}=r,d=Pn(),f=Zo(),h=d==null?void 0:d.getTransport(),p=d==null?void 0:d.getDsn();if(!d||!h||!p||!i.sampled)return os({});const m={type:zZ,replay_start_timestamp:u/1e3,timestamp:o/1e3,error_ids:l,trace_ids:c,urls:s,replay_id:e,segment_id:t,replay_type:i.sampled},g=await une({scope:f,client:d,replayId:e,event:m});if(!g)return d.recordDroppedEvent("event_processor","replay"),Pt&&Dt.log("An event processor returned `null`, will not send event."),os({});delete g.sdkProcessingMetadata;const _=lne(g,a,p,d.getOptions().tunnel);let A;try{A=await h.send(_)}catch(b){const E=new Error(_y);try{E.cause=b}catch{}throw E}if(typeof A.statusCode=="number"&&(A.statusCode<200||A.statusCode>=300))throw new S5(A.statusCode);const y=RI({},A);if(II(y,"replay"))throw new Wy(y);return A}class S5 extends Error{constructor(e){super(`Transport returned status code ${e}`)}}class Wy extends Error{constructor(e){super("Rate limit hit"),this.rateLimits=e}}async function w5(n,e={count:0,interval:$Z}){const{recordingData:t,onError:r}=n;if(t.length)try{return await dne(n),!0}catch(o){if(o instanceof S5||o instanceof Wy)throw o;if(FX("Replays",{_retryCount:e.count}),r&&r(o),e.count>=YZ){const i=new Error(`${_y} - max retries exceeded`);try{i.cause=o}catch{}throw i}return e.interval*=++e.count,new Promise((i,a)=>{Qf(async()=>{try{await w5(n,e),i(!0)}catch(s){a(s)}},e.interval)})}}const M5="__THROTTLED",fne="__SKIPPED";function hne(n,e,t){const r=new Map,o=s=>{const l=s-t;r.forEach((c,u)=>{u[...r.values()].reduce((s,l)=>s+l,0);let a=!1;return(...s)=>{const l=Math.floor(Date.now()/1e3);if(o(l),i()>=e){const u=a;return a=!0,u?fne:M5}a=!1;const c=r.get(l)||0;return r.set(l,c+1),n(...s)}}class pne{constructor({options:e,recordingOptions:t}){this.eventBuffer=null,this.performanceEntries=[],this.replayPerformanceEntries=[],this.recordingMode="session",this.timeouts={sessionIdlePause:GZ,sessionIdleExpire:HZ},this._lastActivity=Date.now(),this._isEnabled=!1,this._isPaused=!1,this._requiresManualStart=!1,this._hasInitializedCoreListeners=!1,this._context={errorIds:new Set,traceIds:new Set,urls:[],initialTimestamp:Date.now(),initialUrl:""},this._recordingOptions=t,this._options=e,this._debouncedFlush=nne(()=>this._flush(),this._options.flushMinDelay,{maxWait:this._options.flushMaxDelay}),this._throttledAddEvent=hne((a,s)=>ste(this,a,s),300,5);const{slowClickTimeout:r,slowClickIgnoreSelectors:o}=this.getOptions(),i=r?{threshold:Math.min(XZ,r),timeout:r,scrollTimeout:qZ,ignoreSelector:o?o.join(","):""}:void 0;if(i&&(this.clickDetector=new Aee(this,i)),Pt){const a=e._experiments;Dt.setConfig({captureExceptions:!!a.captureExceptions,traceInternals:!!a.traceInternals})}this._handleVisibilityChange=()=>{On.document.visibilityState==="visible"?this._doChangeToForegroundTasks():this._doChangeToBackgroundTasks()},this._handleWindowBlur=()=>{const a=va({category:"ui.blur"});this._doChangeToBackgroundTasks(a)},this._handleWindowFocus=()=>{const a=va({category:"ui.focus"});this._doChangeToForegroundTasks(a)},this._handleKeyboardEvent=a=>{Pee(this,a)}}getContext(){return this._context}isEnabled(){return this._isEnabled}isPaused(){return this._isPaused}isRecordingCanvas(){return!!this._canvas}getOptions(){return this._options}handleException(e){Pt&&Dt.exception(e),this._options.onError&&this._options.onError(e)}initializeSampling(e){const{errorSampleRate:t,sessionSampleRate:r}=this._options,o=t<=0&&r<=0;if(this._requiresManualStart=o,!o){if(this._initializeSessionForSampling(e),!this.session){Pt&&Dt.exception(new Error("Unable to initialize and create session"));return}this.session.sampled!==!1&&(this.recordingMode=this.session.sampled==="buffer"&&this.session.segmentId===0?"buffer":"session",Pt&&Dt.infoTick(`Starting replay in ${this.recordingMode} mode`),this._initializeRecording())}}start(){if(this._isEnabled&&this.recordingMode==="session"){Pt&&Dt.log("Recording is already in progress");return}if(this._isEnabled&&this.recordingMode==="buffer"){Pt&&Dt.log("Buffering is in progress, call `flush()` to save the replay");return}Pt&&Dt.infoTick("Starting replay in session mode"),this._updateUserActivity();const e=Vy({maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire},{stickySession:this._options.stickySession,sessionSampleRate:1,allowBuffering:!1});this.session=e,this.recordingMode="session",this._initializeRecording()}startBuffering(){if(this._isEnabled){Pt&&Dt.log("Buffering is in progress, call `flush()` to save the replay");return}Pt&&Dt.infoTick("Starting replay in buffer mode");const e=Vy({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration},{stickySession:this._options.stickySession,sessionSampleRate:0,allowBuffering:!0});this.session=e,this.recordingMode="buffer",this._initializeRecording()}startRecording(){try{const e=this._canvas;this._stopRecording=as({...this._recordingOptions,...this.recordingMode==="buffer"?{checkoutEveryNms:QZ}:this._options._experiments.continuousCheckout&&{checkoutEveryNms:Math.max(36e4,this._options._experiments.continuousCheckout)},emit:one(this),...rne(),onMutation:this._onMutationHandler.bind(this),...e?{recordCanvas:e.recordCanvas,getCanvasManager:e.getCanvasManager,sampling:e.sampling,dataURLOptions:e.dataURLOptions}:{}})}catch(e){this.handleException(e)}}stopRecording(){try{return this._stopRecording&&(this._stopRecording(),this._stopRecording=void 0),!0}catch(e){return this.handleException(e),!1}}async stop({forceFlush:e=!1,reason:t}={}){var r;if(this._isEnabled){this._isEnabled=!1,this.recordingMode="buffer";try{Pt&&Dt.log(`Stopping Replay${t?` triggered by ${t}`:""}`),A5(),this._removeListeners(),this.stopRecording(),this._debouncedFlush.cancel(),e&&await this._flush({force:!0}),(r=this.eventBuffer)==null||r.destroy(),this.eventBuffer=null,nte(this)}catch(o){this.handleException(o)}}}pause(){this._isPaused||(this._isPaused=!0,this.stopRecording(),Pt&&Dt.log("Pausing replay"))}resume(){!this._isPaused||!this._checkSession()||(this._isPaused=!1,this.startRecording(),Pt&&Dt.log("Resuming replay"))}async sendBufferedReplayOrFlush({continueRecording:e=!0}={}){if(this.recordingMode==="session")return this.flushImmediate();const t=Date.now();Pt&&Dt.log("Converting buffer to session"),await this.flushImmediate();const r=this.stopRecording();!e||!r||this.recordingMode!=="session"&&(this.recordingMode="session",this.session&&(this._updateUserActivity(t),this._updateSessionActivity(t),this._maybeSaveSession()),this.startRecording())}addUpdate(e){const t=e();this.recordingMode==="buffer"||!this._isEnabled||t!==!0&&this._debouncedFlush()}triggerUserActivity(){if(this._updateUserActivity(),!this._stopRecording){if(!this._checkSession())return;this.resume();return}this.checkAndHandleExpiredSession(),this._updateSessionActivity()}updateUserActivity(){this._updateUserActivity(),this._updateSessionActivity()}conditionalFlush(){return this.recordingMode==="buffer"?Promise.resolve():this.flushImmediate()}flush(){return this._debouncedFlush()}flushImmediate(){return this._debouncedFlush(),this._debouncedFlush.flush()}cancelFlush(){this._debouncedFlush.cancel()}getSessionId(){var e;return(e=this.session)==null?void 0:e.id}checkAndHandleExpiredSession(){if(this._lastActivity&&Fy(this._lastActivity,this.timeouts.sessionIdlePause)&&this.session&&this.session.sampled==="session"){this.pause();return}return!!this._checkSession()}setInitialState(){const e=`${On.location.pathname}${On.location.hash}${On.location.search}`,t=`${On.location.origin}${e}`;this.performanceEntries=[],this.replayPerformanceEntries=[],this._clearContext(),this._context.initialUrl=t,this._context.initialTimestamp=Date.now(),this._context.urls.push(t)}throttledAddEvent(e,t){const r=this._throttledAddEvent(e,t);if(r===M5){const o=va({category:"replay.throttled"});this.addUpdate(()=>!Uy(this,{type:fee,timestamp:o.timestamp||0,data:{tag:"breadcrumb",payload:o,metric:!0}}))}return r}getCurrentRoute(){const e=this.lastActiveSpan||BA(),t=e&&rs(e),o=(t&&Jo(t).data||{})[Bf];if(!(!t||!o||!["route","custom"].includes(o)))return Jo(t).description}_initializeRecording(){this.setInitialState(),this._updateSessionActivity(),this.eventBuffer=Jee({useCompression:this._options.useCompression,workerUrl:this._options.workerUrl}),this._removeListeners(),this._addListeners(),this._isEnabled=!0,this._isPaused=!1,this.startRecording()}_initializeSessionForSampling(e){const t=this._options.errorSampleRate>0,r=Vy({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration,previousSessionId:e},{stickySession:this._options.stickySession,sessionSampleRate:this._options.sessionSampleRate,allowBuffering:t});this.session=r}_checkSession(){if(!this.session)return!1;const e=this.session;return p5(e,{sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration})?(this._refreshSession(e),!1):!0}async _refreshSession(e){this._isEnabled&&(await this.stop({reason:"refresh session"}),this.initializeSampling(e.id))}_addListeners(){try{On.document.addEventListener("visibilitychange",this._handleVisibilityChange),On.addEventListener("blur",this._handleWindowBlur),On.addEventListener("focus",this._handleWindowFocus),On.addEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.addListeners(),this._hasInitializedCoreListeners||(Jte(this),this._hasInitializedCoreListeners=!0)}catch(e){this.handleException(e)}this._performanceCleanupCallback=Qee(this)}_removeListeners(){try{On.document.removeEventListener("visibilitychange",this._handleVisibilityChange),On.removeEventListener("blur",this._handleWindowBlur),On.removeEventListener("focus",this._handleWindowFocus),On.removeEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.removeListeners(),this._performanceCleanupCallback&&this._performanceCleanupCallback()}catch(e){this.handleException(e)}}_doChangeToBackgroundTasks(e){!this.session||h5(this.session,{maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire})||(e&&this._createCustomBreadcrumb(e),this.conditionalFlush())}_doChangeToForegroundTasks(e){if(!this.session)return;if(!this.checkAndHandleExpiredSession()){Pt&&Dt.log("Document has become active, but session has expired");return}e&&this._createCustomBreadcrumb(e)}_updateUserActivity(e=Date.now()){this._lastActivity=e}_updateSessionActivity(e=Date.now()){this.session&&(this.session.lastActivity=e,this._maybeSaveSession())}_createCustomBreadcrumb(e){this.addUpdate(()=>{this.throttledAddEvent({type:Wt.Custom,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e}})})}_addPerformanceEntries(){let e=Oee(this.performanceEntries).concat(this.replayPerformanceEntries);if(this.performanceEntries=[],this.replayPerformanceEntries=[],this._requiresManualStart){const t=this._context.initialTimestamp/1e3;e=e.filter(r=>r.start>=t)}return Promise.all(Tg(this,e))}_clearContext(){this._context.errorIds.clear(),this._context.traceIds.clear(),this._context.urls=[]}_updateInitialTimestampFromEventBuffer(){const{session:e,eventBuffer:t}=this;if(!e||!t||this._requiresManualStart||e.segmentId)return;const r=t.getEarliestTimestamp();r&&rthis._options.maxReplayDuration+3e4)throw new Error("Session is too long, not sending replay");const o=this._popEventContext(),i=this.session.segmentId++;this._maybeSaveSession();const a=await this.eventBuffer.finish();await w5({replayId:e,recordingData:a,segmentId:i,eventContext:o,session:this.session,timestamp:r,onError:s=>this.handleException(s)})}catch(r){this.handleException(r),this.stop({reason:"sendReplay"});const o=Pn();if(o){const i=r instanceof Wy?"ratelimit_backoff":"send_error";o.recordDroppedEvent(i,"replay")}}}async _flush({force:e=!1}={}){if(!this._isEnabled&&!e)return;if(!this.checkAndHandleExpiredSession()){Pt&&Dt.error("Attempting to finish replay event after session expired.");return}if(!this.session)return;const t=this.session.started,o=Date.now()-t;this._debouncedFlush.cancel();const i=othis._options.maxReplayDuration+5e3;if(i||a){Pt&&Dt.log(`Session duration (${Math.floor(o/1e3)}s) is too ${i?"short":"long"}, not sending replay.`),i&&this._debouncedFlush();return}const s=this.eventBuffer;s&&this.session.segmentId===0&&!s.hasCheckout&&Pt&&Dt.log("Flushing initial segment without checkout.");const l=!!this._flushLock;this._flushLock||(this._flushLock=this._runFlush());try{await this._flushLock}catch(c){this.handleException(c)}finally{this._flushLock=void 0,l&&this._debouncedFlush()}}_maybeSaveSession(){this.session&&this._options.stickySession&&ky(this.session)}_onMutationHandler(e){const{ignoreMutations:t}=this._options._experiments;if(t!=null&&t.length&&e.some(s=>{const l=sne(s.target),c=t.join(",");return l==null?void 0:l.matches(c)}))return!1;const r=e.length,o=this._options.mutationLimit,i=this._options.mutationBreadcrumbLimit,a=o&&r>o;if(r>i||a){const s=va({category:"replay.mutations",data:{count:r,limit:a}});this._createCustomBreadcrumb(s)}return a?(this.stop({reason:"mutationLimit",forceFlush:this.recordingMode==="session"}),!1):!0}}function nh(n,e){return[...n,...e].join(",")}function mne({mask:n,unmask:e,block:t,unblock:r,ignore:o}){const i=["base","iframe[srcdoc]:not([src])"],a=nh(n,[".sentry-mask","[data-sentry-mask]"]),s=nh(e,[]);return{maskTextSelector:a,unmaskTextSelector:s,blockSelector:nh(t,[".sentry-block","[data-sentry-block]",...i]),unblockSelector:nh(r,[]),ignoreSelector:nh(o,[".sentry-ignore","[data-sentry-ignore]",'input[type="file"]'])}}function gne({el:n,key:e,maskAttributes:t,maskAllText:r,privacyOptions:o,value:i}){return!r||o.unmaskTextSelector&&n.matches(o.unmaskTextSelector)?i:t.includes(e)||e==="value"&&n.tagName==="INPUT"&&["submit","button"].includes(n.getAttribute("type")||"")?i.replace(/[\S]/g,"*"):i}const T5='img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]',_ne=["content-length","content-type","accept"];let I5=!1;const vne=(n=>new Ane(n));class Ane{constructor({flushMinDelay:e=WZ,flushMaxDelay:t=jZ,minReplayDuration:r=KZ,maxReplayDuration:o=v4,stickySession:i=!0,useCompression:a=!0,workerUrl:s,_experiments:l={},maskAllText:c=!0,maskAllInputs:u=!0,blockAllMedia:d=!0,mutationBreadcrumbLimit:f=750,mutationLimit:h=1e4,slowClickTimeout:p=7e3,slowClickIgnoreSelectors:m=[],networkDetailAllowUrls:g=[],networkDetailDenyUrls:_=[],networkCaptureBodies:A=!0,networkRequestHeaders:y=[],networkResponseHeaders:b=[],mask:E=[],maskAttributes:x=["title","placeholder","aria-label"],unmask:w=[],block:L=[],unblock:C=[],ignore:P=[],maskFn:D,beforeAddRecordingEvent:Q,beforeErrorSampling:re,onError:G}={}){this.name="Replay";const se=mne({mask:E,unmask:w,block:L,unblock:C,ignore:P});if(this._recordingOptions={maskAllInputs:u,maskAllText:c,maskInputOptions:{password:!0},maskTextFn:D,maskInputFn:D,maskAttributeFn:(ee,ie,H)=>gne({maskAttributes:x,maskAllText:c,privacyOptions:se,key:ee,value:ie,el:H}),...se,slimDOMOptions:"all",inlineStylesheet:!0,inlineImages:!1,collectFonts:!0,errorHandler:ee=>{try{ee.__rrweb__=!0}catch{}},recordCrossOriginIframes:!!l.recordCrossOriginIframes},this._initialOptions={flushMinDelay:e,flushMaxDelay:t,minReplayDuration:Math.min(r,ZZ),maxReplayDuration:Math.min(o,v4),stickySession:i,useCompression:a,workerUrl:s,blockAllMedia:d,maskAllInputs:u,maskAllText:c,mutationBreadcrumbLimit:f,mutationLimit:h,slowClickTimeout:p,slowClickIgnoreSelectors:m,networkDetailAllowUrls:g,networkDetailDenyUrls:_,networkCaptureBodies:A,networkRequestHeaders:R5(y),networkResponseHeaders:R5(b),beforeAddRecordingEvent:Q,beforeErrorSampling:re,onError:G,_experiments:l},this._initialOptions.blockAllMedia&&(this._recordingOptions.blockSelector=this._recordingOptions.blockSelector?`${this._recordingOptions.blockSelector},${T5}`:T5),this._isInitialized&&WI())throw new Error("Multiple Sentry Session Replay instances are not supported");this._isInitialized=!0}get _isInitialized(){return I5}set _isInitialized(e){I5=e}afterAllSetup(e){!WI()||this._replay||(this._setup(e),this._initialize(e))}start(){this._replay&&this._replay.start()}startBuffering(){this._replay&&this._replay.startBuffering()}stop(){return this._replay?this._replay.stop({forceFlush:this._replay.recordingMode==="session"}):Promise.resolve()}flush(e){return this._replay?this._replay.isEnabled()?this._replay.sendBufferedReplayOrFlush(e):(this._replay.start(),Promise.resolve()):Promise.resolve()}getReplayId(){var e;if((e=this._replay)!=null&&e.isEnabled())return this._replay.getSessionId()}getRecordingMode(){var e;if((e=this._replay)!=null&&e.isEnabled())return this._replay.recordingMode}_initialize(e){this._replay&&(this._maybeLoadFromReplayCanvasIntegration(e),this._replay.initializeSampling())}_setup(e){const t=yne(this._initialOptions,e);this._replay=new pne({options:t,recordingOptions:this._recordingOptions})}_maybeLoadFromReplayCanvasIntegration(e){try{const t=e.getIntegrationByName("ReplayCanvas");if(!t)return;this._replay._canvas=t.getOptions()}catch{}}}function yne(n,e){const t=e.getOptions(),r={sessionSampleRate:0,errorSampleRate:0,...n},o=Of(t.replaysSessionSampleRate),i=Of(t.replaysOnErrorSampleRate);return o==null&&i==null&&Ja(()=>{console.warn("Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.")}),o!=null&&(r.sessionSampleRate=o),i!=null&&(r.errorSampleRate=i),r}function R5(n){return[..._ne,...n.map(e=>e.toLowerCase())]}var bne=Object.defineProperty,xne=(n,e,t)=>e in n?bne(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L5=(n,e,t)=>xne(n,typeof e!="symbol"?e+"":e,t);class Ene{constructor(){L5(this,"idNodeMap",new Map),L5(this,"nodeMetaMap",new WeakMap)}getId(e){var r;return e?((r=this.getMeta(e))==null?void 0:r.id)??-1:-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(r=>this.removeNodeFromMap(r))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)}replace(e,t){const r=this.getNode(e);if(r){const o=this.nodeMetaMap.get(r);o&&this.nodeMetaMap.set(t,o)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function Cne(){return new Ene}function Sne(n,e){for(let t=n.classList.length;t--;){const r=n.classList[t];if(e.test(r))return!0}return!1}function jy(n,e,t=1/0,r=0){return!n||n.nodeType!==n.ELEMENT_NODE||r>t?-1:e(n)?r:jy(n.parentNode,e,t,r+1)}function P5(n,e){return t=>{const r=t;if(r===null)return!1;try{if(n){if(typeof n=="string"){if(r.matches(`.${n}`))return!0}else if(Sne(r,n))return!0}return!!(e&&r.matches(e))}catch{return!1}}}const Au=`Please stop import mirror directly. Instead of that,\r +now you can use replayer.getMirror() to access the mirror instance of a replayer,\r +or you can use record.mirror to access the mirror instance during recording.`;let D5={map:{},getId(){return console.error(Au),-1},getNode(){return console.error(Au),null},removeNodeFromMap(){console.error(Au)},has(){return console.error(Au),!1},reset(){console.error(Au)}};typeof window<"u"&&window.Proxy&&window.Reflect&&(D5=new Proxy(D5,{get(n,e,t){return e==="map"&&console.error(Au),Reflect.get(n,e,t)}}));function Qy(n,e,t,r,o=window){const i=o.Object.getOwnPropertyDescriptor(n,e);return o.Object.defineProperty(n,e,r?t:{set(a){O5(()=>{t.set.call(this,a)},0),i&&i.set&&i.set.call(this,a)}}),()=>Qy(n,e,i||{},!0)}function $y(n,e,t){try{if(!(e in n))return()=>{};const r=n[e],o=t(r);return typeof o=="function"&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),n[e]=o,()=>{n[e]=r}}catch{return()=>{}}}Date.now().toString();function wne(n){if(!n)return null;try{return n.nodeType===n.ELEMENT_NODE?n:n.parentElement}catch{return null}}function Pg(n,e,t,r,o){if(!n)return!1;const i=wne(n);if(!i)return!1;const a=P5(e,t),s=jy(i,a);let l=-1;return s<0?!1:(r&&(l=jy(i,P5(null,r))),s>-1&&l<0?!0:s(n[n["2D"]=0]="2D",n[n.WebGL=1]="WebGL",n[n.WebGL2=2]="WebGL2",n))(yu||{});let Dg;function Mne(n){Dg=n}const Yy=n=>Dg?(...t)=>{try{return n(...t)}catch(r){if(Dg&&Dg(r)===!0)return()=>{};throw r}}:n;for(var bu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Tne=typeof Uint8Array>"u"?[]:new Uint8Array(256),Bg=0;Bg>2],o+=bu[(e[t]&3)<<4|e[t+1]>>4],o+=bu[(e[t+1]&15)<<2|e[t+2]>>6],o+=bu[e[t+2]&63];return r%3===2?o=o.substring(0,o.length-1)+"=":r%3===1&&(o=o.substring(0,o.length-2)+"=="),o};const k5=new Map;function Rne(n,e){let t=k5.get(n);return t||(t=new Map,k5.set(n,t)),t.has(e)||t.set(e,[]),t.get(e)}const F5=(n,e,t)=>{if(!n||!(U5(n,e)||typeof n=="object"))return;const r=n.constructor.name,o=Rne(t,r);let i=o.indexOf(n);return i===-1&&(i=o.length,o.push(n)),i};function Ng(n,e,t){if(n instanceof Array)return n.map(r=>Ng(r,e,t));if(n===null)return n;if(n instanceof Float32Array||n instanceof Float64Array||n instanceof Int32Array||n instanceof Uint32Array||n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Int16Array||n instanceof Int8Array||n instanceof Uint8ClampedArray)return{rr_type:n.constructor.name,args:[Object.values(n)]};if(n instanceof ArrayBuffer){const r=n.constructor.name,o=Ine(n);return{rr_type:r,base64:o}}else{if(n instanceof DataView)return{rr_type:n.constructor.name,args:[Ng(n.buffer,e,t),n.byteOffset,n.byteLength]};if(n instanceof HTMLImageElement){const r=n.constructor.name,{src:o}=n;return{rr_type:r,src:o}}else if(n instanceof HTMLCanvasElement){const r="HTMLImageElement",o=n.toDataURL();return{rr_type:r,src:o}}else{if(n instanceof ImageData)return{rr_type:n.constructor.name,args:[Ng(n.data,e,t),n.width,n.height]};if(U5(n,e)||typeof n=="object"){const r=n.constructor.name,o=F5(n,e,t);return{rr_type:r,index:o}}}}return n}const V5=(n,e,t)=>n.map(r=>Ng(r,e,t)),U5=(n,e)=>!!["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(o=>typeof e[o]=="function").find(o=>n instanceof e[o]);function Lne(n,e,t,r,o){const i=[],a=Object.getOwnPropertyNames(e.CanvasRenderingContext2D.prototype);for(const s of a)try{if(typeof e.CanvasRenderingContext2D.prototype[s]!="function")continue;const l=$y(e.CanvasRenderingContext2D.prototype,s,function(c){return function(...u){return Pg(this.canvas,t,r,o,!0)||O5(()=>{const d=V5(u,e,this);n(this.canvas,{type:yu["2D"],property:s,args:d})},0),c.apply(this,u)}});i.push(l)}catch{const l=Qy(e.CanvasRenderingContext2D.prototype,s,{set(c){n(this.canvas,{type:yu["2D"],property:s,args:[c],setter:!0})}});i.push(l)}return()=>{i.forEach(s=>s())}}function Pne(n){return n==="experimental-webgl"?"webgl":n}function z5(n,e,t,r,o){const i=[];try{const a=$y(n.HTMLCanvasElement.prototype,"getContext",function(s){return function(l,...c){if(!Pg(this,e,t,r,!0)){const u=Pne(l);if("__context"in this||(this.__context=u),o&&["webgl","webgl2"].includes(u))if(c[0]&&typeof c[0]=="object"){const d=c[0];d.preserveDrawingBuffer||(d.preserveDrawingBuffer=!0)}else c.splice(0,1,{preserveDrawingBuffer:!0})}return s.apply(this,[l,...c])}});i.push(a)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{i.forEach(a=>a())}}function G5(n,e,t,r,o,i,a,s){const l=[],c=Object.getOwnPropertyNames(n);for(const u of c)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(u))try{if(typeof n[u]!="function")continue;const d=$y(n,u,function(f){return function(...h){const p=f.apply(this,h);if(F5(p,s,this),"tagName"in this.canvas&&!Pg(this.canvas,r,o,i,!0)){const m=V5(h,s,this),g={type:e,property:u,args:m};t(this.canvas,g)}return p}});l.push(d)}catch{const d=Qy(n,u,{set(f){t(this.canvas,{type:e,property:u,args:[f],setter:!0})}});l.push(d)}return l}function Dne(n,e,t,r,o,i){const a=[];return a.push(...G5(e.WebGLRenderingContext.prototype,yu.WebGL,n,t,r,o,i,e)),typeof e.WebGL2RenderingContext<"u"&&a.push(...G5(e.WebGL2RenderingContext.prototype,yu.WebGL2,n,t,r,o,i,e)),()=>{a.forEach(s=>s())}}const Bne='for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="undefined"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s="";for(a=0;a>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+"=":r%3==1&&(s=s.substring(0,s.length-2)+"=="),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!("OffscreenCanvas"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+"-"+t;if("OffscreenCanvas"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext("2d");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return""}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext("bitmaprenderer"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:"low"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};';function Nne(){const n=new Blob([Bne]);return URL.createObjectURL(n)}class One{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.shadowDoms=new Set,this.windowsSet=new WeakSet,this.windows=[],this.restoreHandlers=[],this.frozen=!1,this.locked=!1,this.snapshotInProgressMap=new Map,this.worker=null,this.lastSnapshotTime=0,this.processMutation=(d,f)=>{(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId||!this.rafStamps.invokeId)&&(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(d)||this.pendingCanvasMutations.set(d,[]),this.pendingCanvasMutations.get(d).push(f)};const{sampling:t="all",win:r,blockClass:o,blockSelector:i,unblockSelector:a,maxCanvasSize:s,recordCanvas:l,dataURLOptions:c,errorHandler:u}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,this.options=e,u&&Mne(u),(l&&typeof t=="number"||e.enableManualSnapshot)&&(this.worker=this.initFPSWorker()),this.addWindow(r),!e.enableManualSnapshot&&Yy(()=>{l&&t==="all"&&(this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher()),l&&typeof t=="number"&&this.initCanvasFPSObserver(t,o,i,a,s,{dataURLOptions:c})})()}reset(){var e;this.pendingCanvasMutations.clear(),this.restoreHandlers.forEach(t=>{try{t()}catch{}}),this.restoreHandlers=[],this.windowsSet=new WeakSet,this.windows=[],this.shadowDoms=new Set,(e=this.worker)==null||e.terminate(),this.worker=null,this.snapshotInProgressMap=new Map}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}addWindow(e){const{sampling:t="all",blockClass:r,blockSelector:o,unblockSelector:i,recordCanvas:a,enableManualSnapshot:s}=this.options;if(!this.windowsSet.has(e)){if(s){this.windowsSet.add(e),this.windows.push(new WeakRef(e));return}Yy(()=>{if(a&&t==="all"&&this.initCanvasMutationObserver(e,r,o,i),a&&typeof t=="number"){const l=z5(e,r,o,i,!0);this.restoreHandlers.push(()=>{l()})}})(),this.windowsSet.add(e),this.windows.push(new WeakRef(e))}}addShadowRoot(e){this.shadowDoms.add(new WeakRef(e))}resetShadowRoots(){this.shadowDoms=new Set}initFPSWorker(){const e=new Worker(Nne());return e.onmessage=t=>{const r=t.data,{id:o}=r;if(this.snapshotInProgressMap.set(o,!1),!("base64"in r))return;const{base64:i,type:a,width:s,height:l}=r;this.mutationCb({id:o,type:yu["2D"],commands:[{property:"clearRect",args:[0,0,s,l]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:i}],type:a}]},0,0,s,l]}]})},e}initCanvasFPSObserver(e,t,r,o,i,a){const s=this.takeSnapshot(!1,e,t,r,o,i,a.dataURLOptions);this.restoreHandlers.push(()=>{cancelAnimationFrame(s)})}initCanvasMutationObserver(e,t,r,o){const i=z5(e,t,r,o,!1),a=Lne(this.processMutation.bind(this),e,t,r,o),s=Dne(this.processMutation.bind(this),e,t,r,o,this.mirror);this.restoreHandlers.push(()=>{i(),a(),s()})}snapshot(e){const{options:t}=this,r=this.takeSnapshot(!0,t.sampling==="all"?2:t.sampling||2,t.blockClass,t.blockSelector,t.unblockSelector,t.maxCanvasSize,t.dataURLOptions,e);this.restoreHandlers.push(()=>{cancelAnimationFrame(r)})}takeSnapshot(e,t,r,o,i,a,s,l){const c=1e3/t;let u;const d=h=>{if(h)return[h];const p=[],m=g=>{g.querySelectorAll("canvas").forEach(_=>{Pg(_,r,o,i)||p.push(_)})};for(const g of this.windows){const _=g.deref();let A;try{A=_&&_.document}catch{}A&&m(A)}for(const g of this.shadowDoms){const _=g.deref();_&&m(_)}return p},f=h=>{if(this.windows.length){if(this.lastSnapshotTime&&h-this.lastSnapshotTime{var g;if(!this.mirror.hasNode(p))return;const m=this.mirror.getId(p);if(!this.snapshotInProgressMap.get(m)&&!(!p.width||!p.height)){if(this.snapshotInProgressMap.set(m,!0),!e&&["webgl","webgl2"].includes(p.__context)){const _=p.getContext(p.__context);((g=_==null?void 0:_.getContextAttributes())==null?void 0:g.preserveDrawingBuffer)===!1&&_.clear(_.COLOR_BUFFER_BIT)}createImageBitmap(p).then(_=>{var A;(A=this.worker)==null||A.postMessage({id:m,bitmap:_,width:p.width,height:p.height,dataURLOptions:s,maxCanvasSize:a},[_])}).catch(_=>{Yy(()=>{throw _})()})}}),e||(u=Xl(f))}};return u=Xl(f),u}startPendingCanvasMutationFlusher(){Xl(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,Xl(e)};Xl(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{const r=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,r)}),Xl(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const r=this.pendingCanvasMutations.get(e);if(!r||t===-1)return;const o=r.map(a=>{const{type:s,...l}=a;return l}),{type:i}=r[0];this.mutationCb({id:t,type:i,commands:o}),this.pendingCanvasMutations.delete(e)}}try{if(Array.from([1],n=>n*2)[0]!==2){const n=document.createElement("iframe");document.body.appendChild(n),Array.from=((yN=n.contentWindow)==null?void 0:yN.Array.from)||Array.from,document.body.removeChild(n)}}catch(n){console.debug("Unable to override Array.from",n)}Cne();var H5;(function(n){n[n.NotStarted=0]="NotStarted",n[n.Running=1]="Running",n[n.Stopped=2]="Stopped"})(H5||(H5={}));const W5={low:{sampling:{canvas:1},dataURLOptions:{type:"image/webp",quality:.25}},medium:{sampling:{canvas:2},dataURLOptions:{type:"image/webp",quality:.4}},high:{sampling:{canvas:4},dataURLOptions:{type:"image/webp",quality:.5}}},kne="ReplayCanvas",Og=1280,Fne=((n={})=>{const[e,t]=n.maxCanvasSize||[],r={quality:n.quality||"medium",enableManualSnapshot:n.enableManualSnapshot,maxCanvasSize:[e?Math.min(e,Og):Og,t?Math.min(t,Og):Og]};let o;const i=new Promise(a=>o=a);return{name:kne,getOptions(){const{quality:a,enableManualSnapshot:s,maxCanvasSize:l}=r;return{enableManualSnapshot:s,recordCanvas:!0,getCanvasManager:c=>{const u=new One({...c,enableManualSnapshot:s,maxCanvasSize:l,errorHandler:d=>{try{typeof d=="object"&&(d.__rrweb__=!0)}catch{}}});return o(u),u},...W5[a]||W5.medium}},async snapshot(a){(await i).snapshot(a)}}}),j5=["activate","mount"],Q5=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Vne=/(?:^|[-_])(\w)/g,Une=n=>n.replace(Vne,e=>e.toUpperCase()).replace(/[-_]/g,""),zne="",Xy="",Gne=(n,e)=>n.repeat(e),rh=(n,e)=>{if(!n)return Xy;if(n.$root===n)return zne;if(!n.$options)return Xy;const t=n.$options;let r=t.name||t._componentTag||t.__name;const o=t.__file;if(!r&&o){const i=o.match(/([^/\\]+)\.vue$/);i&&(r=i[1])}return(r?`<${Une(r)}>`:Xy)+(o&&e!==!1?` at ${o}`:"")},Hne=n=>{if(n&&(n._isVue||n.__isVue)&&n.$parent){const e=[];let t=0;for(;n;){if(e.length>0){const o=e[e.length-1];if(o.constructor===n.constructor){t++,n=n.$parent;continue}else t>0&&(e[e.length-1]=[o,t],t=0)}e.push(n),n=n.$parent}return` + +found in + +${e.map((o,i)=>`${(i===0?"---> ":Gne(" ",5+i*2))+(Array.isArray(o)?`${rh(o[0])}... (${o[1]} recursive calls)`:rh(o))}`).join(` +`)}`}return` + +(found in ${rh(n)})`},Wne=(n,e)=>{const{errorHandler:t}=n.config;n.config.errorHandler=(r,o,i)=>{var c;const a=rh(o,!1),s=o?Hne(o):"",l={componentName:a,lifecycleHook:i,trace:s};if(e.attachProps&&o&&((c=o.$options)!=null&&c.propsData?l.propsData=o.$options.propsData:o.$props&&(l.propsData=o.$props)),setTimeout(()=>{jA(r,{captureContext:{contexts:{vue:l}},mechanism:{handled:!!t,type:"vue"}})}),typeof t=="function"&&n.config.errorHandler)t.call(n,r,o,i);else throw r}},$5="ui.vue",jne={activate:["activated","deactivated"],create:["beforeCreate","created"],unmount:["beforeUnmount","unmounted"],destroy:["beforeDestroy","destroyed"],mount:["beforeMount","mounted"],update:["beforeUpdate","updated"]};function qy(n,e,t){n.$_sentryRootComponentSpanTimer&&clearTimeout(n.$_sentryRootComponentSpanTimer),n.$_sentryRootComponentSpanTimer=setTimeout(()=>{var r;(r=n.$root)!=null&&r.$_sentryRootComponentSpan&&(n.$root.$_sentryRootComponentSpan.end(e),n.$root.$_sentryRootComponentSpan=void 0)},t)}function Qne(n,e){function t(o){return o.replace(/^<([^\s]*)>(?: at [^\s]*)?$/,"$1")}return n.some(o=>t(e)===t(o))}const $ne=(n={})=>{const e=(n.hooks||[]).concat(j5).filter((o,i,a)=>a.indexOf(o)===i),t={},r=n.timeout||2e3;for(const o of e){const i=jne[o];if(!i){Q5&<.warn(`Unknown hook: ${o}`);continue}for(const a of i)t[a]=function(){var f;const s=this.$root===this;s&&(this.$_sentryRootComponentSpan=this.$_sentryRootComponentSpan||rI({name:"Application Render",op:`${$5}.render`,attributes:{[Nf]:"auto.ui.vue"},onlyIfParent:!0}),qy(this,ko(),r));const l=rh(this,!1);if(!(s||(Array.isArray(n.trackComponents)?Qne(n.trackComponents,l):n.trackComponents))){qy(this,ko(),r);return}this.$_sentryComponentSpans=this.$_sentryComponentSpans||{};const u=a===i[0],d=((f=this.$root)==null?void 0:f.$_sentryRootComponentSpan)||BA();if(u){if(d){const h=this.$_sentryComponentSpans[o];h&&h.end(),this.$_sentryComponentSpans[o]=rI({name:`Vue ${l}`,op:`${$5}.${o}`,attributes:{[Nf]:"auto.ui.vue"},onlyIfParent:!0})}}else{const h=this.$_sentryComponentSpans[o];if(!h)return;h.end(),qy(this,ko(),r)}}}return t},Yne={Vue:hn.Vue,attachProps:!0,attachErrorHandler:!0,tracingOptions:{hooks:j5,timeout:2e3,trackComponents:!1}},Xne="Vue",qne=(n={})=>({name:Xne,setup(e){const t={...Yne,...e.getOptions(),...n};if(!t.Vue&&!t.app){Ja(()=>{console.warn("[@sentry/vue]: Misconfigured SDK. Vue specific errors will not be captured. Update your `Sentry.init` call with an appropriate config option: `app` (Application Instance - Vue 3) or `Vue` (Vue Constructor - Vue 2).")});return}t.app?(Array.isArray(t.app)?t.app:[t.app]).forEach(o=>Y5(o,t)):t.Vue&&Y5(t.Vue,t)}}),Y5=(n,e)=>{var t;Q5&&((t=n._instance)==null?void 0:t.isMounted)===!0&&Ja(()=>{console.warn("[@sentry/vue]: Misconfigured SDK. Vue app is already mounted. Make sure to call `app.mount()` after `Sentry.init()`.")}),e.attachErrorHandler&&Wne(n,e),jm(e)&&n.mixin($ne(e.tracingOptions))};function Kne(n={}){const e={defaultIntegrations:[...g4(),qne()],...n};return PI(e,"vue"),UZ(e)}const Zne={class:"flex items-center cursor-pointer justify-between"},Jne={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},ere={key:1,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},tre={class:"text-[15px] md:text-base font-normal leading-loose ms-3","data-label":""},nre={class:"flex items-center"},rre={__name:"FormRadioButton",props:{setValueOnClick:{type:[String,Number],default:""},labelDescription:{type:String,default:""},tooltipTitle:{type:String,default:""},tooltipDescription:{type:String,default:""},tooltipImage:{type:String,default:""},modelValue:String},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(o){t("update:modelValue",o),Lr.emit("configuratorUserInput")}return(o,i)=>{const a=Yt("InfoPopup");return he(),ye("div",Zne,[K("div",{class:"flex items-center",onClick:i[0]||(i[0]=s=>r(n.setValueOnClick))},[n.modelValue==n.setValueOnClick?(he(),ye("svg",Jne,[...i[1]||(i[1]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",fill:"#F0F3F3",stroke:"#2B3937"},null,-1),K("rect",{x:"3",y:"3",width:"10",height:"10",rx:"5",fill:"#2B3937"},null,-1)])])):(he(),ye("svg",ere,[...i[2]||(i[2]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",fill:"#F0F3F3",stroke:"#E1E5E5"},null,-1)])])),K("span",tre,Ae(n.labelDescription),1)]),K("div",nre,[Be(a,{title:n.tooltipTitle,text:n.tooltipDescription,imageSrc:n.tooltipImage},null,8,["title","text","imageSrc"])])])}}},ore=["data-option"],ire={class:"text-secundary-green transition-colors duration-300 relative inline-block"},are=["data-value","src","alt","title"],sre={key:0,class:"absolute inset-0 rounded-md pointer-events-none border-[3px] border-[rgba(0,0,0,0.4)]"},lre={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},cre={key:1,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},ure={class:"ml-2 text-tertiary-green text-[15px] font-normal"},dre={__name:"FormRadioButtonImage",props:{setValueOnClick:{type:[String,Number],default:""},labelDescription:{type:String,default:""},tooltipDescription:{type:String,default:""},imageSrc:{type:String,default:""},imageRatio:{type:String,default:""},visible:{type:Boolean,default:!0},active:{type:Boolean,default:!0},tooltipTitle:{type:String,default:null},tooltipImage:{type:String,default:null},index:{type:Number,default:0},modelValue:String},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e;function o(l){r("update:modelValue",l),Lr.emit("configuratorUserInput")}const i=bt(()=>{if(t.index===0)return"left";const l=t.index%3;return l===1?"right":l===2?"bottom":"left"}),a=bt(()=>hr.versionedUrl(t.imageSrc)),s=bt(()=>hr.versionedUrl(t.tooltipImage));return(l,c)=>{const u=Yt("InfoPopup");return n.visible&&n.active?(he(),ye("div",{key:0,class:"cursor-pointer","data-option":n.setValueOnClick},[K("div",{onClick:c[1]||(c[1]=d=>o(n.setValueOnClick))},[K("div",ire,[K("img",{class:Qt(["rounded-md block",[n.imageRatio!==""?n.imageRatio:""]]),"data-value":n.setValueOnClick,src:a.value,alt:n.labelDescription,title:n.labelDescription},null,10,are),n.modelValue==n.setValueOnClick?(he(),ye("div",sre)):Pe("",!0)]),K("label",{class:"flex items-center cursor-pointer py-1",onClick:c[0]||(c[0]=d=>o(n.setValueOnClick))},[n.modelValue==n.setValueOnClick?(he(),ye("svg",lre,[...c[2]||(c[2]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",fill:"#F0F3F3",stroke:"#2B3937"},null,-1),K("rect",{x:"3",y:"3",width:"10",height:"10",rx:"5",fill:"#2B3937"},null,-1)])])):(he(),ye("svg",cre,[...c[3]||(c[3]=[K("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",fill:"#F0F3F3",stroke:"#E1E5E5"},null,-1)])])),K("span",ure,Ae(n.labelDescription),1)])]),n.tooltipTitle?(he(),gt(u,{key:0,title:n.tooltipTitle,text:n.tooltipDescription,imageSrc:s.value,tooltipPosition:i.value},null,8,["title","text","imageSrc","tooltipPosition"])):Pe("",!0)],8,ore)):Pe("",!0)}}},fre=["data-value"],hre=["for"],pre={class:"col-sm-12"},mre=["type","value"],gre={__name:"FormInput",props:{dataName:{type:String,default:""},labelDescription:{type:String,default:""},inputType:{type:String,default:"number"},modelValue:[Number,String]},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(o){t("update:modelValue",o),Lr.emit("configuratorUserInput")}return(o,i)=>(he(),ye("div",{class:"row FormInput","data-value":n.dataName},[K("label",{for:n.dataName,class:"col-sm-12 col-form-label"},Ae(n.labelDescription),9,hre),K("div",pre,[K("input",{type:n.inputType,class:"border-0 w-full rounded-sm bg-background-light p-2 text-[15px] lg:text-base font-normal focus:outline-hidden",value:n.modelValue,onInput:i[0]||(i[0]=a=>r(a.target.value))},null,40,mre)])],8,fre))}},_re={class:"font-normal text-base leading-[2]"},vre={class:"flex"},Are=["min","max","value"],yre={__name:"FormInputCm",props:bE({labelDescription:{type:String,default:""},min:{type:Number,default:-1/0},max:{type:Number,default:1/0}},{modelValue:{type:[String,Number]},modelModifiers:{}}),emits:bE(["update:modelValue"],["update:modelValue"]),setup(n,{emit:e}){const t=t7(n,"modelValue"),r=e,o=vt(t.value??"");dr(()=>t.value,a=>{o.value=a??""});function i(a){a!==t.value&&(r("update:modelValue",a),Lr.emit("configuratorUserInput"))}return(a,s)=>(he(),ye("div",null,[K("div",_re,Ae(n.labelDescription),1),K("div",vre,[K("input",{type:"number",class:"h-11 lg:h-12 rounded-none rounded-s-sm bg-background-light border-0 text-secondary-green block flex-1 min-w-0 w-full p-1 px-4 text-[15px] lg:text-base font-normal focus:outline-hidden",min:n.min,max:n.max,step:"1",value:o.value,onChange:s[0]||(s[0]=l=>i(l.target.value))},null,40,Are),s[1]||(s[1]=K("span",{class:"flex h-11 w-10 lg:h-12 lg:w-15 items-center justify-center text-center rounded-s-0 border-0 rounded-e-sm bg-[#E0E5E5] text-secondary-green text-[15px] lg:text-base font-normal"}," cm ",-1))])]))}},bre={class:"mb-3"},xre=["id","name","placeholder","value"],Ere={__name:"FormInputTextarea",props:{dataName:{type:String,default:""},labelDescription:{type:String,default:""},modelValue:[Number,String]},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(o){t("update:modelValue",o),Lr.emit("configuratorUserInput")}return(o,i)=>(he(),ye("div",bre,[K("textarea",{class:"border-0 w-full rounded-sm bg-background-light p-2 text-[15px] lg:text-base font-normal focus:outline-hidden",id:n.dataName,name:n.dataName,placeholder:n.labelDescription,value:n.modelValue,onInput:i[0]||(i[0]=a=>r(a.target.value))},null,40,xre)]))}},Cre={key:0,class:"inline-flex rounded-md bg-background-light",role:"group","aria-label":""},Sre=["onClick"],wre={__name:"FormButtonGroupQuantity",props:{minCount:{type:Number,default:1},maxCount:{type:Number,default:1},modelValue:[String,Number]},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e;function o(a){at.maxCount&&(a=t.maxCount),r("update:modelValue",a),Lr.emit("configuratorUserInput")}function i(a,s){return Array.from({length:s-a+1},(l,c)=>a+c)}return(a,s)=>{const l=Yt("Tooltip");return n.maxCount>=1&&n.maxCount>=n.minCount?(he(),ye("div",Cre,[(he(!0),ye(Nt,null,Xn(i(n.minCount,n.maxCount),c=>(he(),ye("div",null,[Be(l,{title:"",position:"bottom"},{default:ot(()=>[K("button",{class:Qt(["cursor-pointer w-buttonwidth-sm md:w-buttonwidth-md lg:w-buttonwidth-lg h-buttonheight-sm md:h-buttonheight-md lg:h-buttonheight-lg rounded-md hover:bg-secondary-green hover:text-white transition text-base font-normal",c==n.modelValue?"bg-button-active-dark text-white":"bg-background-light text-tertiary-green"]),onClick:u=>o(c)},Ae(c),11,Sre)]),_:2},1024)]))),256))])):Pe("",!0)}}},Mre={key:0,class:"inline-flex rounded-md bg-background-light"},Tre=["onClick"],Ire={__name:"FormButtonGroupChoice",props:{options:{type:Array,default:[]},modelValue:[String,Number]},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e;function o(i){r("update:modelValue",i),Lr.emit("configuratorUserInput")}return dr(()=>t.modelValue,(i,a)=>{}),(i,a)=>{const s=Yt("Tooltip");return n.options.length?(he(),ye("div",Mre,[(he(!0),ye(Nt,null,Xn(n.options,(l,c)=>(he(),ye("div",{key:c},[Be(s,{title:l.tooltip??"",position:"bottom"},{default:ot(()=>[K("button",{class:Qt(["cursor-pointer w-buttonwidth-sm md:w-buttonwidth-md lg:w-buttonwidth-lg h-buttonheight-sm md:h-buttonheight-md lg:h-buttonheight-lg rounded-md hover:bg-secondary-green hover:text-white transition text-base font-normal",l.value==n.modelValue?"bg-button-active-dark text-white":"bg-background-light text-tertiary-green"]),onClick:u=>o(l.value)},Ae(l.label),11,Tre)]),_:2},1032,["title"])]))),128))])):Pe("",!0)}}},Rre={},Lre={class:"font-medium text-base leading-[1.2] pb-4"};function Pre(n,e){return he(),ye("div",Lre,[Ro(n.$slots,"default")])}const Dre=zi(Rre,[["render",Pre]]),Bre={__name:"FormDefaultValue",props:{defaultValue:{type:[Number,String,Boolean]},modelValue:[Number,String,Boolean]},emits:["update:modelValue"],setup(n,{emit:e}){const t=n;$o(()=>{r("update:modelValue",t.defaultValue)});const r=e;return(o,i)=>null}},Nre={class:"text-base font-normal truncate"},Ore=["onClick"],kre={class:"text-base font-normal"},Fre=zi({__name:"FormDropdown",props:{options:{type:Array,required:!0},modelValue:{type:[Number,String,Object],required:!0},mode:{type:String,default:"light",validator:n=>["light","dark"].includes(n)}},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e,o=bt(()=>t.options.find(m=>{var g;return typeof t.modelValue=="object"?m.value===((g=t.modelValue)==null?void 0:g.value):m.value===t.modelValue})),i=vt(!1),a=vt(null),s=bt(()=>t.mode==="dark"),l=bt(()=>["pl-4 pr-2 py-2 cursor-pointer select-none flex items-center justify-between w-full h-12 sm:h-12",i.value?"rounded-t-md":"rounded-md",s.value?(i.value,"bg-popup-input text-white"):i.value?"bg-background-light text-tertiary-green border border-gray-200":"bg-white text-tertiary-green border border-gray-200"]),c=bt(()=>["absolute top-full z-50 w-full rounded-b-md shadow-lg overflow-auto max-h-60",s.value?"bg-popup-input":"bg-white border"]),u=bt(()=>["items-center h-full",s.value?"text-white":"text-tertiary-green"]),d=bt(()=>["flex px-5 h-12 cursor-pointer items-center justify-between",s.value?"hover:bg-background-light hover:text-tertiary-green":"hover:bg-gray-100"]),f=m=>{i.value=!i.value,m==null||m.preventDefault(),console.log("Dropdown toggled:",i.value)},h=m=>{a.value&&!a.value.contains(m.target)&&(i.value=!1)},p=m=>{i.value=!1,Va(()=>{r("update:modelValue",m.value),Lr.emit("configuratorUserInput")})};return $o(()=>document.addEventListener("click",h)),Fc(()=>document.removeEventListener("click",h)),(m,g)=>{var _;return he(),ye("div",{class:"relative",ref_key:"dropdown",ref:a},[K("button",{class:Qt(l.value),onPointerdown:ja(f,["stop","prevent"]),id:"dropdownButton"},[K("span",Nre,Ae(((_=o.value)==null?void 0:_.label)||"Selecteer een optie"),1),(he(),ye("svg",{class:Qt(["w-4 h-4 mx-2 transition-transform duration-800",{"rotate-180":i.value}]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...g[0]||(g[0]=[K("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))],34),Be(Ll,{name:"dropdown-fade"},{default:ot(()=>[i.value?(he(),ye("div",{key:0,id:"dropdownMenu",class:Qt(c.value)},[K("ul",{class:Qt(u.value)},[(he(!0),ye(Nt,null,Xn(n.options,(A,y)=>(he(),ye("li",{key:y,class:Qt(d.value),onClick:ja(b=>p(A),["stop"])},[K("span",kre,Ae(A.label),1)],10,Ore))),128))],2)],2)):Pe("",!0)]),_:1})],512)}}},[["__scopeId","data-v-1c0bf501"]]),Vre=["title"],Ure={__name:"FormButtonImageSvg",props:{setValueOnClick:{type:[String,Number],default:""},labelDescription:{type:String,default:""},tooltipDescription:{type:String,default:""},imageSrc:{type:String,default:""},modelValue:String},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(o){t("update:modelValue",o),Lr.emit("configuratorUserInput")}return UE(()=>{}),$o(()=>{}),(o,i)=>(he(),ye("div",{class:Qt(["flex-none rounded-md w-[50px] h-[75px] hover:text-background-light hover:bg-tertiary-green transition-colors duration-300 items-center justify-center cursor-pointer",n.setValueOnClick==n.modelValue?"bg-tertiary-green text-background-light":"bg-background-light text-tertiary-green"]),onClick:i[0]||(i[0]=a=>r(n.setValueOnClick)),title:n.labelDescription},[Ro(o.$slots,"default")],10,Vre))}},zre={class:"inline-flex rounded-md bg-background-light"},Gre=["onClick"],Hre={__name:"FormSegmentedControl",props:{options:{type:Object,required:!0},modelValue:[String,Number,Boolean]},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(o){t("update:modelValue",o),Lr.emit("configuratorUserInput")}return(o,i)=>{const a=Yt("Tooltip");return he(),ye("div",zre,[(he(!0),ye(Nt,null,Xn(n.options,(s,l)=>(he(),ye("div",{key:l},[Be(a,{title:s.tooltip??"",position:"bottom"},{default:ot(()=>[K("button",{class:Qt(["cursor-pointer h-buttonheight-sm md:h-buttonheight-md lg:h-buttonheight-lg rounded-md px-4 py-2 hover:bg-dropdown-open hover:text-white transition text-base font-normal",s.value==n.modelValue?"bg-secondary-green text-white":"bg-background-light text-tertiary-green"]),onClick:c=>r(s.value)},Ae(s.label),11,Gre)]),_:2},1032,["title"])]))),128))])}}},Wre={class:"flex flex-col-reverse md:flex-col"},jre={key:0,class:"flex text-white"},Qre={class:"text-white text-base font-normal mr-2"},$re={class:"text-white text-[26px] md:text-[28px] xl:text-[32px] font-bold"},Yre={class:"hidden md:inline-block text-xs font-normal ms-2"},Xre={class:"inline-block md:hidden text-xs font-normal ms-1"},qre={class:"block md:hidden text-xs font-normal ms-0"},Kre={class:"flex flex-row space-x-2 min-[400px]:space-x-4"},Zre={class:"ml-2 mr-4 text-base font-normal"},Jre={class:"hidden min-[450px]:block ml-2 mr-4 text-base font-normal"},eoe={class:"hidden md:inline"},toe={class:"md:hidden"},noe={class:"ml-2 mr-4 text-base font-normal"},roe={class:"hidden min-[650px]:block"},ooe={class:"min-[650px]:hidden"},ioe={class:"p-2 md:px-6 md:py-4"},aoe={class:"flex justify-between text-white text-lg py-1 border-t border-white/20 mt-2 pt-2 font-bold"},soe={class:"text-sm font-normal"},loe={class:"flex justify-between text-white text-sm py-1 mt-1 font-bold"},coe={class:"font-normal"},uoe={class:"flex flex-wrap items-center justify-center mt-4 mb-4 space-x-3 text-[#868c8b] text-sm font-normal"},doe={__name:"FooterPrice",props:{buttonQuoteVisible:{type:Boolean,default:!1},buttonSaveVisible:{type:Boolean,default:!1},buttonQuoteRequestOrUpdate:{type:Boolean,default:!1},existingConfig:{type:Boolean,default:!1},baseUrl:String,priceItems:{type:Array,default:()=>[]}},emits:["clickQuoteButton","clickSaveButton"],setup(n,{emit:e}){const t=e,r=n,o=Lo("CUtils"),i=vt(!1),a=vt(!1),s=vt(null),l=vt(0),c=bt(()=>r.priceItems.filter(p=>p.type==="configuration").length),u=bt(()=>(i.value||a.value)&&c.value>0&&!r.existingConfig),d=bt(()=>r.priceItems.reduce((p,m)=>p+(typeof m.price=="number"?m.price:0),0)),f=bt(()=>d.value*1.21);function h(){!i.value&&s.value&&(l.value=s.value.scrollHeight),a.value=!0,i.value=!i.value,setTimeout(()=>{a.value=!1},800)}return dr(()=>r.priceItems,async()=>{i.value&&s.value&&(await Va(),l.value=s.value.scrollHeight)},{deep:!0}),(p,m)=>{const g=Yt("InfoPopup");return he(),ye(Nt,null,[K("div",{class:Qt(["bg-tertiary-green p-2 md:px-6 md:py-4 flex items-center justify-between",u.value?"rounded-t-lg lg:rounded-t-xl":"rounded-lg lg:rounded-xl"])},[K("div",Wre,[n.existingConfig?(he(),ye("div",jre,[K("div",Qre,Ae(p.$t("footer.product_price")),1),Be(g,{title:p.$t("footer.product_price_title"),text:p.$t("footer.product_price_explain"),imageSrc:n.baseUrl+"/Uploads/aluwdoors-popup.png"},null,8,["title","text","imageSrc"])])):Pe("",!0),K("div",$re,[Ro(p.$slots,"price"),K("div",Yre,[Ye(Ae(p.$t("footer.excl_vat_assembly_transport")),1),m[2]||(m[2]=K("br",null,null,-1)),Ro(p.$slots,"priceInclVat"),Ye(" "+Ae(p.$t("footer.incl_vat")),1)]),K("div",Xre,Ae(p.$t("footer.excl_vat")),1),K("div",qre,[Ro(p.$slots,"priceInclVat"),Ye(" "+Ae(p.$t("footer.incl_vat")),1)])])]),K("div",Kre,[n.buttonSaveVisible?(he(),ye("button",{key:0,class:"h-10.5 md:h-11 xl:h-13 max-lg:hidden flex items-center justify-center text-center py-2 border border-white bg-tertiary-green rounded text-white hover:bg-secondary-green hover:text-white transition-colors duration-200 focus:outline-hidden cursor-pointer",onClick:m[0]||(m[0]=_=>t("clickSaveButton"))},[m[3]||(m[3]=K("svg",{class:"ml-4 mr-2",width:"14",height:"14",viewBox:"0 0 14 14",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 14H0V13V1V0H1H10.5L14 3.5V13V14H13H1ZM13 13V3.9375L10.0625 1H10V4.5V5H9.5H2.5H2V4.5V1H1V13H13ZM3 1V4H9V1H3ZM5.5 9C5.5 9.5625 5.78125 10.0312 6.25 10.3125C6.6875 10.5938 7.28125 10.5938 7.75 10.3125C8.1875 10.0312 8.5 9.5625 8.5 9C8.5 8.46875 8.1875 8 7.75 7.71875C7.28125 7.4375 6.6875 7.4375 6.25 7.71875C5.78125 8 5.5 8.46875 5.5 9ZM7 11.5C6.09375 11.5 5.28125 11.0312 4.8125 10.25C4.375 9.5 4.375 8.53125 4.8125 7.75C5.28125 7 6.09375 6.5 7 6.5C7.875 6.5 8.6875 7 9.15625 7.75C9.59375 8.53125 9.59375 9.5 9.15625 10.25C8.6875 11.0312 7.875 11.5 7 11.5Z"})],-1)),K("div",Zre,Ae(p.$t("buttons.save_configuration")),1)])):Pe("",!0),n.existingConfig?Pe("",!0):(he(),ye("button",{key:1,class:"h-10.5 md:h-11 xl:h-13 flex items-center justify-center text-center py-2 px-3 min-[450px]:py-2 min-[450px]:px-0 border border-white bg-tertiary-green rounded text-white hover:bg-secondary-green hover:text-white focus:outline-hidden transition-all duration-500 ease-[cubic-bezier(0.42,0,0.58,1)] cursor-pointer",onClick:h},[(he(),ye("svg",{class:Qt(["min-[450px]:ml-4 transition-transform rotate-180",{"rotate-0!":i.value}]),style:{"transition-duration":"800ms"},width:"12",height:"8",viewBox:"0 0 12 8",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[...m[4]||(m[4]=[K("path",{d:"M6 0.5L12 6.5L10.59 7.91L6 3.33L1.41 7.91L0 6.5L6 0.5Z"},null,-1)])],2)),K("div",Jre,[K("span",eoe,Ae(p.$t("footer.total_price")),1),K("span",toe,Ae(p.$t("footer.total")),1)])])),n.buttonQuoteVisible?(he(),ye("button",{key:2,class:"h-10.5 md:h-11 xl:h-13 flex items-center justify-center text-center py-2 bg-primary-green rounded text-tertiary-green hover:bg-button-hover-green transition-colors duration-200 focus:outline-hidden cursor-pointer",onClick:m[1]||(m[1]=_=>t("clickQuoteButton",n.buttonQuoteRequestOrUpdate))},[m[5]||(m[5]=K("svg",{class:"ml-4 mr-2",width:"12",height:"16",viewBox:"0 0 12 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M1 15H11V6H6.5H6V5.5V1H1V15ZM7 1.1875V5H10.8125L7 1.1875ZM7.25 0L12 4.75V15V16H11H1H0V15V1V0H1H7.25ZM2 2H2.5H4.5H5V3H4.5H2.5H2V2ZM2 4H2.5H4.5H5V5H4.5H2.5H2V4ZM7 14V13H7.5H9.5H10V14H9.5H7.5H7ZM9 10.5V8.5H3V10.5H9ZM3 7.5H9H10V8.5V10.5V11.5H9H3H2V10.5V8.5V7.5H3Z"})],-1)),K("div",noe,[K("span",roe,Ae(n.buttonQuoteRequestOrUpdate?p.$t("editQuote"):p.$t("requestQuote")),1),K("span",ooe,Ae((n.buttonQuoteRequestOrUpdate,p.$t("quote"))),1)])])):Pe("",!0)])],2),K("div",{ref_key:"priceListRef",ref:s,class:Qt(["bg-secondary-green overflow-hidden transition-all ease-in-out",u.value&&i.value?"rounded-b-lg lg:rounded-b-xl border-t border-white/20":u.value?"rounded-b-lg lg:rounded-b-xl":""]),style:Rd({maxHeight:i.value?l.value+"px":"0px",transitionDuration:"800ms"})},[K("div",ioe,[(he(!0),ye(Nt,null,Xn(n.priceItems,(_,A)=>{var y;return he(),ye("div",{key:A,class:Qt(["flex justify-between text-white text-sm py-1",{"border-t border-white/20 mt-2 pt-2":_.type==="extra"&&((y=n.priceItems[A-1])==null?void 0:y.type)==="configuration"}])},[K("span",null,Ae(_.name),1),K("span",null,Ae(typeof _.price=="string"?_.price:Ct(o).formatCurrencyFormat(_.price)+" "+p.$t("footer.excl_vat")),1)],2)}),128)),K("div",aoe,[K("span",null,Ae(p.$t("footer.total_price")),1),K("span",null,[Ye(Ae(Ct(o).formatCurrencyFormat(d.value))+" ",1),K("span",soe,Ae(p.$t("footer.excl_vat")),1)])]),K("div",loe,[m[6]||(m[6]=K("span",null,null,-1)),K("span",null,[Ye(Ae(Ct(o).formatCurrencyFormat(f.value))+" ",1),K("span",coe,Ae(p.$t("footer.incl_vat")),1)])])])],6),K("div",uoe,[K("span",null,Ae(p.$t("footer.questions_contact")),1),m[7]||(m[7]=XE('085 - 1301 965sales@aluwdoors.com',4))])],64)}}},foe={},hoe={class:"flex items-center w-full justify-between"},poe={class:"w-1/2"};function moe(n,e){return he(),ye("div",hoe,[K("div",null,[Ro(n.$slots,"label")]),K("div",poe,[Ro(n.$slots,"input")])])}const goe=zi(foe,[["render",moe]]),_oe={class:"flex items-center"},voe={key:0,class:"tf-configurator fixed left-0 right-0 top-0 bottom-0 z-99999"},Aoe={class:"md:w-[440px] rounded-lg overflow-hidden shadow-lg h-full! max-h-100! sm:max-h-full!"},yoe=["src","alt"],boe={class:"relative w-full md:w-[645px] bg-secondary-green text-white rounded-xl p-6 md:p-8 shadow-xl"},xoe={class:"text-2xl font-semibold mb-4 mr-12"},Eoe={class:"text-sm text-gray-300 leading-relaxed whitespace-pre-line"},Coe=zi({__name:"InfoPopup",props:{title:{type:String,required:!0},text:{type:String,required:!0},imageSrc:{type:String,default:""},imageAlt:{type:String,default:"Popup afbeelding"},tooltipPosition:{type:String,default:"left"}},setup(n){const e=n,t=vt(!1),r=bt(()=>hr.versionedUrl(e.imageSrc));return(o,i)=>{const a=Yt("Tooltip");return he(),ye(Nt,null,[K("div",_oe,[Be(a,{title:n.text,position:n.tooltipPosition},{default:ot(()=>[(he(),ye("svg",{class:"flex",width:"18",height:"16",viewBox:"0 0 18 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",onClick:i[0]||(i[0]=s=>t.value=!0)},[...i[4]||(i[4]=[K("path",{d:"M9 1C6.46875 1 4.1875 2.34375 2.9375 4.5C1.65625 6.6875 1.65625 9.34375 2.9375 11.5C4.1875 13.6875 6.46875 15 9 15C11.5 15 13.7812 13.6875 15.0312 11.5C16.3125 9.34375 16.3125 6.6875 15.0312 4.5C13.7812 2.34375 11.5 1 9 1ZM9 16C6.125 16 3.5 14.5 2.0625 12C0.625 9.53125 0.625 6.5 2.0625 4C3.5 1.53125 6.125 0 9 0C11.8438 0 14.4688 1.53125 15.9062 4C17.3438 6.5 17.3438 9.53125 15.9062 12C14.4688 14.5 11.8438 16 9 16ZM7 11H7.5H8.5V8H7.75H7.25V7H7.75H9H9.5V7.5V11H10.5H11V12H10.5H7.5H7V11ZM9.75 5.75H8.25V4.25H9.75V5.75Z"},null,-1)])]))]),_:1},8,["title","position"])]),(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"popup",appear:""},{default:ot(()=>[t.value?(he(),ye("div",voe,[K("div",{class:"w-full h-full bg-[#1b2221]/95 flex items-center justify-center px-4 py-8 cursor-pointer",onClick:i[3]||(i[3]=s=>t.value=!1)},[K("div",{class:"flex flex-col-reverse sm:flex-row max-w-4xl w-full gap-4 md:gap-6 items-stretch cursor-default",onClick:i[2]||(i[2]=ja(()=>{},["stop"]))},[K("div",Aoe,[K("img",{src:r.value,alt:e.title,class:"w-full h-100 object-cover"},null,8,yoe)]),K("div",boe,[K("button",{class:"cursor-pointer absolute top-4 right-4 w-15 h-12 rounded-md bg-tertiary-green text-white hover:bg-primary-green hover:text-tertiary-green transition-all ease-in-out duration-500 flex items-center justify-center",onClick:i[1]||(i[1]=s=>t.value=!1)},[...i[5]||(i[5]=[K("span",{class:"item-center justify-center"},[K("svg",{width:"13",height:"13",viewBox:"0 0 13 13",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M6.58261 5.64062L11.7389 0.445312L12.6373 1.34375L7.44198 6.5L12.6373 11.6953L11.7389 12.5938L6.58261 7.39844L1.3873 12.5938L0.488859 11.6953L5.68417 6.5L0.488859 1.34375L1.3873 0.445312L6.58261 5.64062Z",fill:"currentColor"})])],-1)])]),K("div",null,[K("h2",xoe,Ae(n.title),1),K("span",Eoe,Ae(n.text),1)])])])])])):Pe("",!0)]),_:1})]))],64)}}},[["__scopeId","data-v-f37eef27"]]),Soe={key:0,name:"configurator_popup-holder",appear:"",class:"tf-configurator fixed inset-0 z-99999"},woe={name:"configurator_popup-inner",class:"z-99999 relative w-full h-full flex justify-center items-center gap-6 flex-col-reverse md:flex-row"},Moe=["src"],Toe=zi({__name:"ConfirmDlg",props:{imageSrc:{type:String,default:""},imageAlt:{type:String,default:"Popup afbeelding"},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","submit"],setup(n,{emit:e}){const t=n,r=e;function o(){r("update:modelValue",!1)}function i(s){s.key==="Escape"&&o()}const a=bt(()=>hr.versionedUrl(t.imageSrc));return dr(()=>t.modelValue,s=>{s?(document.addEventListener("keydown",i),document.body.style.overflow="hidden"):(document.removeEventListener("keydown",i),document.body.style.overflow="")}),Wd(()=>{document.removeEventListener("keydown",i),document.body.style.overflow=""}),(s,l)=>(he(),gt(Oc,{to:"body"},[Be(Ll,{name:"popup",appear:""},{default:ot(()=>[n.modelValue?(he(),ye("div",Soe,[K("div",{class:"w-full h-full p-3 md:p-6 lg:p-10 bg-[#1B2221]/94 flex justify-center items-center cursor-pointer",onClick:o},[K("div",woe,[K("div",{name:"configurator_popup_img",class:"cursor-pointer [@media(max-height:800px)]:hidden h-full! max-h-50! md:max-h-full! w-full md:max-w-60 lg:max-w-100 rounded-2xl",onClick:l[0]||(l[0]=ja(()=>{},["stop"]))},[K("img",{src:a.value,alt:"Hoogwaardige stalen deuren en wanden op maat.",class:"h-full! max-h-50! md:max-h-full! w-full rounded-2xl object-cover",loading:"lazy",onClick:o},null,8,Moe)]),K("div",{name:"configurator_popup_box",class:"cursor-default relative flex overflow-x-clip overflow-y-auto rounded-2xl md:max-w-150 max-h-full bg-secondary-green text-white w-full h-full p-6 sm:p-8",onClick:l[1]||(l[1]=ja(()=>{},["stop"]))},[K("button",{class:"cursor-pointer absolute top-4 right-4 w-15 h-12 rounded-md bg-tertiary-green text-white hover:bg-primary-green hover:text-tertiary-green transition-all ease-in-out duration-500 flex items-center justify-center",onClick:o},[...l[2]||(l[2]=[K("span",{class:"item-center justify-center"},[K("svg",{width:"13",height:"13",viewBox:"0 0 13 13",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[K("path",{d:"M6.58261 5.64062L11.7389 0.445312L12.6373 1.34375L7.44198 6.5L12.6373 11.6953L11.7389 12.5938L6.58261 7.39844L1.3873 12.5938L0.488859 11.6953L5.68417 6.5L0.488859 1.34375L1.3873 0.445312L6.58261 5.64062Z",fill:"currentColor"})])],-1)])]),Ro(s.$slots,"default",{},void 0,!0)])])])])):Pe("",!0)]),_:3})]))}},[["__scopeId","data-v-b139d0fd"]]),Ioe={class:"relative group"},Roe={class:"relative bg-secondary-green text-white text-sm px-3 py-1 rounded w-50 z-99999"},Loe={__name:"Tooltip",props:{title:{type:String,required:!0,default:""},position:{type:String,default:"left"}},setup(n){const e={left:"right-full top-1/2 -translate-y-1/2 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2",top:"bottom-full left-1/2 -translate-x-1/2 mb-2 text-center",bottom:"top-full left-1/2 -translate-x-1/2 mt-2 text-center"},t={left:"absolute top-1/2 -translate-y-1/2 -right-1.5 w-3 h-3 bg-secondary-green rotate-45",right:"absolute top-1/2 -translate-y-1/2 -left-1.5 w-3 h-3 bg-secondary-green rotate-45",top:"absolute left-1/2 -translate-x-1/2 -bottom-1.5 w-3 h-3 bg-secondary-green rotate-45",bottom:"absolute left-1/2 -translate-x-1/2 -top-1.5 w-3 h-3 bg-secondary-green rotate-45"};return(r,o)=>(he(),ye("div",Ioe,[Ro(r.$slots,"default"),n.title!==""?(he(),ye("div",{key:0,class:Qt(["absolute z-99999 hidden group-hover:block",e[n.position]])},[K("div",Roe,[Ye(Ae(n.title)+" ",1),K("div",{class:Qt(t[n.position])},null,2)])],2)):Pe("",!0)]))}},Poe={__name:"UserMessage",props:{modelValue:{type:[String],default:[]}},emits:["update:modelValue"],setup(n,{emit:e}){const t=e;function r(){t("update:modelValue","")}return(o,i)=>n.modelValue?(he(),ye("div",{key:0,class:"text-red-500",onClick:r},Ae(n.modelValue),1)):Pe("",!0)}},Doe=HO({legacy:!1,locale:"nl",fallbackLocale:"nl",messages:{nl:JO,en:ek,de:tk}}),Qn=J7(sF);Kne({app:Qn,dsn:"https://17b84166baaa55030829603dfbf308eb@o4508674974023680.ingest.de.sentry.io/4509321955901520",sendDefaultPii:!0,integrations:[vne({maskAllText:!1,blockAllMedia:!1}),Fne()],replaysSessionSampleRate:.1,replaysOnErrorSampleRate:1}),Qn.provide("CUtils",hr),Qn.use(uT),Qn.component("FormRadioButton",rre),Qn.component("FormRadioButtonImage",dre),Qn.component("FormInput",gre),Qn.component("FormInputCm",yre),Qn.component("FormInputTextarea",Ere),Qn.component("FormButtonGroupQuantity",wre),Qn.component("FormButtonGroupChoice",Ire),Qn.component("FormInputCheckbox",lT),Qn.component("FormHeader",Dre),Qn.component("FormDefaultValue",Bre),Qn.component("FormDropdown",Fre),Qn.component("FooterPrice",doe),Qn.component("FormButtonImageSvg",Ure),Qn.component("FormSegmentedControl",Hre),Qn.component("InfoPopup",Coe),Qn.component("ConfirmDlg",Toe),Qn.component("Tooltip",Loe),Qn.component("UserMessage",Poe),Qn.component("GroupFormInputCmWithLabel",goe),Qn.use(Doe);const Boe=()=>{Qn.mount("#configurator")};window.mountConfigurator={mount:Boe};const Noe="4.10.0",ql={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Ooe={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},koe=0,Foe=1,Voe=2,Uoe=3,zoe=0,Goe=1,Hoe=2,Woe=3,joe=0,Qoe=1,$oe=2,Yoe=3,Xoe=0,qoe=1,Koe=2,Zoe=3,Joe=4,eie=5,X5=100,q5=101,K5=102,tie=103,nie=104,Z5=200,J5=201,eR=202,tR=203,nR=204,rR=205,oR=206,iR=207,aR=208,sR=209,lR=210,rie=0,oie=1,iie=2,aie=3,sie=4,lie=5,cie=6,uie=7,die=0,fie=1,hie=2,pie=0,mie=1,gie=2,_ie=3,vie=4,Aie=5,yie=6,bie=7,xie=8,Eie=9,Cie=10,Sie=0,wie=1,Mie=300,Tie=301,Iie=302,Rie=303,Lie=304,Pie=306,cR=1e3,uR=1001,dR=1002,fR=1003,hR=1004,Die=1004,pR=1005,Bie=1005,mR=1006,gR=1007,Nie=1007,_R=1008,Oie=1008,kie=1009,Fie=1010,Vie=1011,Uie=1012,zie=1013,Gie=1014,Hie=1015,Wie=1016,jie=1017,Qie=1018,$ie=1020,Yie=1021,vR=1023,Xie=1024,qie=1025,AR=1026,Kie=1027,Zie=1028,Jie=1029,yR=1030,eae=1031,tae=1033,bR=33776,nae=33777,rae=33778,xR=33779,ER=35840,oae=35841,CR=35842,iae=35843,SR=36196,wR=37492,MR=37496,TR=37808,aae=37809,sae=37810,lae=37811,cae=37812,uae=37813,dae=37814,fae=37815,hae=37816,pae=37817,mae=37818,gae=37819,_ae=37820,vae=37821,IR=36492,Aae=2200,yae=2201,bae=2202,xae=2300,Eae=2301,Cae=2302,Sae=2400,wae=2401,Mae=2402,Tae=2500,Iae=2501,Rae=0,Lae=1,Pae=2,Dae=3e3,Bae=3001,Nae=3200,Oae=3201,kae=3202,Fae=3301,Vae=3302,Uae=0,zae=1,Gae="",Ky="srgb",Zy="srgb-linear",Hae=0,Wae=7680,jae=7681,Qae=7682,$ae=7683,Yae=34055,Xae=34056,qae=5386,Kae=512,Zae=513,Jae=514,ese=515,tse=516,nse=517,rse=518,ose=519,ise=35044,ase=35048,sse=35040,lse=35045,cse=35049,use=35041,dse=35046,fse=35050,hse=35042,pse="100",Jy="300 es",mse=1035,gse="ALL",kg="__V3DL__4533c15f09",_se=0,vse=1,Ase=2,yse=3,bse=4,xse=5,Ese=0,Cse=1,Sse=2,wse=0,Mse=1,Tse=0,Ise=1,Rse=2,Lse=0,Pse=1,Dse=0,Bse=1,Nse=2;class ti{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const r=this._listeners;r[e]===void 0&&(r[e]=[]),r[e].indexOf(t)===-1&&r[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const r=this._listeners;return r[e]!==void 0&&r[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const o=r.indexOf(t);o!==-1&&r.splice(o,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const t=this._listeners[e.type];if(t!==void 0){e.target=this;const r=t.slice(0);for(let o=0,i=r.length;o>8&255]+oo[n>>16&255]+oo[n>>24&255]+"-"+oo[255&e]+oo[e>>8&255]+"-"+oo[e>>16&15|64]+oo[e>>24&255]+"-"+oo[63&t|128]+oo[t>>8&255]+"-"+oo[t>>16&255]+oo[t>>24&255]+oo[255&r]+oo[r>>8&255]+oo[r>>16&255]+oo[r>>24&255]).toLowerCase()}function oh(n){return Ose.test(n)}function Ht(n,e=0,t=1){return Math.max(e,Math.min(t,n))}function e2(n,e){return(n%e+e)%e}function kse(n,e,t,r,o){return r+(n-e)*(o-r)/(t-e)}function Fse(n,e,t){return n!==e?(t-n)/(e-n):0}function Aa(n,e,t){return(1-t)*n+t*e}function Vse(n,e,t,r){return Aa(n,e,1-Math.exp(-t*r))}function Use(n,e=1){return e-Math.abs(e2(n,2*e)-e)}function zse(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e))*n*(3-2*n)}function t2(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e))*n*n*(n*(6*n-15)+10)}function Gse(n,e){return n+Math.floor(Math.random()*(e-n+1))}function Hse(n,e){return n+Math.random()*(e-n)}function Wse(n){return n*(.5-Math.random())}function jse(n){n!==void 0&&(RR=n);let e=RR+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296}function ih(n){return n*ss}function Fg(n){return n*xu}function n2(n){return!(n&n-1)&&n!==0}function LR(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Vg(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Qse(n,e,t,r,o){const i=Math.cos,a=Math.sin,s=i(t/2),l=a(t/2),c=i((e+r)/2),u=a((e+r)/2),d=i((e-r)/2),f=a((e-r)/2),h=i((r-e)/2),p=a((r-e)/2);switch(o){case"XYX":n.set(s*u,l*d,l*f,s*c);break;case"YZY":n.set(l*f,s*u,l*d,s*c);break;case"ZXZ":n.set(l*d,l*f,s*u,s*c);break;case"XZX":n.set(s*u,l*p,l*h,s*c);break;case"YXY":n.set(l*h,s*u,l*p,s*c);break;case"ZYZ":n.set(l*p,l*h,s*u,s*c);break;default:console.warn("v3d.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+o)}}function ah(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function io(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return Math.round(65535*n);case Uint8Array:return Math.round(255*n);case Int16Array:return Math.round(32767*n);case Int8Array:return Math.round(127*n);default:throw new Error("Invalid component type.")}}function Eu(n){let e=5381,t=n.length;for(;t;)e=33*e^n.charCodeAt(--t);return e>>>0}function PR(n,e,t,r){let o=Math.exp(-t/r);return n*o+(1-o)*e}function Cr(n,e,t,r,o){let i=PR(n,e,t,r);return Math.abs(n-e)o&&(r=re&&(e=n[t]);return e}function BR(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function lh(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function Xse(n,e,t){return new Promise((function(r,o){setTimeout((function i(){switch(n.clientWaitSync(e,1,0)){case 37149:o();break;case 37147:setTimeout(i,t);break;default:r()}}),t)}))}function _e(n){return n!==void 0}function NR(n,e,t){for(let r=0;r1&&(i=o.minor-r.minor,i===0&&t>2&&(i=o.patch-r.patch,i===0&&t>3&&(i=FR(o.pre)-FR(r.pre),isNaN(i)&&(i=0)))),Math.sign(i)}function Js(n){return`${n%1?n:`${n}.0`}`}function ch(){return typeof window<"u"?window:typeof self<"u"?self:global}const Kl={};function Gg(n=""){const e=document.getElementsByTagName("script");let t=n;for(let r=e.length-1;r>=0;--r){const o=e[r].src,i=o.search(/\/v3d[\w.]+js/);i>-1&&(t=o.substr(0,i)+"/"+n)}return t}function i2(n,e=function(r){},t=function(r){}){Kl[n]=Kl[n]||{status:0,loadCallbacks:[],errorCallbacks:[]};const r=Kl[n];if(r.status==4)return void e(n);if(r.loadCallbacks.push(e),r.errorCallbacks.push(t),r.status>0)return;let o=Gg(n);const i=document.createElement("script");i.type="text/javascript",i.src=o,(function(a){i.onload=function(){Kl[a].loadCallbacks.forEach((function(s){s(a)})),Kl[a].status=4},i.onerror=function(){Kl[a].errorCallbacks.forEach((function(s){s(a)})),Kl[a].status=0}})(n),document.getElementsByTagName("head")[0].appendChild(i),r.status=3}function Kse(n,e,t=0){const r=function(i,a,s,l){const c=performance.now();return e(i,a,s),c-l>t?(l=c,new Promise((function(u){setTimeout((function(){u(l)}),1)}))):l};let o=Promise.resolve(performance.now());return n.forEach((function(i,a,s){o=o.then(r.bind(null,i,a,s))})),o}function Zl(n){return n<.04045?.0773993808*n:Math.pow(.9478672986*n+.0521327014,2.4)}function Hg(n){return n<.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}const a2={[Ky]:{[Zy]:Zl},[Zy]:{[Ky]:Hg}},Wr={legacyMode:!0,get workingColorSpace(){return"srgb-linear"},set workingColorSpace(n){console.warn("v3d.ColorManagement: .workingColorSpace is readonly.")},convert:function(n,e,t){if(this.legacyMode||e===t||!e||!t)return n;if(a2[e]&&a2[e][t]!==void 0){const r=a2[e][t];return n.r=r(n.r),n.g=r(n.g),n.b=r(n.b),n}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(n,e){return this.convert(n,this.workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this.workingColorSpace)}},UR={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},Sr={r:0,g:0,b:0},Qi={h:0,s:0,l:0},Wg={h:0,s:0,l:0};function s2(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+6*(e-n)*t:t<.5?e:t<2/3?n+6*(e-n)*(2/3-t):n}function jg(n,e){return e.r=n.r,e.g=n.g,e.b=n.b,e}class Ge{constructor(e,t,r){return this.isColor=!0,this.r=1,this.g=1,this.b=1,t===void 0&&r===void 0?this.set(e):this.setRGB(e,t,r)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t="srgb"){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,Wr.toWorkingColorSpace(this,t),this}setRGB(e,t,r,o=Wr.workingColorSpace){return this.r=e,this.g=t,this.b=r,Wr.toWorkingColorSpace(this,o),this}setHSL(e,t,r,o=Wr.workingColorSpace){if(e=e2(e,1),t=Ht(t,0,1),r=Ht(r,0,1),t===0)this.r=this.g=this.b=r;else{const i=r<=.5?r*(1+t):r+t-r*t,a=2*r-i;this.r=s2(a,i,e+1/3),this.g=s2(a,i,e),this.b=s2(a,i,e-1/3)}return Wr.toWorkingColorSpace(this,o),this}setStyle(e,t="srgb"){function r(i){i!==void 0&&parseFloat(i)<1&&console.warn("v3d.Color: Alpha component of "+e+" will be ignored.")}let o;if(o=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let i;const a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(i[1],10))/255,this.g=Math.min(255,parseInt(i[2],10))/255,this.b=Math.min(255,parseInt(i[3],10))/255,Wr.toWorkingColorSpace(this,t),r(i[4]),this;if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(i[1],10))/100,this.g=Math.min(100,parseInt(i[2],10))/100,this.b=Math.min(100,parseInt(i[3],10))/100,Wr.toWorkingColorSpace(this,t),r(i[4]),this;break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s)){const l=parseFloat(i[1])/360,c=parseFloat(i[2])/100,u=parseFloat(i[3])/100;return r(i[4]),this.setHSL(l,c,u,t)}}}else if(o=/^\#([A-Fa-f\d]+)$/.exec(e)){const i=o[1],a=i.length;if(a===3)return this.r=parseInt(i.charAt(0)+i.charAt(0),16)/255,this.g=parseInt(i.charAt(1)+i.charAt(1),16)/255,this.b=parseInt(i.charAt(2)+i.charAt(2),16)/255,Wr.toWorkingColorSpace(this,t),this;if(a===6)return this.r=parseInt(i.charAt(0)+i.charAt(1),16)/255,this.g=parseInt(i.charAt(2)+i.charAt(3),16)/255,this.b=parseInt(i.charAt(4)+i.charAt(5),16)/255,Wr.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t="srgb"){const r=UR[e.toLowerCase()];return r!==void 0?this.setHex(r,t):console.warn("v3d.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=Zl(e.r),this.g=Zl(e.g),this.b=Zl(e.b),this}copyLinearToSRGB(e){return this.r=Hg(e.r),this.g=Hg(e.g),this.b=Hg(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e="srgb"){return Wr.fromWorkingColorSpace(jg(this,Sr),e),Ht(255*Sr.r,0,255)<<16^Ht(255*Sr.g,0,255)<<8^Ht(255*Sr.b,0,255)}getHexString(e="srgb"){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Wr.workingColorSpace){Wr.fromWorkingColorSpace(jg(this,Sr),t);const r=Sr.r,o=Sr.g,i=Sr.b,a=Math.max(r,o,i),s=Math.min(r,o,i);let l,c;const u=(s+a)/2;if(s===a)l=0,c=0;else{const d=a-s;switch(c=u<=.5?d/(a+s):d/(2-a-s),a){case r:l=(o-i)/d+(o"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Cu===void 0&&(Cu=lh("canvas")),Cu.width=e.width,Cu.height=e.height;const r=Cu.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),t=Cu}return t.width>2048||t.height>2048?(console.warn("v3d.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=lh("canvas");t.width=e.width,t.height=e.height;const r=t.getContext("2d");r.drawImage(e,0,0,e.width,e.height);const o=r.getImageData(0,0,e.width,e.height),i=o.data;for(let a=0;a1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}}$n.DEFAULT_IMAGE=null,$n.DEFAULT_MAPPING=300,$n.DEFAULT_ANISOTROPY=1;class pt{constructor(e=0,t=0,r=0,o=1){pt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=r,this.w=o}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,r,o){return this.x=e,this.y=t,this.z=r,this.w=o,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,r=this.y,o=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*r+a[8]*o+a[12]*i,this.y=a[1]*t+a[5]*r+a[9]*o+a[13]*i,this.z=a[2]*t+a[6]*r+a[10]*o+a[14]*i,this.w=a[3]*t+a[7]*r+a[11]*o+a[15]*i,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,r,o,i;const l=e.elements,c=l[0],u=l[4],d=l[8],f=l[1],h=l[5],p=l[9],m=l[2],g=l[6],_=l[10];if(Math.abs(u-f)<.01&&Math.abs(d-m)<.01&&Math.abs(p-g)<.01){if(Math.abs(u+f)<.1&&Math.abs(d+m)<.1&&Math.abs(p+g)<.1&&Math.abs(c+h+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const y=(c+1)/2,b=(h+1)/2,E=(_+1)/2,x=(u+f)/4,w=(d+m)/4,L=(p+g)/4;return y>b&&y>E?y<.01?(r=0,o=.707106781,i=.707106781):(r=Math.sqrt(y),o=x/r,i=w/r):b>E?b<.01?(r=.707106781,o=0,i=.707106781):(o=Math.sqrt(b),r=x/o,i=L/o):E<.01?(r=.707106781,o=.707106781,i=0):(i=Math.sqrt(E),r=w/i,o=L/i),this.set(r,o,i,t),this}let A=Math.sqrt((g-p)*(g-p)+(d-m)*(d-m)+(f-u)*(f-u));return Math.abs(A)<.001&&(A=1),this.x=(g-p)/A,this.y=(d-m)/A,this.z=(f-u)/A,this.w=Math.acos((c+h+_-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 r=this.length();return this.divideScalar(r||1).multiplyScalar(Math.max(e,Math.min(t,r)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(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,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this.w=e.w+(t.w-e.w)*r,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 nn extends ti{constructor(e=1,t=1,r={}){super(),this.isWebGLRenderTarget=!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 o={width:e,height:t,depth:1};this.texture=new $n(o,r.mapping,r.wrapS,r.wrapT,r.magFilter,r.minFilter,r.format,r.type,r.anisotropy,r.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=r.generateMipmaps!==void 0&&r.generateMipmaps,this.texture.internalFormat=r.internalFormat!==void 0?r.internalFormat:null,this.texture.minFilter=r.minFilter!==void 0?r.minFilter:1006,this.depthBuffer=r.depthBuffer===void 0||r.depthBuffer,this.stencilBuffer=r.stencilBuffer!==void 0&&r.stencilBuffer,this.depthTexture=r.depthTexture!==void 0?r.depthTexture:null,this.samples=r.samples!==void 0?r.samples:0}setSize(e,t,r=1){this.width===e&&this.height===t&&this.depth===r||(this.width=e,this.height=t,this.depth=r,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=r,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.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 Qg(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 $g extends $n{constructor(e=null,t=1,r=1,o=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:r,depth:o},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ele extends nn{constructor(e=1,t=1,r=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=r,this.texture=new $g(null,e,t,r),this.texture.isRenderTargetTexture=!0}}class l2 extends $n{constructor(e=null,t=1,r=1,o=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:r,depth:o},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class tle extends nn{constructor(e=1,t=1,r=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=r,this.texture=new l2(null,e,t,r),this.texture.isRenderTargetTexture=!0}}class c2 extends nn{constructor(e=1,t=1,r=1,o={}){super(e,t,o),this.isWebGLMultipleRenderTargets=!0;const i=this.texture;this.texture=[];for(let a=0;a=0?1:-1,y=1-_*_;if(y>Number.EPSILON){const E=Math.sqrt(y),x=Math.atan2(E,_*A);g=Math.sin(g*x)/E,s=Math.sin(s*x)/E}const b=s*A;if(l=l*g+f*b,c=c*g+h*b,u=u*g+p*b,d=d*g+m*b,g===1-s){const E=1/Math.sqrt(l*l+c*c+u*u+d*d);l*=E,c*=E,u*=E,d*=E}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=d}static multiplyQuaternionsFlat(e,t,r,o,i,a){const s=r[o],l=r[o+1],c=r[o+2],u=r[o+3],d=i[a],f=i[a+1],h=i[a+2],p=i[a+3];return e[t]=s*p+u*d+l*h-c*f,e[t+1]=l*p+u*f+c*d-s*h,e[t+2]=c*p+u*h+s*f-l*d,e[t+3]=u*p-s*d-l*f-c*h,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,r,o){return this._x=e,this._y=t,this._z=r,this._w=o,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 r=e._x,o=e._y,i=e._z,a=e._order,s=Math.cos,l=Math.sin,c=s(r/2),u=s(o/2),d=s(i/2),f=l(r/2),h=l(o/2),p=l(i/2);switch(a){case"XYZ":this._x=f*u*d+c*h*p,this._y=c*h*d-f*u*p,this._z=c*u*p+f*h*d,this._w=c*u*d-f*h*p;break;case"YXZ":this._x=f*u*d+c*h*p,this._y=c*h*d-f*u*p,this._z=c*u*p-f*h*d,this._w=c*u*d+f*h*p;break;case"ZXY":this._x=f*u*d-c*h*p,this._y=c*h*d+f*u*p,this._z=c*u*p+f*h*d,this._w=c*u*d-f*h*p;break;case"ZYX":this._x=f*u*d-c*h*p,this._y=c*h*d+f*u*p,this._z=c*u*p-f*h*d,this._w=c*u*d+f*h*p;break;case"YZX":this._x=f*u*d+c*h*p,this._y=c*h*d+f*u*p,this._z=c*u*p-f*h*d,this._w=c*u*d-f*h*p;break;case"XZY":this._x=f*u*d-c*h*p,this._y=c*h*d-f*u*p,this._z=c*u*p+f*h*d,this._w=c*u*d+f*h*p;break;default:console.warn("v3d.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const r=t/2,o=Math.sin(r);return this._x=e.x*o,this._y=e.y*o,this._z=e.z*o,this._w=Math.cos(r),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,r=t[0],o=t[4],i=t[8],a=t[1],s=t[5],l=t[9],c=t[2],u=t[6],d=t[10],f=r+s+d;if(f>0){const h=.5/Math.sqrt(f+1);this._w=.25/h,this._x=(u-l)*h,this._y=(i-c)*h,this._z=(a-o)*h}else if(r>s&&r>d){const h=2*Math.sqrt(1+r-s-d);this._w=(u-l)/h,this._x=.25*h,this._y=(o+a)/h,this._z=(i+c)/h}else if(s>d){const h=2*Math.sqrt(1+s-r-d);this._w=(i-c)/h,this._x=(o+a)/h,this._y=.25*h,this._z=(l+u)/h}else{const h=2*Math.sqrt(1+d-r-s);this._w=(a-o)/h,this._x=(i+c)/h,this._y=(l+u)/h,this._z=.25*h}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let r=e.dot(t)+1;return rMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=r):(this._x=0,this._y=-e.z,this._z=e.y,this._w=r)):(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=r),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ht(this.dot(e),-1,1)))}rotateTowards(e,t){const r=this.angleTo(e);if(r===0)return this;const o=Math.min(1,t/r);return this.slerp(e,o),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 r=e._x,o=e._y,i=e._z,a=e._w,s=t._x,l=t._y,c=t._z,u=t._w;return this._x=r*u+a*s+o*c-i*l,this._y=o*u+a*l+i*s-r*c,this._z=i*u+a*c+r*l-o*s,this._w=a*u-r*s-o*l-i*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const r=this._x,o=this._y,i=this._z,a=this._w;let s=a*e._w+r*e._x+o*e._y+i*e._z;if(s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),s>=1)return this._w=a,this._x=r,this._y=o,this._z=i,this;const l=1-s*s;if(l<=Number.EPSILON){const h=1-t;return this._w=h*a+t*this._w,this._x=h*r+t*this._x,this._y=h*o+t*this._y,this._z=h*i+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),u=Math.atan2(c,s),d=Math.sin((1-t)*u)/c,f=Math.sin(t*u)/c;return this._w=a*d+this._w*f,this._x=r*d+this._x*f,this._y=o*d+this._y*f,this._z=i*d+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,r){return this.copy(e).slerp(t,r)}random(){const e=Math.random(),t=Math.sqrt(1-e),r=Math.sqrt(e),o=2*Math.PI*Math.random(),i=2*Math.PI*Math.random();return this.set(t*Math.cos(o),r*Math.sin(i),r*Math.cos(i),t*Math.sin(o))}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}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class N{constructor(e=0,t=0,r=0){N.prototype.isVector3=!0,this.x=e,this.y=t,this.z=r}set(e,t,r){return r===void 0&&(r=this.z),this.x=e,this.y=t,this.z=r,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(GR.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(GR.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,r=this.y,o=this.z,i=e.elements;return this.x=i[0]*t+i[3]*r+i[6]*o,this.y=i[1]*t+i[4]*r+i[7]*o,this.z=i[2]*t+i[5]*r+i[8]*o,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,r=this.y,o=this.z,i=e.elements,a=1/(i[3]*t+i[7]*r+i[11]*o+i[15]);return this.x=(i[0]*t+i[4]*r+i[8]*o+i[12])*a,this.y=(i[1]*t+i[5]*r+i[9]*o+i[13])*a,this.z=(i[2]*t+i[6]*r+i[10]*o+i[14])*a,this}applyQuaternion(e){const t=this.x,r=this.y,o=this.z,i=e.x,a=e.y,s=e.z,l=e.w,c=l*t+a*o-s*r,u=l*r+s*t-i*o,d=l*o+i*r-a*t,f=-i*t-a*r-s*o;return this.x=c*l+f*-i+u*-s-d*-a,this.y=u*l+f*-a+d*-i-c*-s,this.z=d*l+f*-s+c*-a-u*-i,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,r=this.y,o=this.z,i=e.elements;return this.x=i[0]*t+i[4]*r+i[8]*o,this.y=i[1]*t+i[5]*r+i[9]*o,this.z=i[2]*t+i[6]*r+i[10]*o,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 r=this.length();return this.divideScalar(r||1).multiplyScalar(Math.max(e,Math.min(t,r)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(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,r){return this.x=e.x+(t.x-e.x)*r,this.y=e.y+(t.y-e.y)*r,this.z=e.z+(t.z-e.z)*r,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const r=e.x,o=e.y,i=e.z,a=t.x,s=t.y,l=t.z;return this.x=o*l-i*s,this.y=i*a-r*l,this.z=r*s-o*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const r=e.dot(this)/t;return this.copy(e).multiplyScalar(r)}projectOnPlane(e){return u2.copy(this).projectOnVector(e),this.sub(u2)}reflect(e){return this.sub(u2.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 r=this.dot(e)/t;return Math.acos(Ht(r,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,r=this.y-e.y,o=this.z-e.z;return t*t+r*r+o*o}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,r){const o=Math.sin(t)*e;return this.x=o*Math.sin(r),this.y=Math.cos(t)*e,this.z=o*Math.cos(r),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,r){return this.x=e*Math.sin(t),this.y=r,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(),r=this.setFromMatrixColumn(e,1).length(),o=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=r,this.z=o,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,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=2*(Math.random()-.5),t=Math.random()*Math.PI*2,r=Math.sqrt(1-e**2);return this.x=r*Math.cos(t),this.y=r*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const u2=new N,GR=new It;class Tn{constructor(e=new N(1/0,1/0,1/0),t=new N(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,r=1/0,o=1/0,i=-1/0,a=-1/0,s=-1/0;for(let l=0,c=e.length;li&&(i=u),d>a&&(a=d),f>s&&(s=f)}return this.min.set(t,r,o),this.max.set(i,a,s),this}setFromBufferAttribute(e){let t=1/0,r=1/0,o=1/0,i=-1/0,a=-1/0,s=-1/0;for(let l=0,c=e.count;li&&(i=u),d>a&&(a=d),f>s&&(s=f)}return this.min.set(t,r,o),this.max.set(i,a,s),this}setFromPoints(e){this.makeEmpty();for(let t=0,r=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,Jl),Jl.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,r;return e.normal.x>0?(t=e.normal.x*this.min.x,r=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,r=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,r+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,r+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,r+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,r+=e.normal.z*this.min.z),t<=-e.constant&&r>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(cs),nl.subVectors(this.max,cs),Su.subVectors(e.a,cs),wu.subVectors(e.b,cs),Mu.subVectors(e.c,cs),el.subVectors(wu,Su),tl.subVectors(Mu,wu),ec.subVectors(Su,Mu);let t=[0,-el.z,el.y,0,-tl.z,tl.y,0,-ec.z,ec.y,el.z,0,-el.x,tl.z,0,-tl.x,ec.z,0,-ec.x,-el.y,el.x,0,-tl.y,tl.x,0,-ec.y,ec.x,0];return!!f2(t,Su,wu,Mu,nl)&&(t=[1,0,0,0,1,0,0,0,1],!!f2(t,Su,wu,Mu,nl)&&(Yg.crossVectors(el,tl),t=[Yg.x,Yg.y,Yg.z],f2(t,Su,wu,Mu,nl)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return Jl.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(Jl).length(),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()||(ls[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ls[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ls[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ls[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ls[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ls[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ls[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ls[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ls)),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)}scale(e){return this.getCenter(cs),nl.subVectors(this.max,cs),nl.multiply(e),this.min.copy(cs).sub(nl),this.max.copy(cs).add(nl),this}}const ls=[new N,new N,new N,new N,new N,new N,new N,new N],Jl=new N,d2=new Tn,Su=new N,wu=new N,Mu=new N,el=new N,tl=new N,ec=new N,cs=new N,nl=new N,Yg=new N,tc=new N;function f2(n,e,t,r,o){for(let i=0,a=n.length-3;i<=a;i+=3){tc.fromArray(n,i);const s=o.x*Math.abs(tc.x)+o.y*Math.abs(tc.y)+o.z*Math.abs(tc.z),l=e.dot(tc),c=t.dot(tc),u=r.dot(tc);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>s)return!1}return!0}const nle=new Tn,uh=new N,h2=new N;class ni{constructor(e=new N,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const r=this.center;t!==void 0?r.copy(t):nle.setFromPoints(e).getCenter(r);let o=0;for(let i=0,a=e.length;ithis.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;uh.subVectors(e,this.center);const t=uh.lengthSq();if(t>this.radius*this.radius){const r=Math.sqrt(t),o=.5*(r-this.radius);this.center.addScaledVector(uh,o/r),this.radius+=o}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):(h2.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(uh.copy(e.center).add(h2)),this.expandByPoint(uh.copy(e.center).sub(h2))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const us=new N,p2=new N,Xg=new N,rl=new N,m2=new N,qg=new N,g2=new N;class Tu{constructor(e=new N,t=new N(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,us)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const r=t.dot(this.direction);return r<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(r).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=us.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(us.copy(this.direction).multiplyScalar(t).add(this.origin),us.distanceToSquared(e))}distanceSqToSegment(e,t,r,o){p2.copy(e).add(t).multiplyScalar(.5),Xg.copy(t).sub(e).normalize(),rl.copy(this.origin).sub(p2);const i=.5*e.distanceTo(t),a=-this.direction.dot(Xg),s=rl.dot(this.direction),l=-rl.dot(Xg),c=rl.lengthSq(),u=Math.abs(1-a*a);let d,f,h,p;if(u>0)if(d=a*l-s,f=a*s-l,p=i*u,d>=0)if(f>=-p)if(f<=p){const m=1/u;d*=m,f*=m,h=d*(d+a*f+2*s)+f*(a*d+f+2*l)+c}else f=i,d=Math.max(0,-(a*f+s)),h=-d*d+f*(f+2*l)+c;else f=-i,d=Math.max(0,-(a*f+s)),h=-d*d+f*(f+2*l)+c;else f<=-p?(d=Math.max(0,-(-a*i+s)),f=d>0?-i:Math.min(Math.max(-i,-l),i),h=-d*d+f*(f+2*l)+c):f<=p?(d=0,f=Math.min(Math.max(-i,-l),i),h=f*(f+2*l)+c):(d=Math.max(0,-(a*i+s)),f=d>0?i:Math.min(Math.max(-i,-l),i),h=-d*d+f*(f+2*l)+c);else f=a>0?-i:i,d=Math.max(0,-(a*f+s)),h=-d*d+f*(f+2*l)+c;return r&&r.copy(this.direction).multiplyScalar(d).add(this.origin),o&&o.copy(Xg).multiplyScalar(f).add(p2),h}intersectSphere(e,t){us.subVectors(e.center,this.origin);const r=us.dot(this.direction),o=us.dot(us)-r*r,i=e.radius*e.radius;if(o>i)return null;const a=Math.sqrt(i-o),s=r-a,l=r+a;return s<0&&l<0?null:s<0?this.at(l,t):this.at(s,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 r=-(this.origin.dot(e.normal)+e.constant)/t;return r>=0?r:null}intersectPlane(e,t){const r=this.distanceToPlane(e);return r===null?null:this.at(r,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0?!0:e.normal.dot(this.direction)*t<0}intersectBox(e,t){let r,o,i,a,s,l;const c=1/this.direction.x,u=1/this.direction.y,d=1/this.direction.z,f=this.origin;return c>=0?(r=(e.min.x-f.x)*c,o=(e.max.x-f.x)*c):(r=(e.max.x-f.x)*c,o=(e.min.x-f.x)*c),u>=0?(i=(e.min.y-f.y)*u,a=(e.max.y-f.y)*u):(i=(e.max.y-f.y)*u,a=(e.min.y-f.y)*u),r>a||i>o?null:((i>r||isNaN(r))&&(r=i),(a=0?(s=(e.min.z-f.z)*d,l=(e.max.z-f.z)*d):(s=(e.max.z-f.z)*d,l=(e.min.z-f.z)*d),r>l||s>o?null:((s>r||r!=r)&&(r=s),(l=0?r:o,t)))}intersectsBox(e){return this.intersectBox(e,us)!==null}intersectTriangle(e,t,r,o,i){m2.subVectors(t,e),qg.subVectors(r,e),g2.crossVectors(m2,qg);let a,s=this.direction.dot(g2);if(s>0){if(o)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}rl.subVectors(this.origin,e);const l=a*this.direction.dot(qg.crossVectors(rl,qg));if(l<0)return null;const c=a*this.direction.dot(m2.cross(rl));if(c<0||l+c>s)return null;const u=-a*rl.dot(g2);return u<0?null:this.at(u/s,i)}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 Ue{constructor(){Ue.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,r,o,i,a,s,l,c,u,d,f,h,p,m,g){const _=this.elements;return _[0]=e,_[4]=t,_[8]=r,_[12]=o,_[1]=i,_[5]=a,_[9]=s,_[13]=l,_[2]=c,_[6]=u,_[10]=d,_[14]=f,_[3]=h,_[7]=p,_[11]=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 Ue().fromArray(this.elements)}copy(e){const t=this.elements,r=e.elements;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t[9]=r[9],t[10]=r[10],t[11]=r[11],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],this}copyPosition(e){const t=this.elements,r=e.elements;return t[12]=r[12],t[13]=r[13],t[14]=r[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,r){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),r.setFromMatrixColumn(this,2),this}makeBasis(e,t,r){return this.set(e.x,t.x,r.x,0,e.y,t.y,r.y,0,e.z,t.z,r.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,r=e.elements,o=1/ds.setFromMatrixColumn(e,0).length(),i=1/ds.setFromMatrixColumn(e,1).length(),a=1/ds.setFromMatrixColumn(e,2).length();return t[0]=r[0]*o,t[1]=r[1]*o,t[2]=r[2]*o,t[3]=0,t[4]=r[4]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=0,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,r=e.x,o=e.y,i=e.z,a=Math.cos(r),s=Math.sin(r),l=Math.cos(o),c=Math.sin(o),u=Math.cos(i),d=Math.sin(i);if(e.order==="XYZ"){const f=a*u,h=a*d,p=s*u,m=s*d;t[0]=l*u,t[4]=-l*d,t[8]=c,t[1]=h+p*c,t[5]=f-m*c,t[9]=-s*l,t[2]=m-f*c,t[6]=p+h*c,t[10]=a*l}else if(e.order==="YXZ"){const f=l*u,h=l*d,p=c*u,m=c*d;t[0]=f+m*s,t[4]=p*s-h,t[8]=a*c,t[1]=a*d,t[5]=a*u,t[9]=-s,t[2]=h*s-p,t[6]=m+f*s,t[10]=a*l}else if(e.order==="ZXY"){const f=l*u,h=l*d,p=c*u,m=c*d;t[0]=f-m*s,t[4]=-a*d,t[8]=p+h*s,t[1]=h+p*s,t[5]=a*u,t[9]=m-f*s,t[2]=-a*c,t[6]=s,t[10]=a*l}else if(e.order==="ZYX"){const f=a*u,h=a*d,p=s*u,m=s*d;t[0]=l*u,t[4]=p*c-h,t[8]=f*c+m,t[1]=l*d,t[5]=m*c+f,t[9]=h*c-p,t[2]=-c,t[6]=s*l,t[10]=a*l}else if(e.order==="YZX"){const f=a*l,h=a*c,p=s*l,m=s*c;t[0]=l*u,t[4]=m-f*d,t[8]=p*d+h,t[1]=d,t[5]=a*u,t[9]=-s*u,t[2]=-c*u,t[6]=h*d+p,t[10]=f-m*d}else if(e.order==="XZY"){const f=a*l,h=a*c,p=s*l,m=s*c;t[0]=l*u,t[4]=-d,t[8]=c*u,t[1]=f*d+m,t[5]=a*u,t[9]=h*d-p,t[2]=p*d-h,t[6]=s*u,t[10]=m*d+f}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(rle,e,ole)}lookAt(e,t,r){const o=this.elements;return ri.subVectors(e,t),ri.lengthSq()===0&&(ri.z=1),ri.normalize(),ol.crossVectors(r,ri),ol.lengthSq()===0&&(Math.abs(r.z)===1?ri.x+=1e-4:ri.z+=1e-4,ri.normalize(),ol.crossVectors(r,ri)),ol.normalize(),Kg.crossVectors(ri,ol),o[0]=ol.x,o[4]=Kg.x,o[8]=ri.x,o[1]=ol.y,o[5]=Kg.y,o[9]=ri.y,o[2]=ol.z,o[6]=Kg.z,o[10]=ri.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const r=e.elements,o=t.elements,i=this.elements,a=r[0],s=r[4],l=r[8],c=r[12],u=r[1],d=r[5],f=r[9],h=r[13],p=r[2],m=r[6],g=r[10],_=r[14],A=r[3],y=r[7],b=r[11],E=r[15],x=o[0],w=o[4],L=o[8],C=o[12],P=o[1],D=o[5],Q=o[9],re=o[13],G=o[2],se=o[6],ee=o[10],ie=o[14],H=o[3],T=o[7],R=o[11],O=o[15];return i[0]=a*x+s*P+l*G+c*H,i[4]=a*w+s*D+l*se+c*T,i[8]=a*L+s*Q+l*ee+c*R,i[12]=a*C+s*re+l*ie+c*O,i[1]=u*x+d*P+f*G+h*H,i[5]=u*w+d*D+f*se+h*T,i[9]=u*L+d*Q+f*ee+h*R,i[13]=u*C+d*re+f*ie+h*O,i[2]=p*x+m*P+g*G+_*H,i[6]=p*w+m*D+g*se+_*T,i[10]=p*L+m*Q+g*ee+_*R,i[14]=p*C+m*re+g*ie+_*O,i[3]=A*x+y*P+b*G+E*H,i[7]=A*w+y*D+b*se+E*T,i[11]=A*L+y*Q+b*ee+E*R,i[15]=A*C+y*re+b*ie+E*O,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],r=e[4],o=e[8],i=e[12],a=e[1],s=e[5],l=e[9],c=e[13],u=e[2],d=e[6],f=e[10],h=e[14];return e[3]*(+i*l*d-o*c*d-i*s*f+r*c*f+o*s*h-r*l*h)+e[7]*(+t*l*h-t*c*f+i*a*f-o*a*h+o*c*u-i*l*u)+e[11]*(+t*c*d-t*s*h-i*a*d+r*a*h+i*s*u-r*c*u)+e[15]*(-o*s*u-t*l*d+t*s*f+o*a*d-r*a*f+r*l*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,r){const o=this.elements;return e.isVector3?(o[12]=e.x,o[13]=e.y,o[14]=e.z):(o[12]=e,o[13]=t,o[14]=r),this}invert(){const e=this.elements,t=e[0],r=e[1],o=e[2],i=e[3],a=e[4],s=e[5],l=e[6],c=e[7],u=e[8],d=e[9],f=e[10],h=e[11],p=e[12],m=e[13],g=e[14],_=e[15],A=d*g*c-m*f*c+m*l*h-s*g*h-d*l*_+s*f*_,y=p*f*c-u*g*c-p*l*h+a*g*h+u*l*_-a*f*_,b=u*m*c-p*d*c+p*s*h-a*m*h-u*s*_+a*d*_,E=p*d*l-u*m*l-p*s*f+a*m*f+u*s*g-a*d*g,x=t*A+r*y+o*b+i*E;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/x;return e[0]=A*w,e[1]=(m*f*i-d*g*i-m*o*h+r*g*h+d*o*_-r*f*_)*w,e[2]=(s*g*i-m*l*i+m*o*c-r*g*c-s*o*_+r*l*_)*w,e[3]=(d*l*i-s*f*i-d*o*c+r*f*c+s*o*h-r*l*h)*w,e[4]=y*w,e[5]=(u*g*i-p*f*i+p*o*h-t*g*h-u*o*_+t*f*_)*w,e[6]=(p*l*i-a*g*i-p*o*c+t*g*c+a*o*_-t*l*_)*w,e[7]=(a*f*i-u*l*i+u*o*c-t*f*c-a*o*h+t*l*h)*w,e[8]=b*w,e[9]=(p*d*i-u*m*i-p*r*h+t*m*h+u*r*_-t*d*_)*w,e[10]=(a*m*i-p*s*i+p*r*c-t*m*c-a*r*_+t*s*_)*w,e[11]=(u*s*i-a*d*i-u*r*c+t*d*c+a*r*h-t*s*h)*w,e[12]=E*w,e[13]=(u*m*o-p*d*o+p*r*f-t*m*f-u*r*g+t*d*g)*w,e[14]=(p*s*o-a*m*o-p*r*l+t*m*l+a*r*g-t*s*g)*w,e[15]=(a*d*o-u*s*o+u*r*l-t*d*l-a*r*f+t*s*f)*w,this}scale(e){const t=this.elements,r=e.x,o=e.y,i=e.z;return t[0]*=r,t[4]*=o,t[8]*=i,t[1]*=r,t[5]*=o,t[9]*=i,t[2]*=r,t[6]*=o,t[10]*=i,t[3]*=r,t[7]*=o,t[11]*=i,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],r=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],o=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,r,o))}makeTranslation(e,t,r){return this.set(1,0,0,e,0,1,0,t,0,0,1,r,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),r=Math.sin(e);return this.set(1,0,0,0,0,t,-r,0,0,r,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),r=Math.sin(e);return this.set(t,0,r,0,0,1,0,0,-r,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,0,r,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const r=Math.cos(t),o=Math.sin(t),i=1-r,a=e.x,s=e.y,l=e.z,c=i*a,u=i*s;return this.set(c*a+r,c*s-o*l,c*l+o*s,0,c*s+o*l,u*s+r,u*l-o*a,0,c*l-o*s,u*l+o*a,i*l*l+r,0,0,0,0,1),this}makeScale(e,t,r){return this.set(e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1),this}makeShear(e,t,r,o,i,a){return this.set(1,r,i,0,e,1,a,0,t,o,1,0,0,0,0,1),this}compose(e,t,r){const o=this.elements,i=t._x,a=t._y,s=t._z,l=t._w,c=i+i,u=a+a,d=s+s,f=i*c,h=i*u,p=i*d,m=a*u,g=a*d,_=s*d,A=l*c,y=l*u,b=l*d,E=r.x,x=r.y,w=r.z;return o[0]=(1-(m+_))*E,o[1]=(h+b)*E,o[2]=(p-y)*E,o[3]=0,o[4]=(h-b)*x,o[5]=(1-(f+_))*x,o[6]=(g+A)*x,o[7]=0,o[8]=(p+y)*w,o[9]=(g-A)*w,o[10]=(1-(f+m))*w,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,this}decompose(e,t,r){const o=this.elements;let i=ds.set(o[0],o[1],o[2]).length();const a=ds.set(o[4],o[5],o[6]).length(),s=ds.set(o[8],o[9],o[10]).length();this.determinant()<0&&(i=-i),e.x=o[12],e.y=o[13],e.z=o[14],tr.copy(this);const l=1/i,c=1/a,u=1/s;return tr.elements[0]*=l,tr.elements[1]*=l,tr.elements[2]*=l,tr.elements[4]*=c,tr.elements[5]*=c,tr.elements[6]*=c,tr.elements[8]*=u,tr.elements[9]*=u,tr.elements[10]*=u,t.setFromRotationMatrix(tr),r.x=i,r.y=a,r.z=s,this}makePerspective(e,t,r,o,i,a){const s=this.elements,l=2*i/(t-e),c=2*i/(r-o),u=(t+e)/(t-e),d=(r+o)/(r-o),f=-(a+i)/(a-i),h=-2*a*i/(a-i);return s[0]=l,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=c,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=h,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,r,o,i,a){const s=this.elements,l=1/(t-e),c=1/(r-o),u=1/(a-i),d=(t+e)*l,f=(r+o)*c,h=(a+i)*u;return s[0]=2*l,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*c,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=-2*u,s[14]=-h,s[3]=0,s[7]=0,s[11]=0,s[15]=1,this}equals(e){const t=this.elements,r=e.elements;for(let o=0;o<16;o++)if(t[o]!==r[o])return!1;return!0}fromArray(e,t=0){for(let r=0;r<16;r++)this.elements[r]=e[r+t];return this}toArray(e=[],t=0){const r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e[t+9]=r[9],e[t+10]=r[10],e[t+11]=r[11],e[t+12]=r[12],e[t+13]=r[13],e[t+14]=r[14],e[t+15]=r[15],e}composeE(e,t,r){const o=this.elements;this.makeRotationFromEuler(t);const i=r.x,a=r.y,s=r.z;return o[0]*=i,o[1]*=i,o[2]*=i,o[3]=0,o[4]*=a,o[5]*=a,o[6]*=a,o[7]=0,o[8]*=s,o[9]*=s,o[10]*=s,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,this}decomposeE(e,t,r,o=t.order){const i=this.elements;let a=ds.set(i[0],i[1],i[2]).length();const s=ds.set(i[4],i[5],i[6]).length(),l=ds.set(i[8],i[9],i[10]).length();this.determinant()<0&&(a=-a),e.x=i[12],e.y=i[13],e.z=i[14],tr.copy(this);const c=1/a,u=1/s,d=1/l;return tr.elements[0]*=c,tr.elements[1]*=c,tr.elements[2]*=c,tr.elements[4]*=u,tr.elements[5]*=u,tr.elements[6]*=u,tr.elements[8]*=d,tr.elements[9]*=d,tr.elements[10]*=d,t.setFromRotationMatrix(tr,o),r.x=a,r.y=s,r.z=l,this}}const ds=new N,tr=new Ue,rle=new N(0,0,0),ole=new N(1,1,1),ol=new N,Kg=new N,ri=new N,HR=new Ue,WR=new It;class $i{constructor(e=0,t=0,r=0,o=$i.DefaultOrder){this.isEuler=!0,this._x=e,this._y=t,this._z=r,this._order=o}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,r,o=this._order){return this._x=e,this._y=t,this._z=r,this._order=o,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,r=!0){const o=e.elements,i=o[0],a=o[4],s=o[8],l=o[1],c=o[5],u=o[9],d=o[2],f=o[6],h=o[10];switch(t){case"XYZ":this._y=Math.asin(Ht(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-a,i)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ht(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(s,h),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-d,i),this._z=0);break;case"ZXY":this._x=Math.asin(Ht(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-d,h),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,i));break;case"ZYX":this._y=Math.asin(-Ht(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(f,h),this._z=Math.atan2(l,i)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Ht(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-d,i)):(this._x=0,this._y=Math.atan2(s,h));break;case"XZY":this._z=Math.asin(-Ht(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(s,i)):(this._x=Math.atan2(-u,h),this._y=0);break;default:console.warn("v3d.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,r===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,r){return HR.makeRotationFromQuaternion(e),this.setFromRotationMatrix(HR,t,r)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return WR.setFromEuler(this),this.setFromQuaternion(WR,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}toVector3(e){return console.warn("v3d.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead"),e?e.set(this._x,this._y,this._z):new N(this._x,this._y,this._z)}makeAlternative(){var e=this._order[1]==="X"?-1:1,t=this._order[1]==="Y"?-1:1,r=this._order[1]==="Z"?-1:1;return this._x=Ug(e*(this._x+Math.PI)),this._y=Ug(t*(this._y+Math.PI)),this._z=Ug(r*(this._z+Math.PI)),this}equalsEps(e,t){return Math.abs(this._x-e._x)>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let r=0;r0&&(r=r.concat(a))}return r}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(fs,e,QR),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(fs,ale,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[4],t[5],t[6]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let r=0,o=t.length;r0?o.multiplyScalar(1/Math.sqrt(i)):o.set(0,0,0)}static getBarycoord(e,t,r,o,i){Yi.subVectors(o,t),hs.subVectors(r,t),_2.subVectors(e,t);const a=Yi.dot(Yi),s=Yi.dot(hs),l=Yi.dot(_2),c=hs.dot(hs),u=hs.dot(_2),d=a*c-s*s;if(d===0)return i.set(0,0,0),null;const f=1/d,h=(c*l-s*u)*f,p=(a*u-s*l)*f;return i.set(1-h-p,p,h)}static containsPoint(e,t,r,o){return this.getBarycoord(e,t,r,o,ps)!==null&&ps.x>=0&&ps.y>=0&&ps.x+ps.y<=1}static getInterpolation(e,t,r,o,i,a,s,l){return this.getBarycoord(e,t,r,o,ps)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(i,ps.x),l.addScaledVector(a,ps.y),l.addScaledVector(s,ps.z),l)}static getInterpolatedAttribute(e,t,r,o,i,a){return b2.setScalar(0),x2.setScalar(0),E2.setScalar(0),b2.fromBufferAttribute(e,t),x2.fromBufferAttribute(e,r),E2.fromBufferAttribute(e,o),a.setScalar(0),a.addScaledVector(b2,i.x),a.addScaledVector(x2,i.y),a.addScaledVector(E2,i.z),a}static isFrontFacing(e,t,r,o){return Yi.subVectors(r,t),hs.subVectors(e,t),Yi.cross(hs).dot(o)<0}set(e,t,r){return this.a.copy(e),this.b.copy(t),this.c.copy(r),this}setFromPointsAndIndices(e,t,r,o){return this.a.copy(e[t]),this.b.copy(e[r]),this.c.copy(e[o]),this}setFromAttributeAndIndices(e,t,r,o){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,r),this.c.fromBufferAttribute(e,o),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 Yi.subVectors(this.c,this.b),hs.subVectors(this.a,this.b),.5*Yi.cross(hs).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Br.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Br.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,r,o,i){return Br.getInterpolation(e,this.a,this.b,this.c,t,r,o,i)}containsPoint(e){return Br.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Br.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const r=this.a,o=this.b,i=this.c;let a,s;Lu.subVectors(o,r),Pu.subVectors(i,r),v2.subVectors(e,r);const l=Lu.dot(v2),c=Pu.dot(v2);if(l<=0&&c<=0)return t.copy(r);A2.subVectors(e,o);const u=Lu.dot(A2),d=Pu.dot(A2);if(u>=0&&d<=u)return t.copy(o);const f=l*d-u*c;if(f<=0&&l>=0&&u<=0)return a=l/(l-u),t.copy(r).addScaledVector(Lu,a);y2.subVectors(e,i);const h=Lu.dot(y2),p=Pu.dot(y2);if(p>=0&&h<=p)return t.copy(i);const m=h*c-l*p;if(m<=0&&c>=0&&p<=0)return s=c/(c-p),t.copy(r).addScaledVector(Pu,s);const g=u*p-h*d;if(g<=0&&d-u>=0&&h-p>=0)return KR.subVectors(i,o),s=(d-u)/(d-u+(h-p)),t.copy(o).addScaledVector(KR,s);const _=1/(g+m+f);return a=m*_,s=f*_,t.copy(r).addScaledVector(Lu,a).addScaledVector(Pu,s)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let lle=0;class Nr extends ti{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:lle++}),this.uuid=ji(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=0,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0,this.depthPrepass=!1,this.receiveShadow=!1,this.castShadow=!1,this.profile="",this.defines={},this.definesFragOnly=new Set,this.DefaultEnvMapAutoAssign=!0,this.envMapAutoAssign=this.DefaultEnvMapAutoAssign,this.gtaoVisible=!0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=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 r=e[t];if(r===void 0){console.warn("v3d.Material: '"+t+"' parameter is undefined.");continue}const o=this[t];o!==void 0?o&&o.isColor?o.set(r):o&&o.isVector3&&r&&r.isVector3?o.copy(r):this[t]=r:console.warn("v3d."+this.type+": '"+t+"' is not a property of this material.")}}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.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 r=null;if(t!==null){const o=t.length;r=new Array(o);for(let i=0;i!==o;++i)r[i]=t[i].clone()}return this.clippingPlanes=r,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.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this.depthPrepass=e.depthPrepass,this.defines=Object.assign({},e.defines),this.definesFragOnly=new Set(e.definesFragOnly),this.receiveShadow=e.receiveShadow,this.castShadow=e.castShadow,this.profile=e.profile,this.envMapAutoAssign=e.envMapAutoAssign,this.gtaoVisible=e.gtaoVisible,this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}get needsUpdate(){return this.version!=0}}class pr extends Nr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ge(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=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,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.fog=e.fog,this}}const mr=new N,Zg=new be;class Xe{constructor(e,t,r=!1){if(Array.isArray(e))throw new TypeError("v3d.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=r,this.usage=35044,this.updateRange={offset:0,count:-1},this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}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,r){e*=this.itemSize,r*=t.itemSize;for(let o=0,i=this.itemSize;o0){const r=e[t[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,i=r.length;ot.far?null:{distance:c,point:o0.clone(),object:n}}function i0(n,e,t,r,o,i,a,s,l,c,u,d){al.fromBufferAttribute(o,c),sl.fromBufferAttribute(o,u),ll.fromBufferAttribute(o,d);const f=n.morphTargetInfluences;if(i&&f){cl.set(0,0,0),Jg.set(0,0,0),e0.set(0,0,0);for(let p=0,m=i.length;p0?1:-1,u.push(T.x,T.y,T.z),d.push(W/w),d.push(1-R/L),ie+=1}}for(let R=0;R + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize(vWorldDirection); + + vec2 sampleUV = equirectUv(direction); + + gl_FragColor = texture2D(tEquirect, sampleUV); + + } + `},o=new nc(5,5,5),i=new Dn({name:"CubemapFromEquirect",uniforms:Ou(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:1,blending:0});i.uniforms.tEquirect.value=t;const a=new Mt(o,i),s=t.minFilter;return t.minFilter===1008&&(t.minFilter=1006),new a0(1,10,this).update(e,a),t.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,r,o){const i=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,r,o);e.setRenderTarget(i)}}const nr={checkWebGL:function(){try{const n=document.createElement("canvas");return!(!window.WebGLRenderingContext||!n.getContext("webgl"))}catch{return!1}},checkWebGL2:function(){try{const n=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!n.getContext("webgl2"))}catch{return!1}},checkWorkers:function(){return!!window.Worker},checkFileAPI:function(){return window.File&&window.FileReader&&window.FileList&&window.Blob},genWebGLErrorMessage:function(n){const e=document.createElement("div");e.setAttribute("class","v3d-webgl-error-container");const t=document.createElement("div");t.setAttribute("class","v3d-webgl-error-image"),e.appendChild(t);const r=document.createElement("div");return r.setAttribute("class","v3d-webgl-error"),r.innerHTML=n,e.appendChild(r),e},showWebGLErrorMessage:function(n,e){(n=n||document.body).appendChild(nr.genWebGLErrorMessage(e));const t=document.getElementById("v3d_preloader_container");t&&(t.style.visibility="hidden")},checkIOS:function(){return(/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream},checkAndroid:function(){return!!navigator.userAgent.match(/Android/i)},checkSafari:function(){return/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)},checkFloatTex:function(n,e){const t=n.getContext();return!(!n.capabilities.isWebGL2||!t.getExtension("EXT_color_buffer_float")||e&&!t.getExtension("OES_texture_float_linear"))||!(n.capabilities.isWebGL2||!t.getExtension("OES_texture_float")||e&&!t.getExtension("OES_texture_float_linear"))},checkHalfFloatTex:function(n,e){const t=n.getContext();return!(!n.capabilities.isWebGL2||!t.getExtension("EXT_color_buffer_float"))||!(n.capabilities.isWebGL2||!t.getExtension("OES_texture_half_float")||e&&!t.getExtension("OES_texture_half_float_linear"))},checkHalfFloatReadPixels:function(n){const e=n.getContext(),t=n.capabilities;return!/Firefox/.test(navigator.userAgent)&&!!(e.getExtension("EXT_color_buffer_half_float")||t.isWebGL2&&e.getExtension("EXT_color_buffer_float"))},checkFloatReadPixels:function(n){const e=n.getContext();return!!(n.capabilities.isWebGL2||e.getExtension("OES_texture_float")||e.getExtension("WEBGL_color_buffer_float"))},checkDepthTex:function(n){const e=n.getContext();return!(!n.capabilities.isWebGL2&&!e.getExtension("WEBGL_depth_texture"))},getGPUVendor:function(n){const e=n?n.getContext():document.createElement("canvas").getContext("webgl");if(/Firefox/.test(navigator.userAgent))return e.getParameter(7936);{const t=e.getExtension("WEBGL_debug_renderer_info");return t!=null?e.getParameter(t.UNMASKED_VENDOR_WEBGL):""}},getGPUModel:function(n){const e=n?n.getContext():document.createElement("canvas").getContext("webgl");if(/Firefox/.test(navigator.userAgent))return e.getParameter(7937);{const t=e.getExtension("WEBGL_debug_renderer_info");return t!=null?e.getParameter(t.UNMASKED_RENDERER_WEBGL):""}},checkWebXR:function(n,e,t){"xr"in navigator&&navigator.xr.isSessionSupported?navigator.xr.isSessionSupported(n).then((function(r){r?e():t()})).catch(t):t()},checkNativeWebXR:function(){return!1},checkCardboard:function(){return!1},checkSwiftShader:function(n){return this.getGPUModel(n)=="Google SwiftShader"},checkWebAudio:function(){return(window.AudioContext||window.webkitAudioContext)!==void 0},isSafariWithMultisamplingBug:function(){const n=navigator.userAgent;return!(!this.checkSafari()&&!n.match("MicroMessenger"))&&(n.match("Version/15.4")||n.match(/CPU (OS|iPhone OS) (15_4|15_4_1|15_4_2|15_4_3) like Mac OS X/))},isSafariWithUint16Bug:function(){const n=navigator.userAgent;return!(!this.checkSafari()&&!n.match("MicroMessenger"))&&n.match(/CPU (OS|iPhone OS) (11_[0-9][0-9_]*|12_[0-9][0-9_]*) like Mac OS X/)},isTouchDevice:function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}},I2=new N,ble=new N,xle=new ao;class Vo{constructor(e=new N(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,r,o){return this.normal.set(e,t,r),this.constant=o,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,r){const o=I2.subVectors(r,t).cross(ble.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(o,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(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const r=e.delta(I2),o=this.normal.dot(r);if(o===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const i=-(e.start.dot(this.normal)+this.constant)/o;return i<0||i>1?null:t.copy(r).multiplyScalar(i).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),r=this.distanceToPoint(e.end);return t<0&&r>0||r<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 r=t||xle.getNormalMatrix(e),o=this.coplanarPoint(I2).applyMatrix4(e),i=this.normal.applyMatrix3(r).normalize();return this.constant=-o.dot(i),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 ku=new ni,l0=new N;class ph{constructor(e=new Vo,t=new Vo,r=new Vo,o=new Vo,i=new Vo,a=new Vo){this.planes=[e,t,r,o,i,a]}set(e,t,r,o,i,a){const s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(r),s[3].copy(o),s[4].copy(i),s[5].copy(a),this}copy(e){const t=this.planes;for(let r=0;r<6;r++)t[r].copy(e.planes[r]);return this}setFromProjectionMatrix(e){const t=this.planes,r=e.elements,o=r[0],i=r[1],a=r[2],s=r[3],l=r[4],c=r[5],u=r[6],d=r[7],f=r[8],h=r[9],p=r[10],m=r[11],g=r[12],_=r[13],A=r[14],y=r[15];return t[0].setComponents(s-o,d-l,m-f,y-g).normalize(),t[1].setComponents(s+o,d+l,m+f,y+g).normalize(),t[2].setComponents(s+i,d+c,m+h,y+_).normalize(),t[3].setComponents(s-i,d-c,m-h,y-_).normalize(),t[4].setComponents(s-a,d-u,m-p,y-A).normalize(),t[5].setComponents(s+a,d+u,m+p,y+A).normalize(),this}intersectsObject(e){const t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),ku.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(ku)}intersectsSprite(e){return ku.center.set(0,0,0),ku.radius=.7071067811865476,ku.applyMatrix4(e.matrixWorld),this.intersectsSphere(ku)}intersectsSphere(e){const t=this.planes,r=e.center,o=-e.radius;for(let i=0;i<6;i++)if(t[i].distanceToPoint(r)0?e.max.x:e.min.x,l0.y=o.normal.y>0?e.max.y:e.min.y,l0.z=o.normal.z>0?e.max.z:e.min.z,o.distanceToPoint(l0)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let r=0;r<6;r++)if(t[r].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class jr extends kt{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,this.backgroundToneMapped=!0,this.postprocessing=[],this.worldMaterial=null,this.worldEnvMapProbe=null,typeof __V3D_DEVTOOLS__<"u"&&__V3D_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundToneMapped=e.backgroundToneMapped,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}dispose(){this.dispatchEvent({type:"dispose"})}}function nL(){let n=null,e=!1,t=null,r=null;function o(i,a){t(i,a),r=n.requestAnimationFrame(o)}return{start:function(){e!==!0&&t!==null&&(r=n.requestAnimationFrame(o),e=!0)},stop:function(){n.cancelAnimationFrame(r),e=!1},setAnimationLoop:function(i){t=i},setContext:function(i){n=i}}}function Ele(n,e){const t=e.isWebGL2;let r=new WeakMap;return{get:function(o){return r.get(o)},remove:function(o){const i=r.get(o);i&&(n.deleteBuffer(i.buffer),r.delete(o))},update:function(o,i){if(o.isGLBufferAttribute){const s=r.get(o);return void((!s||s.version0.0)?v:0.5*inversesqrt(max(1.0-x*x,1e-7))-v; +return cross(v1,v2)*theta_sintheta; +} +vec3 LTC_Evaluate(const in vec3 N,const in vec3 V,const in vec3 P,const in mat3 mInv,const in vec3 rectCoords[4]){ +vec3 v1=rectCoords[1]-rectCoords[0]; +vec3 v2=rectCoords[3]-rectCoords[0]; +vec3 lightNormal=cross(v1,v2); +if(dot(lightNormal,P-rectCoords[0])<0.0)return vec3(0.0); +vec3 T1,T2; +T1=normalize(V-N*dot(V,N)); +T2=-cross(N,T1); +mat3 mat=mInv*transposeMat3(mat3(T1,T2,N)); +vec3 coords[4]; +coords[0]=mat*(rectCoords[0]-P); +coords[1]=mat*(rectCoords[1]-P); +coords[2]=mat*(rectCoords[2]-P); +coords[3]=mat*(rectCoords[3]-P); +coords[0]=normalize(coords[0]); +coords[1]=normalize(coords[1]); +coords[2]=normalize(coords[2]); +coords[3]=normalize(coords[3]); +vec3 vectorFormFactor=vec3(0.0); +vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[0],coords[1]); +vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[1],coords[2]); +vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[2],coords[3]); +vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[3],coords[0]); +float result=LTC_ClippedSphereFormFactor(vectorFormFactor); +return vec3(result); +} +vec2 integrateSpecularBRDF(const in float dotNV,const in float roughness){ +const vec4 c0=vec4(-1,-0.0275,-0.572,0.022); +const vec4 c1=vec4(1,0.0425,1.04,-0.04); +vec4 r=roughness*c0+c1; +float a004=min(r.x*r.x,exp2(-9.28*dotNV))*r.x+r.y; +return vec2(-1.04,1.04)*a004+r.zw; +} +vec3 BRDF_Specular_GGX_Environment(const in vec3 viewDir,const in vec3 normal,const in vec3 specularColor,const in vec3 specularColor90,const in float roughness){ +float dotNV=saturate(dot(normal,viewDir)); +vec2 brdf=integrateSpecularBRDF(dotNV,roughness); +return specularColor*brdf.x+specularColor90*brdf.y; +} +#if defined(USE_SHEEN) +float D_Charlie(float roughness,float dotNH){ +float alpha=pow2(roughness); +float invAlpha=1.0/alpha; +float cos2h=dotNH*dotNH; +float sin2h=max(1.0-cos2h,0.0078125); +return (2.0+invAlpha)*pow(sin2h,invAlpha*0.5)/(2.0*PI); +} +float V_Neubelt(float dotNV,float dotNL){ +return saturate(1.0/(4.0*(dotNL+dotNV-dotNL*dotNV))); +} +vec3 BRDF_Sheen(const in vec3 lightDir,const in vec3 viewDir,const in vec3 normal,vec3 sheenColor,const in float sheenRoughness){ +vec3 halfDir=normalize(lightDir+viewDir); +float dotNL=saturate(dot(normal,lightDir)); +float dotNV=saturate(dot(normal,viewDir)); +float dotNH=saturate(dot(normal,halfDir)); +float D=D_Charlie(sheenRoughness,dotNH); +float V=V_Neubelt(dotNV,dotNL); +return sheenColor*(D*V); +} +#endif`,Dle=`#ifdef USE_BUMPMAP +uniform sampler2D bumpMap; +uniform float bumpScale; +vec2 dHdxy_fwd(){ +vec2 dSTdx=dFdx(vUv); +vec2 dSTdy=dFdy(vUv); +float Hll=bumpScale*texture2D(bumpMap,vUv).x; +float dBx=bumpScale*texture2D(bumpMap,vUv+dSTdx).x-Hll; +float dBy=bumpScale*texture2D(bumpMap,vUv+dSTdy).x-Hll; +return vec2(dBx,dBy); +} +vec3 perturbNormalArb(vec3 surf_pos,vec3 surf_norm,vec2 dHdxy,float faceDirection){ +vec3 vSigmaX=dFdx(surf_pos.xyz); +vec3 vSigmaY=dFdy(surf_pos.xyz); +vec3 vN=surf_norm; +vec3 R1=cross(vSigmaY,vN); +vec3 R2=cross(vN,vSigmaX); +float fDet=dot(vSigmaX,R1)*faceDirection; +vec3 vGrad=sign(fDet)*(dHdxy.x*R1+dHdxy.y*R2); +return normalize(abs(fDet)*surf_norm-vGrad); +} +#endif`,Ble=`#if NUM_CLIPPING_PLANES>0 +vec4 plane; +#pragma unroll_loop +for (int i=0;iplane.w)discard; +} +#if UNION_CLIPPING_PLANESplane.w)&&clipped; +} +if (clipped)discard; +#endif +#endif`,Nle=`#if NUM_CLIPPING_PLANES>0 +varying vec3 vClipPosition; +uniform vec4 clippingPlanes[NUM_CLIPPING_PLANES]; +#endif`,Ole=`#if NUM_CLIPPING_PLANES>0 +varying vec3 vClipPosition; +#endif`,kle=`#if NUM_CLIPPING_PLANES>0 +vClipPosition=-mvPosition.xyz; +#endif`,Fle=`#if defined(USE_COLOR_ALPHA) +diffuseColor*=vColor; +#elif defined(USE_COLOR) +diffuseColor.rgb*=vColor; +#endif`,Vle=`#if defined(USE_COLOR_ALPHA) +varying vec4 vColor; +#elif defined(USE_COLOR) +varying vec3 vColor; +#endif`,Ule=`#if defined(USE_COLOR_ALPHA) +varying vec4 vColor; +#elif defined(USE_COLOR)||defined(USE_INSTANCING_COLOR) +varying vec3 vColor; +#endif`,zle=`#if defined(USE_COLOR_ALPHA) +vColor=vec4(1.0); +#elif defined(USE_COLOR)||defined(USE_INSTANCING_COLOR) +vColor=vec3(1.0); +#endif +#ifdef USE_COLOR +vColor*=color; +#endif +#ifdef USE_INSTANCING_COLOR +vColor.xyz*=instanceColor.xyz; +#endif`,Gle=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate(a)clamp(a,0.0,1.0) +#endif +float pow2(const in float x){return x*x;} +vec3 pow2(const in vec3 x){return x*x;} +float pow3(const in float x){return x*x*x;} +float pow4(const in float x){float x2=x*x;return x2*x2;} +float max3(const in vec3 v){return max(max(v.x,v.y),v.z);} +float average(const in vec3 v){return dot(v,vec3(0.3333333));} +highp float rand(const in vec2 uv){ +const highp float a=12.9898,b=78.233,c=43758.5453; +highp float dt=dot(uv.xy,vec2(a,b)),sn=mod(dt,PI); +return fract(sin(sn)*c); +} +struct IncidentLight { +vec3 color; +vec3 direction; +bool visible; +}; +struct ReflectedLight { +vec3 directDiffuse; +vec3 directSpecular; +vec3 indirectDiffuse; +vec3 indirectSpecular; +}; +struct GeometricContext { +vec3 position; +vec3 normal; +vec3 viewDir; +vec3 probeNormal; +#ifdef USE_CLEARCOAT +vec3 clearcoatNormal; +#endif +}; +vec3 transformDirection(in vec3 dir,in mat4 matrix){ +return normalize((matrix*vec4(dir,0.0)).xyz); +} +vec3 inverseTransformDirection(in vec3 dir,in mat4 matrix){ +return normalize((vec4(dir,0.0)*matrix).xyz); +} +mat3 transposeMat3(const in mat3 m){ +mat3 tmp; +tmp[0]=vec3(m[0].x,m[1].x,m[2].x); +tmp[1]=vec3(m[0].y,m[1].y,m[2].y); +tmp[2]=vec3(m[0].z,m[1].z,m[2].z); +return tmp; +} +float linearToRelativeLuminance(const in vec3 color){ +const vec3 weights=vec3(0.2126729,0.7151522,0.0721750); +return dot(weights,color.rgb); +} +bool isPerspectiveMatrix(mat4 m){ +return m[2][3]==-1.0; +} +vec2 equirectUv(in vec3 dir){ +float u=atan(dir.z,dir.x)*RECIPROCAL_PI2+0.5; +float v=asin(clamp(dir.y,-1.0,1.0))*RECIPROCAL_PI+0.5; +return vec2(u,v); +} +vec3 octUVToCubeVec(vec2 octUV,vec2 texelSize){ +octUV=(1.0+2.0*texelSize)*octUV-texelSize; +octUV=octUV*2.0-1.0; +float x=octUV.x; +float z=-octUV.y; +float absX=abs(x); +float absZ=abs(z); +vec3 cubeVec=vec3(x,1.0-absX-absZ,z); +if (absX+absZ>1.0){ +cubeVec.xz=-(vec2(absZ,absX)-1.0)*sign(vec2(x,z)); +} +return cubeVec; +} +vec2 cubeVecToOctUV(vec3 cubeVec,vec2 texelSize){ +cubeVec/=dot(vec3(1.0),abs(cubeVec)); +vec2 octUV=vec2(cubeVec.x,-cubeVec.z); +if (cubeVec.y<0.0){ +octUV=sign(octUV)*(1.0-abs(octUV.ts)); +} +octUV=(octUV+1.0)/2.0; +octUV=(1.0-2.0*texelSize)*octUV+texelSize; +return octUV; +} +vec3 vec3RotateAxisAngle(vec3 vector,vec3 axis,float angle){ +vec3 axisNorm=normalize(axis); +float x=axisNorm.x,y=axisNorm.y,z=axisNorm.z; +float s=sin(angle),c=cos(angle); +return mat3(x*x*(1.0-c)+c,x*y*(1.0-c)+z*s,x*z*(1.0-c)-y*s,x*y*(1.0-c)-z*s,y*y*(1.0-c)+c,y*z*(1.0-c)+x*s,x*z*(1.0-c)+y*s,y*z*(1.0-c)-x*s,z*z*(1.0-c)+c +)*vector; +}`,Hle=`#ifdef ENVMAP_TYPE_CUBE_UV +float getFace(vec3 direction){ +vec3 absDirection=abs(direction); +float face=-1.0; +if (absDirection.x>absDirection.z){ +if (absDirection.x>absDirection.y){ +face=direction.x>0.0?0.0:3.0; +} else { +face=direction.y>0.0?1.0:4.0; +} +} else { +if (absDirection.z>absDirection.y){ +face=direction.z>0.0?2.0:5.0; +} else { +face=direction.y>0.0?1.0:4.0; +} +} +return face; +} +vec2 getUV(vec3 direction,float face){ +vec2 uv; +if (face==0.0){ +uv=vec2(-direction.z,direction.y)/abs(direction.x); +} else if (face==1.0){ +uv=vec2(direction.x,-direction.z)/abs(direction.y); +} else if (face==2.0){ +uv=direction.xy/abs(direction.z); +} else if (face==3.0){ +uv=vec2(direction.z,direction.y)/abs(direction.x); +} else if (face==4.0){ +uv=direction.xz/abs(direction.y); +} else { +uv=vec2(-direction.x,direction.y)/abs(direction.z); +} +return 0.5*(uv+1.0); +} +#ifndef cubeUV_maxTileSize +#define cubeUV_maxTileSize 256.0 +#endif +#define cubeUV_lodIdxMin 0.0 +#define cubeUV_lodIdxLastDownscaled 4.0 +#define cubeUV_lodIdxMax 10.0 +#define cubeUV_minTileSize (cubeUV_maxTileSize/exp2(cubeUV_lodIdxLastDownscaled)) +float getLodTileSize(float lodIdx){ +return cubeUV_maxTileSize/exp2(min(lodIdx,cubeUV_lodIdxLastDownscaled)); +} +float getLodFilterLevel(float lodIdx){ +return max(lodIdx-cubeUV_lodIdxLastDownscaled,0.0); +} +vec2 fixCubeUVSeams(vec2 uv,float faceSize){ +float BORDER_WIDTH_PX=max(cubeUV_maxTileSize/256.0-1.0,0.0); +float scale=(faceSize-BORDER_WIDTH_PX)/faceSize; +float offset=0.5*BORDER_WIDTH_PX/faceSize; +return uv*scale+offset; +} +vec2 getUVPixels(vec3 direction,float lodIdx){ +float face=getFace(direction); +float faceSize=getLodTileSize(lodIdx); +float filterLevel=getLodFilterLevel(lodIdx); +vec2 uv=getUV(direction,face); +uv=fixCubeUVSeams(uv,faceSize); +uv*=(faceSize-1.0); +if (face>2.0){ +uv.y+=faceSize; +face-=3.0; +} +uv.x+=face*faceSize; +if (lodIdx>0.0){ +uv.y+=2.0*cubeUV_maxTileSize; +} +uv.y+=filterLevel*2.0*cubeUV_minTileSize; +uv.x+=3.0*max(0.0,cubeUV_maxTileSize-2.0*faceSize); +return uv; +} +vec3 bilinearCubeUV(sampler2D envMap,vec3 direction,float lodIdx){ +float texelSize=1.0/(3.0*cubeUV_maxTileSize); +vec2 uv=getUVPixels(direction,lodIdx); +vec2 f=fract(uv); +uv+=0.5-f; +uv*=texelSize; +vec3 tl=texture2D(envMap,uv).rgb; +uv.x+=texelSize; +vec3 tr=texture2D(envMap,uv).rgb; +uv.y+=texelSize; +vec3 br=texture2D(envMap,uv).rgb; +uv.x-=texelSize; +vec3 bl=texture2D(envMap,uv).rgb; +vec3 tm=mix(tl,tr,f.x); +vec3 bm=mix(bl,br,f.x); +return mix(tm,bm,f.y); +} +vec3 sampleCubeUV(sampler2D envMap,vec3 direction,float lodIdx){ +float texelSize=1.0/(3.0*cubeUV_maxTileSize); +vec2 uv=getUVPixels(direction,lodIdx); +uv+=0.5; +uv*=texelSize; +return texture2D(envMap,uv).rgb; +} +float roughnessToMip(float roughness){ +float r=roughness; +float r2=r*r; +float r3=r2*r; +roughness=-1.20278049*r3+1.86860137*r2+0.32478081*r+0.0098139; +return roughness*(cubeUV_lodIdxMax-cubeUV_lodIdxMin); +} +vec4 textureCubeUV(sampler2D envMap,vec3 sampleDir,float roughness){ +float lodIdx=clamp(roughnessToMip(roughness),cubeUV_lodIdxMin,cubeUV_lodIdxMax); +float lodIdxF=fract(lodIdx); +float lodIdxI=floor(lodIdx); +vec3 color0=sampleCubeUV(envMap,sampleDir,lodIdxI); +if (lodIdxF==0.0){ +return vec4(color0,1.0); +} else { +vec3 color1=sampleCubeUV(envMap,sampleDir,lodIdxI+1.0); +return vec4(mix(color0,color1,lodIdxF),1.0); +} +} +#endif`,Wle=`vec3 transformedNormal=objectNormal; +#ifdef USE_INSTANCING +mat3 m=mat3(instanceMatrix); +transformedNormal/=vec3(dot(m[0],m[0]),dot(m[1],m[1]),dot(m[2],m[2])); +transformedNormal=m*transformedNormal; +#endif +transformedNormal=normalMatrix*transformedNormal; +#ifdef FLIP_SIDED +transformedNormal=-transformedNormal; +#endif +#ifdef USE_TANGENT +vec3 transformedTangent=(modelViewMatrix*vec4(objectTangent,0.0)).xyz; +#ifdef FLIP_SIDED +transformedTangent=-transformedTangent; +#endif +#endif`,jle=`#ifdef USE_DISPLACEMENTMAP +uniform sampler2D displacementMap; +uniform float displacementScale; +uniform float displacementBias; +#endif`,Qle=`#ifdef USE_DISPLACEMENTMAP +transformed+=normalize(objectNormal)*(texture2D(displacementMap,vUv).x*displacementScale+displacementBias); +#endif`,$le=`#ifdef USE_EMISSIVEMAP +vec4 emissiveColor=texture2D(emissiveMap,vUv); +totalEmissiveRadiance*=emissiveColor.rgb; +#endif`,Yle=`#ifdef USE_EMISSIVEMAP +uniform sampler2D emissiveMap; +#endif`,Xle="gl_FragColor=linearToOutputTexel(gl_FragColor);",qle=`vec4 LinearToLinear(in vec4 value){ +return value; +} +vec4 LinearTosRGB(in vec4 value){ +return vec4(mix(pow(value.rgb,vec3(0.41666))*1.055-vec3(0.055),value.rgb*12.92,vec3(lessThanEqual(value.rgb,vec3(0.0031308)))),value.a); +}`,Kle=`#ifdef USE_ENVMAP +#ifdef ENV_WORLDPOS +vec3 cameraToFrag; +if (isOrthographic){ +cameraToFrag=normalize(vec3(-viewMatrix[0][2],-viewMatrix[1][2],-viewMatrix[2][2])); +} else { +cameraToFrag=normalize(vWorldPosition-cameraPosition); +} +vec3 worldNormal=inverseTransformDirection(normal,viewMatrix); +#ifdef ENVMAP_MODE_REFLECTION +vec3 reflectVec=reflect(cameraToFrag,worldNormal); +#else +vec3 reflectVec=refract(cameraToFrag,worldNormal,refractionRatio); +#endif +#else +vec3 reflectVec=vReflect; +#endif +#ifdef ENVMAP_TYPE_CUBE +vec4 envColor=textureCube(envMap,vec3(flipEnvMap*reflectVec.x,reflectVec.yz)); +#else +vec4 envColor=vec4(0.0); +#endif +#ifdef ENVMAP_BLENDING_MULTIPLY +outgoingLight=mix(outgoingLight,outgoingLight*envColor.xyz,specularStrength*reflectivity); +#elif defined(ENVMAP_BLENDING_MIX) +outgoingLight=mix(outgoingLight,envColor.xyz,specularStrength*reflectivity); +#elif defined(ENVMAP_BLENDING_ADD) +outgoingLight+=envColor.xyz*specularStrength*reflectivity; +#endif +#endif`,Zle=`#ifdef USE_ENVMAP +uniform float envMapIntensity; +uniform float flipEnvMap; +#ifdef ENVMAP_TYPE_CUBE +uniform samplerCube envMap; +#else +uniform sampler2D envMap; +#endif +#if defined(ENVMAP_TYPE_CUBE)&&defined(NODE)||defined(ENVMAP_TYPE_CUBE_UV) +float calcGeometryRoughness(vec3 geometryNormal){ +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +return max(max(dxy.x,dxy.y),dxy.z); +} +float calcCubeUVAdjustedRoughness(float origRoughness,float geomRoughness){ +return min(max(origRoughness,0.0525)+geomRoughness,1.0); +} +#endif +#endif`,Jle=`#ifdef USE_ENVMAP +uniform float reflectivity; +#if defined(USE_BUMPMAP)||defined(USE_NORMALMAP)||defined(LAMBERT) +#define ENV_WORLDPOS +#endif +#ifdef ENV_WORLDPOS +varying vec3 vWorldPosition; +uniform float refractionRatio; +#else +varying vec3 vReflect; +#endif +#endif`,ece=`#ifdef USE_ENVMAP +#if defined(USE_BUMPMAP)||defined(USE_NORMALMAP)||defined(LAMBERT) +#define ENV_WORLDPOS +#endif +#ifdef ENV_WORLDPOS +varying vec3 vWorldPosition; +#else +varying vec3 vReflect; +uniform float refractionRatio; +#endif +#endif`,tce=`#ifdef USE_ENVMAP +#ifdef ENV_WORLDPOS +vWorldPosition=worldPosition.xyz; +#else +vec3 cameraToVertex; +if (isOrthographic){ +cameraToVertex=normalize(vec3(-viewMatrix[0][2],-viewMatrix[1][2],-viewMatrix[2][2])); +} else { +cameraToVertex=normalize(worldPosition.xyz-cameraPosition); +} +vec3 worldNormal=inverseTransformDirection(transformedNormal,viewMatrix); +#ifdef ENVMAP_MODE_REFLECTION +vReflect=reflect(cameraToVertex,worldNormal); +#else +vReflect=refract(cameraToVertex,worldNormal,refractionRatio); +#endif +#endif +#endif`,nce=`#ifdef USE_FOG +vFogDepth=-mvPosition.z; +#endif`,rce=`#ifdef USE_FOG +varying float vFogDepth; +#endif`,oce=`#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`,ice=`#ifdef USE_FOG +uniform vec3 fogColor; +varying float vFogDepth; +#ifdef FOG_EXP2 +uniform float fogDensity; +#else +uniform float fogNear; +uniform float fogFar; +#endif +#endif`,ace=`#ifdef USE_LIGHTMAP +vec4 lightMapTexel=texture2D(lightMap,vUv2); +vec3 lightMapIrradiance=lightMapTexel.rgb*lightMapIntensity; +reflectedLight.indirectDiffuse+=lightMapIrradiance; +#endif`,sce=`#ifdef USE_LIGHTMAP +uniform sampler2D lightMap; +uniform float lightMapIntensity; +#endif`,lce=`LambertMaterial material; +material.diffuseColor=diffuseColor.rgb; +material.specularStrength=specularStrength;`,cce=`varying vec3 vViewPosition; +struct LambertMaterial { +vec3 diffuseColor; +float specularStrength; +}; +void RE_Direct_Lambert(const in IncidentLight directLight,const in GeometricContext geometry,const in LambertMaterial material,inout ReflectedLight reflectedLight){ +float dotNL=saturate(dot(geometry.normal,directLight.direction)); +vec3 irradiance=dotNL*directLight.color; +reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectDiffuse_Lambert(const in vec3 irradiance,const in GeometricContext geometry,const in LambertMaterial material,inout ReflectedLight reflectedLight){ +reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,uce=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +uniform vec3 lightProbe[9]; +vec3 shGetIrradianceAt(in vec3 normal,in vec3 shCoefficients[9]){ +float x=normal.x,y=normal.y,z=normal.z; +vec3 result=shCoefficients[0]*0.886227; +result+=shCoefficients[1]*2.0*0.511664*y; +result+=shCoefficients[2]*2.0*0.511664*z; +result+=shCoefficients[3]*2.0*0.511664*x; +result+=shCoefficients[4]*2.0*0.429043*x*y; +result+=shCoefficients[5]*2.0*0.429043*y*z; +result+=shCoefficients[6]*(0.743125*z*z-0.247708); +result+=shCoefficients[7]*2.0*0.429043*x*z; +result+=shCoefficients[8]*0.429043*(x*x-y*y); +return result; +} +vec3 getLightProbeIrradiance(const in vec3 lightProbe[9],const in vec3 normal){ +vec3 worldNormal=inverseTransformDirection(normal,viewMatrix); +vec3 irradiance=shGetIrradianceAt(worldNormal,lightProbe); +return irradiance; +} +vec3 getAmbientLightIrradiance(const in vec3 ambientLightColor){ +vec3 irradiance=ambientLightColor; +return irradiance; +} +float getDistanceAttenuation(float lightDistance,const in float cutoffDistance,const in float decayExponent){ +lightDistance=UNITS_SCALE_FACTOR*lightDistance; +#ifdef MT_MAYA +float distanceFalloff=1.0/pow(lightDistance+1.0,decayExponent); +#else +float distanceFalloff=1.0/max(pow(lightDistance,decayExponent),0.01); +#endif +if (cutoffDistance>0.0){ +distanceFalloff*=pow2(saturate(1.0-pow4(lightDistance/(UNITS_SCALE_FACTOR*cutoffDistance)))); +} +return distanceFalloff; +} +float getSpotAttenuation(const in float coneCosine,const in float penumbraCosine,const in float angleCosine){ +return smoothstep(coneCosine,penumbraCosine,angleCosine); +} +#if NUM_DIR_LIGHTS>0 +struct DirectionalLight { +vec3 direction; +vec3 color; +}; +uniform DirectionalLight directionalLights[NUM_DIR_LIGHTS]; +void getDirectionalLightInfo(const in DirectionalLight directionalLight,const in GeometricContext geometry,out IncidentLight light){ +light.color=directionalLight.color; +light.direction=directionalLight.direction; +light.visible=true; +} +#endif +#if NUM_POINT_LIGHTS>0 +struct PointLight { +vec3 position; +vec3 color; +float distance; +float decay; +}; +uniform PointLight pointLights[NUM_POINT_LIGHTS]; +void getPointLightInfo(const in PointLight pointLight,const in GeometricContext geometry,out IncidentLight light){ +vec3 lVector=pointLight.position-geometry.position; +light.direction=normalize(lVector); +float lightDistance=length(lVector); +light.color=pointLight.color; +light.color*=getDistanceAttenuation(lightDistance,pointLight.distance,pointLight.decay); +light.visible=(light.color != vec3(0.0)); +} +#endif +#if NUM_SPOT_LIGHTS>0 +struct SpotLight { +vec3 position; +vec3 direction; +vec3 color; +float distance; +float decay; +float coneCos; +float penumbraCos; +}; +uniform SpotLight spotLights[NUM_SPOT_LIGHTS]; +void getSpotLightInfo(const in SpotLight spotLight,const in GeometricContext geometry,out IncidentLight light){ +vec3 lVector=spotLight.position-geometry.position; +light.direction=normalize(lVector); +float angleCos=dot(light.direction,spotLight.direction); +#if defined(MT_MAX) +float coneCosDecayed=2.0*spotLight.coneCos-spotLight.penumbraCos; +if (angleCos>coneCosDecayed){ +float spotAttenuation=pow(max(angleCos,0.0),log(0.5)/log(spotLight.penumbraCos)-1.0); +if (angleCos0.0){ +float lightDistance=length(lVector); +light.color=spotLight.color*spotAttenuation; +light.color*=getDistanceAttenuation(lightDistance,spotLight.distance,spotLight.decay); +light.visible=true; +} else { +light.color=vec3(0.0); +light.visible=false; +} +#endif +} +#endif +#if NUM_RECT_AREA_LIGHTS>0 +struct RectAreaLight { +vec3 color; +vec3 position; +vec3 halfWidth; +vec3 halfHeight; +}; +uniform sampler2D ltc_1; +uniform sampler2D ltc_2; +uniform RectAreaLight rectAreaLights[NUM_RECT_AREA_LIGHTS]; +#endif +#if NUM_HEMI_LIGHTS>0 +struct HemisphereLight { +vec3 direction; +vec3 skyColor; +vec3 groundColor; +}; +uniform HemisphereLight hemisphereLights[NUM_HEMI_LIGHTS]; +vec3 getHemisphereLightIrradiance(const in HemisphereLight hemiLight,const in vec3 normal){ +float dotNL=dot(normal,hemiLight.direction); +float hemiDiffuseWeight=0.5*dotNL+0.5; +vec3 irradiance=mix(hemiLight.groundColor,hemiLight.skyColor,hemiDiffuseWeight); +return irradiance; +} +#endif`,dce=`#if defined(USE_ENVMAP) +#define ENVMAP_PARALLAX_INFINITE 0 +#define ENVMAP_PARALLAX_SPHERE 1 +#define ENVMAP_PARALLAX_BOX 2 +uniform int envMapParallaxType; +uniform mat4 envMapParallaxMatrix; +uniform mat4 envMapParallaxMatrixInv; +vec3 correctParallax(vec3 directionVecWorld,vec3 posWorld,int parallaxType){ +vec3 posProbe=(envMapParallaxMatrix*vec4(posWorld,1.0)).xyz; +vec3 reflectVecProbe=transformDirection(directionVecWorld,envMapParallaxMatrix); +if (parallaxType==ENVMAP_PARALLAX_SPHERE){ +float b=2.0*dot(reflectVecProbe,posProbe); +float c=dot(posProbe,posProbe)-1.0; +float D=b*b-4.0*c; +if (D>=0.0){ +float x=(sqrt(D)-b)/2.0; +reflectVecProbe=posProbe+x*reflectVecProbe; +} +} else if (parallaxType==ENVMAP_PARALLAX_BOX){ +vec3 scalePos=(vec3(1.0)-posProbe)/reflectVecProbe; +vec3 scaleNeg=(vec3(-1.0)-posProbe)/reflectVecProbe; +vec3 scalePosNeg=mix(scaleNeg,scalePos,step(vec3(0.0),reflectVecProbe)); +float x=min(scalePosNeg.x,min(scalePosNeg.y,scalePosNeg.z)); +reflectVecProbe=posProbe+x*reflectVecProbe; +} +vec3 directionVecWorldCorrected=transformDirection(reflectVecProbe,envMapParallaxMatrixInv); +return directionVecWorldCorrected; +} +vec3 getIBLIrradiance(const in vec3 normal){ +#if defined(ENVMAP_TYPE_CUBE_UV) +vec3 worldNormal=inverseTransformDirection(normal,viewMatrix); +vec4 envMapColor=textureCubeUV(envMap,worldNormal,1.0); +return PI*envMapColor.rgb*envMapIntensity; +#else +return vec3(0.0); +#endif +} +vec3 getIBLRadiance(const in vec3 viewDir,const in vec3 normal,const in float roughness,vec3 position){ +#if defined(ENVMAP_TYPE_CUBE_UV) +vec3 reflectVec=reflect(-viewDir,normal); +reflectVec=inverseTransformDirection(reflectVec,viewMatrix); +if (envMapParallaxType != ENVMAP_PARALLAX_INFINITE){ +vec3 posWorld=(invViewMatrix*vec4(position,1.0)).xyz; +reflectVec=correctParallax(reflectVec,posWorld,envMapParallaxType); +} +vec4 envMapColor=textureCubeUV(envMap,reflectVec,roughness); +return envMapColor.rgb*envMapIntensity; +#else +return vec3(0.0); +#endif +} +vec3 getIBLRefraction(const in vec3 viewDir,const in vec3 normal,const in float roughness,const float refrRatio,vec3 position){ +#if defined(ENVMAP_TYPE_CUBE_UV) +vec3 refractVec=refract(-viewDir,normal,refrRatio); +refractVec=inverseTransformDirection(refractVec,viewMatrix); +if (envMapParallaxType != ENVMAP_PARALLAX_INFINITE){ +vec3 posWorld=(invViewMatrix*vec4(position,1.0)).xyz; +refractVec=correctParallax(refractVec,posWorld,envMapParallaxType); +} +vec4 envMapColor=textureCubeUV(envMap,refractVec,roughness); +return envMapColor.rgb*envMapIntensity; +#else +return vec3(0.0); +#endif +} +#endif`,fce=`PhysicalMaterial material; +material.diffuseColor=diffuseColor.rgb*(1.0-metalnessFactor); +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z); +material.roughness=max(roughnessFactor,0.0525); +material.roughness+=geometryRoughness; +material.roughness=min(material.roughness,1.0); +#ifdef IOR +material.ior=ior; +#ifdef SPECULAR +float specularIntensityFactor=specularIntensity; +vec3 specularColorFactor=specularColor; +#ifdef USE_SPECULARINTENSITYMAP +specularIntensityFactor*=texture2D(specularIntensityMap,vUv).a; +#endif +#ifdef USE_SPECULARCOLORMAP +specularColorFactor*=texture2D(specularColorMap,vUv).rgb; +#endif +material.specularF90=mix(specularIntensityFactor,1.0,metalnessFactor); +#else +float specularIntensityFactor=1.0; +vec3 specularColorFactor=vec3(1.0); +material.specularF90=1.0; +#endif +material.specularColor=mix(min(pow2((material.ior-1.0)/(material.ior+1.0))*specularColorFactor,vec3(1.0))*specularIntensityFactor,diffuseColor.rgb,metalnessFactor); +#else +material.specularColor=mix(vec3(0.04),diffuseColor.rgb,metalnessFactor); +material.specularF90=1.0; +#endif +#ifdef USE_CLEARCOAT +material.clearcoat=clearcoat; +material.clearcoatRoughness=clearcoatRoughness; +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#ifdef USE_CLEARCOATMAP +material.clearcoat*=texture2D(clearcoatMap,vUv).x; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP +material.clearcoatRoughness*=texture2D(clearcoatRoughnessMap,vUv).y; +#endif +material.clearcoat=saturate(material.clearcoat); +material.clearcoatRoughness=max(material.clearcoatRoughness,0.0525); +material.clearcoatRoughness+=geometryRoughness; +material.clearcoatRoughness=min(material.clearcoatRoughness,1.0); +#endif`,hce=`struct PhysicalMaterial { +vec3 diffuseColor; +float roughness; +vec3 specularColor; +float specularF90; +#ifdef USE_CLEARCOAT +float clearcoat; +float clearcoatRoughness; +vec3 clearcoatF0; +float clearcoatF90; +#endif +#ifdef IOR +float ior; +#endif +#ifdef USE_TRANSMISSION +float transmission; +float transmissionAlpha; +float thickness; +float attenuationDistance; +vec3 attenuationColor; +#endif +}; +vec3 clearcoatSpecular=vec3(0.0); +vec2 DFGApprox(const in vec3 normal,const in vec3 viewDir,const in float roughness){ +float dotNV=saturate(dot(normal,viewDir)); +const vec4 c0=vec4(- 1,-0.0275,-0.572,0.022); +const vec4 c1=vec4(1,0.0425,1.04,-0.04); +vec4 r=roughness*c0+c1; +float a004=min(r.x*r.x,exp2(- 9.28*dotNV))*r.x+r.y; +vec2 fab=vec2(- 1.04,1.04)*a004+r.zw; +return fab; +} +vec3 EnvironmentBRDF(const in vec3 normal,const in vec3 viewDir,const in vec3 specularColor,const in float specularF90,const in float roughness){ +vec2 fab=DFGApprox(normal,viewDir,roughness); +return specularColor*fab.x+specularF90*fab.y; +} +void computeMultiscattering(const in vec3 normal,const in vec3 viewDir,const in vec3 specularColor,const in float specularF90,const in float roughness,inout vec3 singleScatter,inout vec3 multiScatter){ +vec2 fab=DFGApprox(normal,viewDir,roughness); +vec3 Fr=specularColor; +vec3 FssEss=Fr*fab.x+specularF90*fab.y; +float Ess=fab.x+fab.y; +float Ems=1.0-Ess; +vec3 Favg=Fr+(1.0-Fr)*0.047619; +vec3 Fms=FssEss*Favg/(1.0-Ems*Favg); +singleScatter+=FssEss; +multiScatter+=Fms*Ems; +} +#if NUM_RECT_AREA_LIGHTS>0 +void RE_Direct_RectArea_Physical(const in RectAreaLight rectAreaLight,const in GeometricContext geometry,const in PhysicalMaterial material,inout ReflectedLight reflectedLight){ +vec3 normal=geometry.normal; +vec3 viewDir=geometry.viewDir; +vec3 position=geometry.position; +vec3 lightPos=rectAreaLight.position; +vec3 halfWidth=rectAreaLight.halfWidth; +vec3 halfHeight=rectAreaLight.halfHeight; +vec3 lightColor=rectAreaLight.color; +float roughness=material.roughness; +vec3 rectCoords[4]; +rectCoords[0]=lightPos+halfWidth-halfHeight; +rectCoords[1]=lightPos-halfWidth-halfHeight; +rectCoords[2]=lightPos-halfWidth+halfHeight; +rectCoords[3]=lightPos+halfWidth+halfHeight; +vec2 uv=LTC_Uv(normal,viewDir,roughness); +vec4 t1=texture2D(ltc_1,uv); +vec4 t2=texture2D(ltc_2,uv); +mat3 mInv=mat3(vec3(t1.x,0,t1.y),vec3( 0,1,0),vec3(t1.z,0,t1.w) +); +vec3 fresnel=(material.specularColor*t2.x+(vec3(1.0)-material.specularColor)*t2.y); +reflectedLight.directSpecular+=lightColor*fresnel*LTC_Evaluate(normal,viewDir,position,mInv,rectCoords); +reflectedLight.directDiffuse+=lightColor*material.diffuseColor*LTC_Evaluate(normal,viewDir,position,mat3(1.0),rectCoords); +} +#endif +void RE_Direct_Physical(const in IncidentLight directLight,const in GeometricContext geometry,const in PhysicalMaterial material,inout ReflectedLight reflectedLight){ +float dotNL=saturate(dot(geometry.normal,directLight.direction)); +vec3 irradiance=dotNL*directLight.color; +#ifdef USE_CLEARCOAT +float dotNLcc=saturate(dot(geometry.clearcoatNormal,directLight.direction)); +vec3 ccIrradiance=dotNLcc*directLight.color; +clearcoatSpecular+=ccIrradiance*BRDF_GGX(directLight.direction,geometry.viewDir,geometry.clearcoatNormal,material.clearcoatF0,material.clearcoatF90,material.clearcoatRoughness); +#endif +reflectedLight.directSpecular+=irradiance*BRDF_GGX(directLight.direction,geometry.viewDir,geometry.normal,material.specularColor,material.specularF90,material.roughness); +reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectDiffuse_Physical(const in vec3 irradiance,const in GeometricContext geometry,const in PhysicalMaterial material,inout ReflectedLight reflectedLight){ +reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectSpecular_Physical(const in vec3 radiance,const in vec3 irradiance,const in vec3 clearcoatRadiance,const in GeometricContext geometry,const in PhysicalMaterial material,inout ReflectedLight reflectedLight){ +#ifdef USE_CLEARCOAT +clearcoatSpecular+=clearcoatRadiance*EnvironmentBRDF(geometry.clearcoatNormal,geometry.viewDir,material.clearcoatF0,material.clearcoatF90,material.clearcoatRoughness); +#endif +vec3 singleScattering=vec3(0.0); +vec3 multiScattering=vec3(0.0); +vec3 cosineWeightedIrradiance=irradiance*RECIPROCAL_PI; +computeMultiscattering(geometry.normal,geometry.viewDir,material.specularColor,material.specularF90,material.roughness,singleScattering,multiScattering); +vec3 totalScattering=singleScattering+multiScattering; +vec3 diffuse=material.diffuseColor*(1.0-max(max(totalScattering.r,totalScattering.g),totalScattering.b)); +reflectedLight.indirectSpecular+=radiance*singleScattering; +reflectedLight.indirectSpecular+=multiScattering*cosineWeightedIrradiance; +reflectedLight.indirectDiffuse+=diffuse*cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion(const in float dotNV,const in float ambientOcclusion,const in float roughness){ +return saturate(pow(abs(dotNV+ambientOcclusion),exp2(- 16.0*roughness-1.0))-1.0+ambientOcclusion); +}`,pce=` +GeometricContext geometry; +geometry.position=-vViewPosition; +geometry.normal=normal; +geometry.viewDir=(isOrthographic)?vec3(0,0,1):normalize(vViewPosition); +#ifdef USE_CLEARCOAT +geometry.clearcoatNormal=clearcoatNormal; +#endif +#ifdef PROBE_NORMAL +geometry.probeNormal=PROBE_NORMAL; +#else +geometry.probeNormal=normal; +#endif +IncidentLight directLight; +#if (NUM_POINT_LIGHTS>0)&&defined(RE_Direct) +PointLight pointLight; +#if defined(USE_SHADOWMAP)&&NUM_POINT_LIGHT_SHADOWS>0 +PointLightShadow pointLightShadow; +#endif +#pragma unroll_loop +for (int i=0;i0)&&defined(RE_Direct) +SpotLight spotLight; +#if defined(USE_SHADOWMAP)&&NUM_SPOT_LIGHT_SHADOWS>0 +SpotLightShadow spotLightShadow; +#endif +#pragma unroll_loop +for (int i=0;i0)&&defined(RE_Direct) +DirectionalLight directionalLight; +#if defined(USE_SHADOWMAP)&&NUM_DIR_LIGHT_SHADOWS_CSM>0 +DirectionalLightShadowCSM directionalLightShadowCSM; +DirectionalLightShadowCascade dirShadowCascade; +vec2 cascade; +float cascadeCenter; +float closestEdge; +float margin; +float csmx,csmy; +float linearDepth; +int maxCascadeIdx; +#pragma unroll_loop +for (int i=0;i=2 +else if (dirShadowCascade.csmIdx==1){ +directionalLightShadowCSM=directionalLightShadowsCSM[1]; +directionalLight=directionalLights[1]; +getDirectionalLightInfo(directionalLight,geometry,directLight); +} +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>=3 +else if (dirShadowCascade.csmIdx==2){ +directionalLightShadowCSM=directionalLightShadowsCSM[2]; +directionalLight=directionalLights[2]; +getDirectionalLightInfo(directionalLight,geometry,directLight); +} +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>=4 +else if (dirShadowCascade.csmIdx==3){ +directionalLightShadowCSM=directionalLightShadowsCSM[3]; +directionalLight=directionalLights[3]; +getDirectionalLightInfo(directionalLight,geometry,directLight); +} +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>=5 +else if (dirShadowCascade.csmIdx==4){ +directionalLightShadowCSM=directionalLightShadowsCSM[4]; +directionalLight=directionalLights[4]; +getDirectionalLightInfo(directionalLight,geometry,directLight); +} +#endif +#endif +maxCascadeIdx=directionalLightShadowCSM.cascadeIdxEnd; +linearDepth=(vViewPosition.z)/(directionalLightShadowCSM.shadowFar-directionalLightShadowCSM.cameraNear); +cascade=dirShadowCascade.cascade; +#if (i)=csmx&&(linearDepthcascadeCenter; +directLight.color=mix(prevColor,directLight.color,shouldFadeLastCascade?ratio:1.0); +ReflectedLight prevLight=reflectedLight; +RE_Direct(directLight,geometry,material,reflectedLight); +bool shouldBlend=(i)!= maxCascadeIdx-1||((i)==maxCascadeIdx-1&&linearDepth=cascade.x&&(linearDepth0)&&defined(RE_Direct_RectArea) +RectAreaLight rectAreaLight; +#if defined(USE_SHADOWMAP)&&NUM_RECT_AREA_LIGHT_SHADOWS>0 +RectAreaLightShadow rectAreaLightShadow; +#endif +#pragma unroll_loop +for (int i=0;i0) +#pragma unroll_loop +for (int i=0;i0 +objectNormal+=morphNormal0*morphTargetInfluences[0]; +#endif +#if MORPHTARGETS_COUNT>1 +objectNormal+=morphNormal1*morphTargetInfluences[1]; +#endif +#if MORPHTARGETS_COUNT>2 +objectNormal+=morphNormal2*morphTargetInfluences[2]; +#endif +#if MORPHTARGETS_COUNT>3 +objectNormal+=morphNormal3*morphTargetInfluences[3]; +#endif +#if MORPHTARGETS_COUNT>4 +objectNormal+=morphNormal4*morphTargetInfluences[4]; +#endif +#if MORPHTARGETS_COUNT>5 +objectNormal+=morphNormal5*morphTargetInfluences[5]; +#endif +#endif +#endif`,Ice=`#ifdef USE_MORPHTARGETS +uniform float morphTargetBaseInfluence; +#ifdef MORPHTARGETS_TEXTURE +uniform float morphTargetInfluences[MORPHTARGETS_COUNT]; +uniform sampler2DArray morphTargetsTexture; +uniform ivec2 morphTargetsTextureSize; +vec4 getMorph(const in int vertexIndex,const in int morphTargetIndex,const in int offset){ +int texelIndex=vertexIndex*MORPHTARGETS_TEXTURE_STRIDE+offset; +int y=texelIndex/morphTargetsTextureSize.x; +int x=texelIndex-y*morphTargetsTextureSize.x; +ivec3 morphUV=ivec3(x,y,morphTargetIndex); +return texelFetch(morphTargetsTexture,morphUV,0); +} +#else +#ifndef USE_MORPHNORMALS +uniform float morphTargetInfluences[12]; +#else +uniform float morphTargetInfluences[6]; +#endif +#endif +#endif`,Rce=`#ifdef USE_MORPHTARGETS +transformed*=morphTargetBaseInfluence; +#ifdef MORPHTARGETS_TEXTURE +for (int i=0;i0 +transformed+=morphTarget0*morphTargetInfluences[0]; +#endif +#if MORPHTARGETS_COUNT>1 +transformed+=morphTarget1*morphTargetInfluences[1]; +#endif +#if MORPHTARGETS_COUNT>2 +transformed+=morphTarget2*morphTargetInfluences[2]; +#endif +#if MORPHTARGETS_COUNT>3 +transformed+=morphTarget3*morphTargetInfluences[3]; +#endif +#if MORPHTARGETS_COUNT>4 +transformed+=morphTarget4*morphTargetInfluences[4]; +#endif +#if MORPHTARGETS_COUNT>5 +transformed+=morphTarget5*morphTargetInfluences[5]; +#endif +#ifndef USE_MORPHNORMALS +#if MORPHTARGETS_COUNT>6 +transformed+=morphTarget6*morphTargetInfluences[6]; +#endif +#if MORPHTARGETS_COUNT>7 +transformed+=morphTarget7*morphTargetInfluences[7]; +#endif +#if MORPHTARGETS_COUNT>8 +transformed+=morphTarget8*morphTargetInfluences[8]; +#endif +#if MORPHTARGETS_COUNT>9 +transformed+=morphTarget9*morphTargetInfluences[9]; +#endif +#if MORPHTARGETS_COUNT>10 +transformed+=morphTarget10*morphTargetInfluences[10]; +#endif +#if MORPHTARGETS_COUNT>11 +transformed+=morphTarget1*morphTargetInfluences[11]; +#endif +#endif +#endif +#endif`,Lce=`float faceDirection=gl_FrontFacing?1.0:-1.0; +#ifdef FLAT_SHADED +vec3 fdx=dFdx(vViewPosition); +vec3 fdy=dFdy(vViewPosition); +vec3 normal=normalize(cross(fdx,fdy)); +#else +vec3 normal=normalize(vNormal); +#ifdef DOUBLE_SIDED +normal=normal*faceDirection; +#endif +#ifdef USE_TANGENT +vec3 tangent=normalize(vTangent); +vec3 bitangent=normalize(vBitangent); +#ifdef DOUBLE_SIDED +tangent=tangent*faceDirection; +bitangent=bitangent*faceDirection; +#endif +#if defined(TANGENTSPACE_NORMALMAP)||defined(USE_CLEARCOAT_NORMALMAP) +mat3 vTBN=mat3(tangent,bitangent,normal); +#endif +#endif +#endif +vec3 geometryNormal=normal;`,Pce=`#ifdef OBJECTSPACE_NORMALMAP +normal=texture2D(normalMap,vUv).xyz*2.0-1.0; +#ifdef FLIP_SIDED +normal=-normal; +#endif +#ifdef DOUBLE_SIDED +normal=normal*faceDirection; +#endif +normal=normalize(normalMatrix*normal); +#elif defined(TANGENTSPACE_NORMALMAP) +vec3 mapN=texture2D(normalMap,vUv).xyz*2.0-1.0; +mapN.xy*=normalScale; +#ifdef USE_TANGENT +normal=normalize(vTBN*mapN); +#else +normal=perturbNormal2Arb(-vViewPosition,normal,mapN,faceDirection); +#endif +#elif defined(USE_BUMPMAP) +normal=perturbNormalArb(-vViewPosition,normal,dHdxy_fwd(),faceDirection); +#endif`,Dce=`#ifndef FLAT_SHADED +varying vec3 vNormal; +#ifdef USE_TANGENT +varying vec3 vTangent; +varying vec3 vBitangent; +#endif +#endif`,Bce=`#ifndef FLAT_SHADED +varying vec3 vNormal; +#ifdef USE_TANGENT +varying vec3 vTangent; +varying vec3 vBitangent; +#endif +#endif`,Nce=`#ifndef FLAT_SHADED +vNormal=normalize(transformedNormal); +#ifdef USE_TANGENT +vTangent=normalize(transformedTangent); +vBitangent=normalize(cross(vNormal,vTangent)*tangent.w); +#endif +#endif`,Oce=`#ifdef USE_NORMALMAP +uniform sampler2D normalMap; +uniform vec2 normalScale; +#endif +#ifdef OBJECTSPACE_NORMALMAP +uniform mat3 normalMatrix; +#endif +#if !defined (USE_TANGENT)&&(defined (TANGENTSPACE_NORMALMAP)||defined (USE_CLEARCOAT_NORMALMAP)) +vec3 perturbNormal2Arb(vec3 eye_pos,vec3 surf_norm,vec3 mapN,float faceDirection){ +vec3 q0=dFdx(eye_pos.xyz); +vec3 q1=dFdy(eye_pos.xyz); +vec2 st0=dFdx(vUv.st); +vec2 st1=dFdy(vUv.st); +vec3 N=surf_norm; +vec3 q1perp=cross(q1,N); +vec3 q0perp=cross(N,q0); +vec3 T=q1perp*st0.x+q0perp*st1.x; +vec3 B=q1perp*st0.y+q0perp*st1.y; +float det=max(dot(T,T),dot(B,B)); +float scale=(det==0.0)?0.0:faceDirection*inversesqrt(det); +return normalize(T*(mapN.x*scale)+B*(mapN.y*scale)+N*mapN.z); +} +#endif`,kce=`#ifdef USE_CLEARCOAT +vec3 clearcoatNormal=geometryNormal; +#endif`,Fce=`#ifdef USE_CLEARCOAT_NORMALMAP +vec3 clearcoatMapN=texture2D(clearcoatNormalMap,vUv).xyz*2.0-1.0; +clearcoatMapN.xy*=clearcoatNormalScale; +#ifdef USE_TANGENT +clearcoatNormal=normalize(vTBN*clearcoatMapN); +#else +clearcoatNormal=perturbNormal2Arb(-vViewPosition,clearcoatNormal,clearcoatMapN,faceDirection); +#endif +#endif`,Vce=`#ifdef USE_CLEARCOATMAP +uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP +uniform sampler2D clearcoatRoughnessMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP +uniform sampler2D clearcoatNormalMap; +uniform vec2 clearcoatNormalScale; +#endif`,Uce=`#ifdef OPAQUE +diffuseColor.a=1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a*=material.transmissionAlpha+0.1; +#endif +gl_FragColor=vec4(outgoingLight,diffuseColor.a);`,zce=`vec3 packNormalToRGB(const in vec3 normal){ +return normalize(normal)*0.5+0.5; +} +vec3 unpackRGBToNormal(const in vec3 rgb){ +return 2.0*rgb.xyz-1.0; +} +const float PackUpscale=256./255.; +const float UnpackDownscale=255./256.; +const vec3 PackFactors=vec3(256.*256.*256.,256.*256.,256.); +const vec4 UnpackFactors=UnpackDownscale/vec4(PackFactors,1.); +const float ShiftRight8=1./256.; +vec4 packDepthToRGBA(const in float v){ +vec4 r=vec4(fract(v*PackFactors),v); +r.yzw-=r.xyz*ShiftRight8; +return r*PackUpscale; +} +float unpackRGBAToDepth(const in vec4 v){ +return dot(v,UnpackFactors); +} +vec2 packDepthToRG(in highp float v){ +return packDepthToRGBA(v).yx; +} +float unpackRGToDepth(const in highp vec2 v){ +return unpackRGBAToDepth(vec4(v.xy,0.0,0.0)); +} +vec4 pack2HalfToRGBA(vec2 v){ +vec4 r=vec4(v.x,fract(v.x*255.0),v.y,fract(v.y*255.0)); +return vec4(r.x-r.y/255.0,r.y,r.z-r.w/255.0,r.w); +} +vec2 unpackRGBATo2Half(vec4 v){ +return vec2(v.x+(v.y/255.0),v.z+(v.w/255.0)); +} +float viewZToOrthographicDepth(const in float viewZ,const in float near,const in float far){ +return (viewZ+near)/(near-far); +} +float orthographicDepthToViewZ(const in float linearClipZ,const in float near,const in float far){ +return linearClipZ*(near-far)-near; +} +float viewZToPerspectiveDepth(const in float viewZ,const in float near,const in float far){ +return ((near+viewZ)*far)/((far-near)*viewZ); +} +float perspectiveDepthToViewZ(const in float invClipZ,const in float near,const in float far){ +return (near*far)/((far-near)*invClipZ-far); +}`,Gce=`#ifdef PREMULTIPLIED_ALPHA +gl_FragColor.rgb*=gl_FragColor.a; +#endif`,Hce=`vec4 mvPosition=vec4(transformed,1.0); +#ifdef USE_INSTANCING +mvPosition=instanceMatrix*mvPosition; +#endif +mvPosition=modelViewMatrix*mvPosition; +gl_Position=projectionMatrix*mvPosition; +#if defined(BACKGROUND_DEPTH) +gl_Position.z=gl_Position.w; +#endif`,Wce=`#ifdef DITHERING +gl_FragColor.rgb=dithering(gl_FragColor.rgb); +#endif`,jce=`#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`,Qce=`float roughnessFactor=roughness; +#ifdef USE_ROUGHNESSMAP +vec4 texelRoughness=texture2D(roughnessMap,vUv); +roughnessFactor*=texelRoughness.g; +#endif`,$ce=`#ifdef USE_ROUGHNESSMAP +uniform sampler2D roughnessMap; +#endif`,Yce=` +#define BIAS_FRUSTUM_SCALE_COEFF 30.0 +#define ESM_SPOT_SINGLE_BLUR_COEFF 0.25 +#define PCF_POISSON_SPOT_OMNI_BLUR_COEFF 4.0 +#define PCF_POISSON_POINT_BLUR_COEFF 2.5 +#define ESM_BIAS_COEFF 100.0 +#ifndef ESM_DISTANCE_SCALE +#define ESM_DISTANCE_SCALE 1.0 +#endif +#ifdef USE_SHADOWMAP +#if NUM_SPOT_LIGHT_SHADOWS>0 +uniform sampler2D spotShadowMap[NUM_SPOT_LIGHT_SHADOWS]; +varying vec4 vSpotShadowCoord[NUM_SPOT_LIGHT_SHADOWS]; +struct SpotLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +int shadow; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform SpotLightShadow spotLightShadows[NUM_SPOT_LIGHT_SHADOWS]; +#endif +#if NUM_POINT_LIGHT_SHADOWS>0 +uniform sampler2D pointShadowMap[NUM_POINT_LIGHT_SHADOWS]; +varying vec4 vPointShadowCoord[NUM_POINT_LIGHT_SHADOWS]; +struct PointLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform PointLightShadow pointLightShadows[NUM_POINT_LIGHT_SHADOWS]; +#endif +#if NUM_RECT_AREA_LIGHT_SHADOWS>0 +uniform sampler2D rectAreaShadowMap[NUM_RECT_AREA_LIGHT_SHADOWS]; +varying vec4 vRectAreaShadowCoord[NUM_RECT_AREA_LIGHT_SHADOWS]; +struct RectAreaLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform RectAreaLightShadow rectAreaLightShadows[NUM_RECT_AREA_LIGHT_SHADOWS]; +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>0 +uniform sampler2D directionalShadowCSMMap[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +varying vec4 vDirectionalShadowCSMCoord[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +struct DirectionalLightShadowCascade { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +vec2 cascade; +float expBias; +vec3 position; +int csmIdx; +}; +struct DirectionalLightShadowCSM { +int cascadeIdxEnd; +float cameraNear; +float shadowFar; +float fade; +}; +uniform DirectionalLightShadowCSM directionalLightShadowsCSM[NUM_DIR_LIGHT_SHADOWS_CSM]; +uniform DirectionalLightShadowCascade directionalLightShadowsCSMCascade[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +#endif +const vec3 PERMUTE_DIR_X=vec3(1.0,0.0,0.0); +const vec3 PERMUTE_DIR_Y=vec3(0.0,1.0,0.0); +const vec3 PERMUTE_DIR_Z=vec3(0.0,0.0,1.0); +const mat4 POISSON_DISK_0=mat4(0.954845,0.242214,-0.623893,-0.235473,-0.173288,0.799228,0.605969,-0.548050,-0.560406,0.327647,-0.448307,-0.774344,0.308258,0.417332,-0.125623,-0.056098 +); +const mat4 POISSON_DISK_1=mat4(0.145585,-0.305634,0.264060,-0.661648,0.617942,0.652121,-0.041412,-0.893582,0.463911,0.039752,0.212664,0.810727,-0.955989,-0.014390,-0.652588,0.671204 +); +float texture2DCompare(sampler2D depths,vec2 uv,float compare){ +return step(compare,unpackRGBAToDepth(texture2D(depths,uv))); +} +float texture2DShadowLerp(sampler2D depths,vec2 size,vec2 uv,float compare){ +const vec2 offset=vec2(0.0,1.0); +vec2 texelSize=vec2(1.0)/size; +vec2 centroidUV=floor(uv*size+0.5)/size; +float lb=texture2DCompare(depths,centroidUV+texelSize*offset.xx,compare); +float lt=texture2DCompare(depths,centroidUV+texelSize*offset.xy,compare); +float rb=texture2DCompare(depths,centroidUV+texelSize*offset.yx,compare); +float rt=texture2DCompare(depths,centroidUV+texelSize*offset.yy,compare); +vec2 f=fract(uv*size+0.5); +float a=mix(lb,lt,f.y); +float b=mix(rb,rt,f.y); +float c=mix(a,b,f.x); +return c; +} +vec2 cubeToUV(vec3 v,float texelSizeY){ +vec3 absV=abs(v); +float scaleToCube=1.0/max(absV.x,max(absV.y,absV.z)); +absV*=scaleToCube; +v*=scaleToCube*(1.0-2.0*texelSizeY); +vec2 planar=v.xy; +float almostATexel=1.5*texelSizeY; +float almostOne=1.0-almostATexel; +if (absV.z>=almostOne){ +if (v.z>0.0) +planar.x=4.0-v.x; +} else if (absV.x>=almostOne){ +float signX=sign(v.x); +planar.x=v.z*signX+2.0*signX; +} else if (absV.y>=almostOne){ +float signY=sign(v.y); +planar.x=v.x+2.0*signY+2.0; +planar.y=v.z*signY-2.0; +} +return vec2(0.125,0.25)*planar+vec2(0.375,0.75); +} +float texture2DShadowAvgCube(sampler2D depths,vec2 size,vec3 bd3D,float compare){ +vec2 texelSize=vec2(1.0)/size; +vec3 dirX=normalize(abs(bd3D.y)<0.99999?vec3(bd3D.z,0.0,-bd3D.x) +: vec3(0.0,-bd3D.z,bd3D.y)); +vec3 dirY=cross(bd3D,dirX); +float theta=PI_HALF*texelSize.y; +vec3 sX=sin(theta)*dirX; +vec3 sY=sin(theta)*dirY; +float cosT=cos(theta); +vec3 sampleVec[4]; +sampleVec[0]=bd3D; +sampleVec[1]=bd3D*cosT+sY; +sampleVec[2]=bd3D*cosT+sX; +sampleVec[3]=sampleVec[2]*cosT+sY; +float avg=0.0; +for (int i=0;i<4;i++){ +avg+=texture2DCompare(depths,cubeToUV(sampleVec[i],texelSize.y),compare); +} +avg/=4.0; +return avg; +} +float getShadow(sampler2D shadowMap,vec2 shadowMapSize,float shadowBias,float shadowRadius,vec4 shadowCoord,float expBias,float distWorld){ +float shadow=1.0; +shadowCoord.xyz/=shadowCoord.w; +bool inFrustum=shadowCoord.x>=0.0&&shadowCoord.x<=1.0&&shadowCoord.y>=0.0&&shadowCoord.y<=1.0; +bool frustumTest=inFrustum&&shadowCoord.z<=1.0&&shadowCoord.z>=0.0; +if (frustumTest){ +#if defined(SHADOWMAP_TYPE_BILINEAR) +shadowCoord.z+=shadowBias; +shadow=texture2DShadowLerp(shadowMap,shadowMapSize,shadowCoord.xy,shadowCoord.z); +#elif defined(SHADOWMAP_TYPE_PCF) +shadowCoord.z+=shadowBias; +vec2 texelSize=vec2(1.0)/shadowMapSize; +float randAngle=rand(gl_FragCoord.xy)*PI2; +float c=cos(randAngle),s=sin(randAngle); +mat2 sampleMat=mat2(c,s,-s,c) +* mat2(shadowRadius*texelSize.x,0.0,0.0,shadowRadius*texelSize.y); +vec2 sampleVec[16]; +sampleVec[0]=POISSON_DISK_0[0].xy; +sampleVec[1]=POISSON_DISK_0[0].zw; +sampleVec[2]=POISSON_DISK_0[1].xy; +sampleVec[3]=POISSON_DISK_0[1].zw; +sampleVec[4]=POISSON_DISK_0[2].xy; +sampleVec[5]=POISSON_DISK_0[2].zw; +sampleVec[6]=POISSON_DISK_0[3].xy; +sampleVec[7]=POISSON_DISK_0[3].zw; +sampleVec[8]=POISSON_DISK_1[0].xy; +sampleVec[9]=POISSON_DISK_1[0].zw; +sampleVec[10]=POISSON_DISK_1[1].xy; +sampleVec[11]=POISSON_DISK_1[1].zw; +sampleVec[12]=POISSON_DISK_1[2].xy; +sampleVec[13]=POISSON_DISK_1[2].zw; +sampleVec[14]=POISSON_DISK_1[3].xy; +sampleVec[15]=POISSON_DISK_1[3].zw; +shadow=0.0; +for (int i=0;i<16;i++){ +shadow+=texture2DCompare(shadowMap,shadowCoord.xy ++ sampleMat*sampleVec[i],shadowCoord.z); +} +shadow/=16.0; +#elif defined(SHADOWMAP_TYPE_ESM) +shadow=saturate(exp(expBias*(texture2D(shadowMap,shadowCoord.xy).x +- length(distWorld)*ESM_DISTANCE_SCALE +- ESM_BIAS_COEFF*shadowBias))); +#else +shadowCoord.z+=shadowBias; +shadow=texture2DCompare(shadowMap,shadowCoord.xy,shadowCoord.z); +#endif +} +return shadow; +} +float getOmniShadow(sampler2D shadowMap,vec2 shadowMapSize,float shadowBias,float expBias,float shadowRadius,vec4 shadowCoord,float shadowCameraNear,float shadowCameraFar){ +float shadow=1.0; +vec3 lightToPosition=shadowCoord.xyz; +float dp=(length(lightToPosition)-shadowCameraNear) +/ (shadowCameraFar-shadowCameraNear); +bool frustumTest=dp<=1.0&&dp>=0.0; +if (frustumTest){ +float biasScaleCoeff=BIAS_FRUSTUM_SCALE_COEFF +/ (shadowCameraFar-shadowCameraNear); +dp+=shadowBias*biasScaleCoeff; +vec3 bd3D=normalize(lightToPosition); +vec2 texelSize=1.0/shadowMapSize; +#if defined(SHADOWMAP_TYPE_BILINEAR) +shadow=texture2DShadowAvgCube(shadowMap,shadowMapSize,bd3D,dp); +#elif defined(SHADOWMAP_TYPE_ESM) +shadow=saturate(exp(expBias*(texture2D(shadowMap,cubeVecToOctUV(bd3D,texelSize)).x +- length(lightToPosition)*ESM_DISTANCE_SCALE +- ESM_BIAS_COEFF*shadowBias))); +#elif defined(SHADOWMAP_TYPE_PCF) +float randAngle=rand(gl_FragCoord.xy)*PI2; +float c=cos(randAngle),s=sin(randAngle); +mat2 sampleMat=mat2(c,s,-s,c) +* mat2(shadowRadius*texelSize.y,0.0,0.0,shadowRadius*texelSize.y); +vec3 absBd3D=abs(bd3D); +absBd3D/=max(absBd3D.x,max(absBd3D.y,absBd3D.z)); +bvec2 isPointingCubeFace=greaterThan(absBd3D.xy,vec2(0.999)); +mat3 permuteMat=mat3(isPointingCubeFace.x?PERMUTE_DIR_Y:PERMUTE_DIR_X,isPointingCubeFace.x||isPointingCubeFace.y?PERMUTE_DIR_Z:PERMUTE_DIR_Y,isPointingCubeFace.x?PERMUTE_DIR_X:isPointingCubeFace.y?PERMUTE_DIR_Y:PERMUTE_DIR_Z +); +vec2 sampleVec[16]; +sampleVec[0]=POISSON_DISK_0[0].xy; +sampleVec[1]=POISSON_DISK_0[0].zw; +sampleVec[2]=POISSON_DISK_0[1].xy; +sampleVec[3]=POISSON_DISK_0[1].zw; +sampleVec[4]=POISSON_DISK_0[2].xy; +sampleVec[5]=POISSON_DISK_0[2].zw; +sampleVec[6]=POISSON_DISK_0[3].xy; +sampleVec[7]=POISSON_DISK_0[3].zw; +sampleVec[8]=POISSON_DISK_1[0].xy; +sampleVec[9]=POISSON_DISK_1[0].zw; +sampleVec[10]=POISSON_DISK_1[1].xy; +sampleVec[11]=POISSON_DISK_1[1].zw; +sampleVec[12]=POISSON_DISK_1[2].xy; +sampleVec[13]=POISSON_DISK_1[2].zw; +sampleVec[14]=POISSON_DISK_1[3].xy; +sampleVec[15]=POISSON_DISK_1[3].zw; +shadow=0.0; +for (int i=0;i<16;i++){ +shadow+=texture2DCompare(shadowMap,cubeToUV(bd3D+permuteMat*vec3(sampleMat*sampleVec[i],0.0),texelSize.y),dp); +} +shadow/=16.0; +#else +shadow=texture2DCompare(shadowMap,cubeToUV(bd3D,texelSize.y),dp); +#endif +} +return shadow; +} +#if NUM_POINT_LIGHT_SHADOWS>0 +float getPointShadow(PointLightShadow light,sampler2D shadowMap,vec4 shadowCoord){ +float shadowRadius=light.shadowRadius; +vec2 mapSize=light.shadowMapSize; +#if defined(SHADOWMAP_TYPE_ESM) +mapSize*=2.0; +#else +mapSize*=vec2(4.0,2.0); +#if defined(SHADOWMAP_TYPE_PCF) +shadowRadius*=PCF_POISSON_POINT_BLUR_COEFF; +#endif +#endif +return getOmniShadow(shadowMap,mapSize,light.shadowBias,light.expBias,shadowRadius,shadowCoord,light.shadowCameraNear,light.shadowCameraFar); +} +#endif +#if NUM_RECT_AREA_LIGHT_SHADOWS>0 +float getRectAreaShadow(RectAreaLightShadow light,sampler2D shadowMap,vec4 shadowCoord){ +float shadowRadius=light.shadowRadius; +vec2 mapSize=light.shadowMapSize; +#if defined(SHADOWMAP_TYPE_ESM) +mapSize*=2.0; +#else +mapSize*=vec2(4.0,2.0); +#if defined(SHADOWMAP_TYPE_PCF) +shadowRadius*=PCF_POISSON_POINT_BLUR_COEFF; +#endif +#endif +return getOmniShadow(shadowMap,mapSize,light.shadowBias,light.expBias,shadowRadius,shadowCoord,light.shadowCameraNear,light.shadowCameraFar); +} +#endif +#if NUM_SPOT_LIGHT_SHADOWS>0 +float getSpotOmniShadow(SpotLightShadow light,sampler2D shadowMap,vec4 shadowCoord){ +float shadowRadius=light.shadowRadius; +vec2 mapSize=light.shadowMapSize; +#if defined(SHADOWMAP_TYPE_ESM) +#else +mapSize*=vec2(4.0,2.0); +#if defined(SHADOWMAP_TYPE_PCF) +shadowRadius*=PCF_POISSON_SPOT_OMNI_BLUR_COEFF; +#endif +#endif +return getOmniShadow(shadowMap,mapSize,light.shadowBias,light.expBias,shadowRadius,shadowCoord,light.shadowCameraNear,light.shadowCameraFar); +} +float biasLinearNormalizedToNonlinear(float bias,float near,float far,float projZ,float projW){ +return (bias*(far+near)+2.0*projZ)/(bias*(far-near)+2.0*projW) +- projZ/projW; +} +float getSpotShadow(SpotLightShadow light,sampler2D shadowMap,vec4 shadowCoord,float distWorld){ +float shadowRadius=light.shadowRadius; +float shadowBias=light.shadowBias; +#if defined(SHADOWMAP_TYPE_ESM) +shadowRadius*=ESM_SPOT_SINGLE_BLUR_COEFF; +#endif +shadowBias*=BIAS_FRUSTUM_SCALE_COEFF +/ (light.shadowCameraFar-light.shadowCameraNear); +#if defined(SHADOWMAP_TYPE_BASIC)||defined(SHADOWMAP_TYPE_BILINEAR)||defined(SHADOWMAP_TYPE_PCF) +shadowBias=biasLinearNormalizedToNonlinear(shadowBias,light.shadowCameraNear,light.shadowCameraFar,shadowCoord.z,shadowCoord.w); +#endif +return getShadow(shadowMap,light.shadowMapSize,shadowBias,shadowRadius,shadowCoord,light.expBias,distWorld); +} +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>0 +float getDirShadowCSM(DirectionalLightShadowCascade light,sampler2D shadowMap,vec4 shadowCoord,float distWorld){ +return getShadow(shadowMap,light.shadowMapSize,light.shadowBias,light.shadowRadius,shadowCoord,light.expBias,distWorld); +} +#endif +#endif`,Xce=`#ifdef USE_SHADOWMAP +#if NUM_SPOT_LIGHT_SHADOWS>0 +uniform mat4 spotShadowMatrix[NUM_SPOT_LIGHT_SHADOWS]; +varying vec4 vSpotShadowCoord[NUM_SPOT_LIGHT_SHADOWS]; +struct SpotLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +int shadow; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform SpotLightShadow spotLightShadows[NUM_SPOT_LIGHT_SHADOWS]; +#endif +#if NUM_POINT_LIGHT_SHADOWS>0 +uniform mat4 pointShadowMatrix[NUM_POINT_LIGHT_SHADOWS]; +varying vec4 vPointShadowCoord[NUM_POINT_LIGHT_SHADOWS]; +struct PointLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform PointLightShadow pointLightShadows[NUM_POINT_LIGHT_SHADOWS]; +#endif +#if NUM_RECT_AREA_LIGHT_SHADOWS>0 +uniform mat4 rectAreaShadowMatrix[NUM_RECT_AREA_LIGHT_SHADOWS]; +varying vec4 vRectAreaShadowCoord[NUM_RECT_AREA_LIGHT_SHADOWS]; +struct RectAreaLightShadow { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +float expBias; +}; +uniform RectAreaLightShadow rectAreaLightShadows[NUM_RECT_AREA_LIGHT_SHADOWS]; +#endif +#if NUM_DIR_LIGHT_SHADOWS_CSM>0 +uniform mat4 directionalShadowCSMMatrix[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +varying vec4 vDirectionalShadowCSMCoord[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +struct DirectionalLightShadowCascade { +float shadowBias; +float shadowNormalBias; +float shadowRadius; +vec2 shadowMapSize; +float shadowCameraNear; +float shadowCameraFar; +vec2 cascade; +float expBias; +vec3 position; +int csmIdx; +}; +struct DirectionalLightShadowCSM { +int cascadeIdxEnd; +float cameraNear; +float shadowFar; +float fade; +}; +uniform DirectionalLightShadowCSM directionalLightShadowsCSM[NUM_DIR_LIGHT_SHADOWS_CSM]; +uniform DirectionalLightShadowCascade directionalLightShadowsCSMCascade[NUM_DIR_LIGHT_SHADOW_CASCADES_CSM]; +#endif +#endif`,qce=`#if defined(USE_SHADOWMAP) +#if NUM_SPOT_LIGHT_SHADOWS>0||NUM_POINT_LIGHT_SHADOWS>0||NUM_RECT_AREA_LIGHT_SHADOWS>0||NUM_DIR_LIGHT_SHADOWS_CSM>0 +vec3 shadowWorldNormal=inverseTransformDirection(transformedNormal,viewMatrix); +vec4 shadowWorldPosition; +#endif +#if NUM_SPOT_LIGHT_SHADOWS>0 +#pragma unroll_loop +for (int i=0;i0 +#pragma unroll_loop +for (int i=0;i0 +#pragma unroll_loop +for (int i=0;i0 +#pragma unroll_loop +for (int i=0;i0 +SpotLightShadow spotLight; +#pragma unroll_loop +for (int i=0;i0 +PointLightShadow pointLight; +#pragma unroll_loop +for (int i=0;i0 +RectAreaLightShadow rectAreaLight; +#pragma unroll_loop +for (int i=0;i0 +DirectionalLightShadowCascade dirShadowCascade; +#pragma unroll_loop +for (int i=0;i0.001)?luminance/whiteConstancyFactor.r:luminance/0.001; +whiteConstancyFactor.g=(whiteConstancyFactor.g>0.001)?luminance/whiteConstancyFactor.g:luminance/0.001; +whiteConstancyFactor.b=(whiteConstancyFactor.b>0.001)?luminance/whiteConstancyFactor.b:luminance/0.001; +} +vec3 outColor=inputScaleFactor*color; +if (toneMappingChromaticAdaptation){ +outColor*=whiteConstancyFactor.rgb; +} +float luminance=toneCalcBrightness(outColor); +if (toneMappingColorDifferentiation&&(luminance<5.62)){ +float sLuminance=toneApproximateScotopicLuminance(outColor); +if (luminance<=5.62e-3){ +outColor=vec3(sLuminance); +} else { +float w=(luminance-5.62e-3)/5.61438; +outColor=outColor*w+sLuminance*(1.0-w); +} +} +outColor=outColor*(param_a/(param_b*outColor+param_c)); +return outColor; +} +float maxExposurePhotographic(in vec4 color1,in vec4 color2) +{ +return ((color1.r*color2.r)+(color1.g*color2.g))+(color1.b*color2.b); +} +vec3 PhysicalMaxToneMapping(vec3 color){ +float vignettingInfluence=1.0; +if (toneMappingVignetting>0.0){ +vec3 vignettingCoords=vec3(0.0,0.0,0.0); +float aspect=toneMappingResolution.x/toneMappingResolution.y; +vignettingCoords.x=gl_FragCoord.x/toneMappingResolution.x-0.5; +vignettingCoords.y=(gl_FragCoord.y/toneMappingResolution.y-0.5)/aspect; +vignettingCoords.z=1.0; +vignettingCoords=normalize(vignettingCoords); +vignettingInfluence=pow(vignettingCoords.z,toneMappingVignetting); +} +float inputScaleFactor=toneMappingPhysicalScale/PI_TONE; +float filmISO=toneMappingISO; +float camShutter=1.0/toneMappingShutter; +float fNumber=toneMappingAperture; +float cm2=1.0; +float burnHighlights=toneMappingHighlights; +float crushBlacks=toneMappingShadows; +float saturation=toneMappingSaturation; +vec3 whitePointInfluence=toneMappingWhiteBalance; +if (whitePointInfluence.r>0.0){ +whitePointInfluence.r=1.0/whitePointInfluence.r; +} else { +whitePointInfluence.r=1.0; +} +if (whitePointInfluence.g>0.0){ +whitePointInfluence.g=1.0/whitePointInfluence.g; +} else { +whitePointInfluence.g=1.0; +} +if (whitePointInfluence.b>0.0){ +whitePointInfluence.b=1.0/whitePointInfluence.b; +} else { +whitePointInfluence.b=1.0; +} +vec4 lumFactor=vec4(0.212671,0.715160,0.072169,0.0); +float whiteLumFactor=maxExposurePhotographic(lumFactor,vec4(whitePointInfluence,0.0)); +whitePointInfluence.r/=whiteLumFactor; +whitePointInfluence.g/=whiteLumFactor; +whitePointInfluence.b/=whiteLumFactor; +float isoInfluence=0.0; +float camShutterInv=1.0/camShutter; +if (filmISO>0.0){ +isoInfluence=((cm2*0.169811)*(filmISO*camShutterInv))/((15.4*fNumber)*fNumber); +} else { +isoInfluence=cm2; +} +vec3 outColor=inputScaleFactor*color; +outColor.r=outColor.r*whitePointInfluence.r*isoInfluence*vignettingInfluence; +outColor.g=outColor.g*whitePointInfluence.g*isoInfluence*vignettingInfluence; +outColor.b=outColor.b*whitePointInfluence.b*isoInfluence*vignettingInfluence; +outColor.r=(outColor.r*(1.0+(outColor.r*burnHighlights)))/(1.0+outColor.r); +outColor.g=(outColor.g*(1.0+(outColor.g*burnHighlights)))/(1.0+outColor.g); +outColor.b=(outColor.b*(1.0+(outColor.b*burnHighlights)))/(1.0+outColor.b); +float lumFactor2=maxExposurePhotographic(lumFactor,vec4(outColor,0.0)); +float tmpFloat=1.0-saturation; +outColor.r=outColor.r*saturation+lumFactor2*tmpFloat; +outColor.g=outColor.g*saturation+lumFactor2*tmpFloat; +outColor.b=outColor.b*saturation+lumFactor2*tmpFloat; +outColor=max(vec3(0.0),outColor); +float crushBlacksFac=crushBlacks*2.0+1.0; +float crushBlacksFac2=pow(maxExposurePhotographic(lumFactor,vec4(outColor,0.0)),0.5); +tmpFloat=(1.0-crushBlacksFac2); +if (crushBlacksFac2<1.0){ +outColor.r=outColor.r*crushBlacksFac2+pow(outColor.r,crushBlacksFac)*tmpFloat; +outColor.g=outColor.g*crushBlacksFac2+pow(outColor.g,crushBlacksFac)*tmpFloat; +outColor.b=outColor.b*crushBlacksFac2+pow(outColor.b,crushBlacksFac)*tmpFloat; +} +return outColor; +} +float filmicBlenderDesaturationMinIntensity(vec3 color){ +float maxChannel=max(color.r,max(color.g,color.b)); +float x=max(maxChannel,0.6251); +return (1.2192868*x-0.63221059) +* ((x-0.65069831)/(abs(x-0.65069831)+0.00952982)+0.73015231); +} +vec3 filmicBlenderDesaturationTransform(vec3 color){ +const float CURVE_SMOOTHNESS=0.03; +float minIntensity=filmicBlenderDesaturationMinIntensity(color); +vec4 x=vec4(color,1.0)-minIntensity; +x=pow(x,vec4(2.0))/(abs(x)+CURVE_SMOOTHNESS); +return (x.rgb-x.a+color+1.0)/2.0; +} +vec3 filmicBlenderDynamicRangeTransform(vec3 color){ +return pow((0.28882259*color-0.15880336) +/ (pow(color-0.6229693,vec3(2.0))+0.16965022) ++ 0.20453365*color+0.37847142,vec3(3.0) +); +} +vec3 FilmicBlenderToneMapping(vec3 color){ +color*=toneMappingExposure; +color=max(color,0.000175); +color=clamp((log2(color)-FILMIC_BLENDER_LOG_MIN) +/ (FILMIC_BLENDER_LOG_MAX-FILMIC_BLENDER_LOG_MIN),0.0,1.0); +color=filmicBlenderDesaturationTransform(color); +color=clamp(color/FILMIC_BLENDER_EXPOSURE_LATITUDE_RATIO,0.0,1.0); +color=filmicBlenderDynamicRangeTransform(color); +return color; +} +vec3 PbrNeutralToneMapping(vec3 color){ +const float startCompression=0.8-0.04; +const float desaturation=0.15; +float x=min(color.r,min(color.g,color.b)); +float offset=x<0.08?x-6.25*x*x:0.04; +color-=offset; +float peak=max(color.r,max(color.g,color.b)); +if (peak +#include +}`,vue=`varying vec3 vWorldDirection; +#include +void main(){ +vWorldDirection=transformDirection(position,modelMatrix); +#include +#include +gl_Position.z=gl_Position.w; +}`,Aue=`#ifdef ENVMAP_TYPE_CUBE +uniform samplerCube envMap; +#elif defined(ENVMAP_TYPE_CUBE_UV) +uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +varying vec3 vWorldDirection; +#include +void main(){ +#ifdef ENVMAP_TYPE_CUBE +vec4 texColor=textureCube(envMap,vec3(flipEnvMap*vWorldDirection.x,vWorldDirection.yz)); +#elif defined(ENVMAP_TYPE_CUBE_UV) +vec4 texColor=textureCubeUV(envMap,vWorldDirection,backgroundBlurriness); +#else +vec4 texColor=vec4(0.0,0.0,0.0,1.0); +#endif +texColor.rgb*=backgroundIntensity; +gl_FragColor=texColor; +#include +#include +}`,yue=`varying vec3 vWorldDirection; +#include +void main(){ +vWorldDirection=transformDirection(position,modelMatrix); +#include +#include +gl_Position.z=gl_Position.w; +}`,bue=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main(){ +vec4 texColor=textureCube(tCube,vec3(tFlip*vWorldDirection.x,vWorldDirection.yz)); +gl_FragColor=texColor; +gl_FragColor.a*=opacity; +#include +#include +}`,xue=`#include +#include +#include +#include +#include +#include +#include +varying vec3 vViewPosition; +varying vec2 vProjectedPosZW; +void main(){ +#include +#include +#ifdef USE_DISPLACEMENTMAP +#include +#include +#include +#endif +#include +#include +#include +#include +#include +#include +#include +vViewPosition=mvPosition.xyz; +vProjectedPosZW=mat2(projectionMatrix[2][2],projectionMatrix[2][3],projectionMatrix[3][2],projectionMatrix[3][3] +)*mvPosition.zw; +#ifdef PANCAKE_DEPTH +gl_Position.z=max(gl_Position.z,-1.0); +#endif +}`,Eue=`#if DEPTH_PACKING==3200 +uniform float opacity; +#endif +#ifdef USE_SLOPE_SCALED_BIAS +uniform float slopeScaledBias; +const float ONE_MINUS_EPS=0.9999999; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +varying vec3 vViewPosition; +varying vec2 vProjectedPosZW; +void main(){ +#include +vec4 diffuseColor=vec4(1.0); +#if DEPTH_PACKING==3200 +diffuseColor.a=opacity; +#endif +#include +#include +#include +#include +#if DEPTH_PACKING != 3202 +float depth=vProjectedPosZW.x/vProjectedPosZW.y; +depth=(depth+1.0)/2.0; +#ifdef PANCAKE_DEPTH +depth=max(depth,0.0); +#endif +#ifdef USE_SLOPE_SCALED_BIAS +vec2 dxdy=abs(vec2(dFdx(depth),dFdy(depth))); +float bias=slopeScaledBias*max(dxdy.x,dxdy.y); +depth=clamp(depth+max(bias,1e-6),0.0,ONE_MINUS_EPS); +#endif +#if DEPTH_PACKING==3200 +gl_FragColor=vec4(vec3(1.0-depth),opacity); +#elif DEPTH_PACKING==3201 +gl_FragColor=packDepthToRGBA(depth); +#endif +#else +gl_FragColor=vec4(vViewPosition.z); +#endif +}`,Cue=`#define DISTANCE +varying vec3 vWorldPosition; +#ifdef PANCAKE_DEPTH +varying vec4 vMVPPosition; +#endif +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#ifdef USE_DISPLACEMENTMAP +#include +#include +#include +#endif +#include +#include +#include +#include +#include +#include +#include +vWorldPosition=worldPosition.xyz; +#ifdef PANCAKE_DEPTH +vec4 mvpPosition=projectionMatrix*mvPosition; +gl_Position.z=max(mvpPosition.z,-1.0); +vMVPPosition=mvpPosition; +#endif +}`,Sue=`#define DISTANCE +#ifdef USE_SLOPE_SCALED_BIAS +uniform float slopeScaledBias; +const float ONE_MINUS_EPS=0.9999999; +#endif +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#ifdef PANCAKE_DEPTH +varying vec4 vMVPPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#ifndef DISTANCE_SCALE +#define DISTANCE_SCALE 1.0 +#endif +void main (){ +#include +vec4 diffuseColor=vec4(1.0); +#include +#include +#include +float dist=length(vWorldPosition-referencePosition); +#if DISTANCE_PACKING==3301 +dist=(dist-nearDistance)/(farDistance-nearDistance); +dist=saturate(dist); +#ifdef USE_SLOPE_SCALED_BIAS +vec2 dxdy=abs(vec2(dFdx(dist),dFdy(dist))); +float bias=slopeScaledBias*max(dxdy.x,dxdy.y); +dist=clamp(dist+bias,0.0,ONE_MINUS_EPS); +#endif +gl_FragColor=packDepthToRGBA(dist); +#elif DISTANCE_PACKING==3302 +#ifdef USE_SLOPE_SCALED_BIAS +vec2 dxdy=abs(vec2(dFdx(dist),dFdy(dist))); +dist+=slopeScaledBias*max(dxdy.x,dxdy.y); +#endif +#ifdef PANCAKE_DEPTH +if (vMVPPosition.z<-1.0){ +dist=length(vec3(vMVPPosition.x*CAM_WIDTH,vMVPPosition.y*CAM_HEIGHT,nearDistance)); +} +#endif +gl_FragColor=vec4(dist*DISTANCE_SCALE,0.0,0.0,1.0); +#endif +}`,wue=`varying vec3 vWorldDirection; +#include +void main(){ +vWorldDirection=transformDirection(position,modelMatrix); +#include +#include +}`,Mue=`uniform sampler2D tEquirect; +uniform bool invertU; +uniform float offsetU; +varying vec3 vWorldDirection; +#include +void main(){ +vec3 direction=normalize(vWorldDirection); +vec2 sampleUV=equirectUv(direction); +if (invertU) +sampleUV.x=1.0-sampleUV.x; +sampleUV.x+=offsetU; +gl_FragColor=texture2D(tEquirect,sampleUV); +#include +#include +}`,Tue=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +void main(){ +vLineDistance=scale*lineDistance; +#include +#include +#include +#include +#include +#include +#include +#include +}`,Iue=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +void main(){ +#include +if (mod(vLineDistance,totalSize)>dashSize){ +discard; +} +vec3 outgoingLight=vec3(0.0); +vec4 diffuseColor=vec4(diffuse,opacity); +#include +#include +outgoingLight=diffuseColor.rgb; +#include +#include +#include +#include +#include +}`,Rue=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#if defined (USE_ENVMAP)||defined (USE_SKINNING) +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +}`,Lue=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED +varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +vec4 diffuseColor=vec4(diffuse,opacity); +#include +#include +#include +#include +#include +#include +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_LIGHTMAP +vec4 lightMapTexel=texture2D(lightMap,vUv2); +reflectedLight.indirectDiffuse+=lightMapTexel.rgb*lightMapIntensity*RECIPROCAL_PI; +#else +reflectedLight.indirectDiffuse+=vec3(1.0); +#endif +#include +reflectedLight.indirectDiffuse*=diffuseColor.rgb; +vec3 outgoingLight=reflectedLight.indirectDiffuse; +#include +#include +#include +#include +#include +#include +#include +}`,Pue=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +vViewPosition=-mvPosition.xyz; +#include +#include +#include +#include +}`,Due=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#if defined(SHADOWMAP_TYPE_ESM)||defined(USE_ENVMAP) +uniform mat4 invViewMatrix; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +vec4 diffuseColor=vec4(diffuse,opacity); +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 totalEmissiveRadiance=emissive; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +vec3 outgoingLight=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+totalEmissiveRadiance; +#include +#include +#include +#include +#include +#include +#include +}`,Bue=`#define NORMAL +#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(TANGENTSPACE_NORMALMAP) +varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(TANGENTSPACE_NORMALMAP) +vViewPosition=-mvPosition.xyz; +#endif +}`,Nue=`#define NORMAL +uniform float opacity; +#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(TANGENTSPACE_NORMALMAP) +varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +gl_FragColor=vec4(packNormalToRGB(normal),opacity); +#ifdef OPAQUE +gl_FragColor.a=1.0; +#endif +}`,Oue=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION +varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +vViewPosition=-mvPosition.xyz; +#include +#include +#include +#ifdef USE_TRANSMISSION +vWorldPosition=worldPosition.xyz; +#endif +}`,kue=`#define STANDARD +#ifdef PHYSICAL +#define IOR +#define SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR +uniform float ior; +#endif +#ifdef SPECULAR +uniform float specularIntensity; +uniform vec3 specularColor; +#ifdef USE_SPECULARINTENSITYMAP +uniform sampler2D specularIntensityMap; +#endif +#ifdef USE_SPECULARCOLORMAP +uniform sampler2D specularColorMap; +#endif +#endif +#ifdef USE_CLEARCOAT +uniform float clearcoat; +uniform float clearcoatRoughness; +#endif +#if defined(SHADOWMAP_TYPE_ESM)||defined(USE_ENVMAP) +uniform mat4 invViewMatrix; +#endif +#if defined(USE_PLANE_REFLECTION)&&!defined(USE_TRANSMISSION) +uniform mat4 modelMatrix; +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +vec4 diffuseColor=vec4(diffuse,opacity); +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 totalEmissiveRadiance=emissive; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +vec3 totalDiffuse=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse; +vec3 totalSpecular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +#include +vec3 outgoingLight=totalDiffuse+totalSpecular+totalEmissiveRadiance; +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.clearcoatNormal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outgoingLight=outgoingLight*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +#include +#include +#include +#include +#include +#include +#include +}`,Fue=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#include +gl_PointSize=size; +#ifdef USE_SIZEATTENUATION +bool isPerspective=isPerspectiveMatrix(projectionMatrix); +if (isPerspective)gl_PointSize*=(scale/- mvPosition.z); +#endif +#include +#include +#include +#include +}`,Vue=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +vec3 outgoingLight=vec3(0.0); +vec4 diffuseColor=vec4(diffuse,opacity); +#include +#include +#include +#include +outgoingLight=diffuseColor.rgb; +#include +#include +#include +#include +#include +}`,Uue=`#include +#ifdef USE_SHADOWMAP +varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +void main(){ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef USE_SHADOWMAP +vViewPosition=-mvPosition.xyz; +#endif +}`,zue=`uniform vec3 color; +uniform float opacity; +#ifdef USE_SHADOWMAP +varying vec3 vViewPosition; +#ifdef SHADOWMAP_TYPE_ESM +uniform mat4 invViewMatrix; +#endif +#endif +#include +#include +#include +#include +#include +#include +#include +void main(){ +gl_FragColor=vec4(color,opacity*(1.0-getShadowMask())); +#include +#include +#include +}`,Gue=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main(){ +#include +vec4 mvPosition=modelViewMatrix*vec4(0.0,0.0,0.0,1.0); +vec2 scale; +scale.x=length(vec3(modelMatrix[0].x,modelMatrix[0].y,modelMatrix[0].z)); +scale.y=length(vec3(modelMatrix[1].x,modelMatrix[1].y,modelMatrix[1].z)); +#ifndef USE_SIZEATTENUATION +bool isPerspective=isPerspectiveMatrix(projectionMatrix); +if (isPerspective)scale*=-mvPosition.z; +#endif +vec2 alignedPosition=(position.xy-(center-vec2(0.5)))*scale; +vec2 rotatedPosition; +rotatedPosition.x=cos(rotation)*alignedPosition.x-sin(rotation)*alignedPosition.y; +rotatedPosition.y=sin(rotation)*alignedPosition.x+cos(rotation)*alignedPosition.y; +mvPosition.xy+=rotatedPosition; +gl_Position=projectionMatrix*mvPosition; +#include +#include +#include +}`,Hue=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main(){ +#include +vec3 outgoingLight=vec3(0.0); +vec4 diffuseColor=vec4(diffuse,opacity); +#include +#include +#include +#include +outgoingLight=diffuseColor.rgb; +#include +#include +#include +#include +}`,Wue=`#define MASK +#include +#include +#include +#include +#include +#include +#include +uniform mat4 textureMatrix; +varying vec3 vViewPosition; +varying vec4 projTexCoord; +void main(){ +#include +#include +#ifdef USE_DISPLACEMENTMAP +#include +#include +#include +#endif +#include +#include +#include +#include +#include +vViewPosition=-mvPosition.xyz; +#include +projTexCoord=textureMatrix*worldPosition; +#include +#include +}`,jue=`#define MASK +#include +#include +#include +#include +#include +#include +#include +uniform float opacity; +uniform sampler2D depthTexture; +uniform vec2 cameraNearFar; +varying vec3 vViewPosition; +varying vec4 projTexCoord; +void main(){ +#include +vec4 diffuseColor=vec4(1.0); +diffuseColor.a=opacity; +#include +#include +#include +#include +float depth=unpackRGBAToDepth(texture2DProj(depthTexture,projTexCoord)); +float viewZ; +if (isOrthographic) +viewZ=-orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +else +viewZ=-perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +float depthTest=(vViewPosition.z>viewZ)?1.0:0.0; +gl_FragColor=vec4(0.0,depthTest,1.0,0.0); +}`,Que=`#define NODE +varying vec3 vViewPosition; +#ifndef FLAT_SHADED +varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(NODE_REFLECT_REFRACT_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_BUMP_BL)||defined(NODE_PHY_SUN_SKY_ENV_MX)||defined(NODE_ENV_SPHERE_MY)||defined(NODE_UV_PROJECTION_AR)||defined(NODE_SUB_TRANSFORM_MX)||defined(NODE_SUB_TRANSFORM_MY) +varying vec3 vWorldPosition; +#endif +#include +void main(){ +#include +#include +#include +#include +#include +#ifndef FLAT_SHADED +vNormal=normalize(transformedNormal); +#endif +#include +#include +#include +#include +#include +#include +#include +#include +vViewPosition=-mvPosition.xyz; +#include +#include +#include +#if defined(NODE_REFLECT_REFRACT_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_BUMP_BL)||defined(NODE_PHY_SUN_SKY_ENV_MX)||defined(NODE_ENV_SPHERE_MY)||defined(NODE_UV_PROJECTION_AR)||defined(NODE_SUB_TRANSFORM_MX)||defined(NODE_SUB_TRANSFORM_MY) +vWorldPosition=worldPosition.xyz; +#endif +#include +}`,$ue=`#define NODE +#include +#include +#include +#include +#include +#include +#include +#if defined(NODE_NEW_GEOMETRY_BL)||defined(NODE_VECT_TRANSFORM_BL)||defined(NODE_TEX_COORD_BL)||defined(NODE_NORMAL_MAP_BL)||defined(NODE_LAYER_WEIGHT_BL)||defined(NODE_FRESNEL_BL)||defined(NODE_BUMP_BL)||defined(NODE_BSDF_GLASS_BL)||defined(NODE_BSDF_PRINCIPLED_BL)||defined(NODE_TANGENT_BL)||defined(NODE_BITMAP_MX)||defined(NODE_GRADIENT_MX)||defined(NODE_GRADIENT_RAMP_MX)||defined(NODE_NOISE_MX)||defined(NODE_SUB_TRANSFORM_MX)||defined(NODE_SUB_TRANSFORM_MY)||defined(NODE_SAMPLER_INFO_MY)||defined(NODE_INCIDENT)||defined(NODE_POSITION)||defined(NODE_NORMAL)||defined(USE_OSL)||defined(USE_ENVMAP)||defined(SHADOWMAP_TYPE_ESM)&&(defined(NODE_BSDF_DIFFUSE_BL)||defined(NODE_DIFFUSE_BSDF_BL)||defined(NODE_EEVEE_SPECULAR_BL)||defined(NODE_BSDF_GLOSSY_BL)||defined(NODE_BSDF_REFRACTION_BL)||defined(NODE_MATERIAL_MX)||defined(NODE_PHYSICAL_MX)||defined(NODE_STANDARD_SURFACE_AR)||defined(NODE_SHADOW_MATTE_AR)) +uniform mat4 invViewMatrix; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(USE_SSR) +uniform mat4 projectionMatrix; +#endif +#if defined(NODE_VECT_TRANSFORM_BL)||defined(NODE_TEX_COORD_BL)||defined(NODE_NEW_GEOMETRY_BL)||defined(NODE_TANGENT_BL)||defined(NODE_OBJECT_INFO_BL)||defined(NODE_BITMAP_MX)||defined(NODE_GRADIENT_MX)||defined(NODE_GRADIENT_RAMP_MX)||defined(NODE_NOISE_MX)||defined(NODE_SAMPLER_INFO_MY)||defined(NODE_TRANSFORM_MY)||defined(USE_OSL)||defined(USE_PLANE_REFLECTION)||defined(NODE_UV_PROJECTION_AR)||defined(NODE_SUB_TRANSFORM_MX)||defined(NODE_SUB_TRANSFORM_MY) +uniform mat4 modelMatrix; +uniform mat4 invModelMatrix; +#endif +#if defined(NODE_VECT_TRANSFORM_BL)||defined(NODE_NORMAL_MAP_BL)||defined(NODE_NORMAL_BUMP_MX)||defined(NODE_BUMP_2D_MY)||defined(NODE_SAMPLER_INFO_MY) +uniform mat4 modelViewMatrix; +#endif +#if defined(NODE_TEX_IMAGE_BL) +uniform mat3 normalMatrix; +#endif +#if defined(NODE_TEX_COORD_BL)||defined(NODE_NEW_GEOMETRY_BL)||defined(NODE_TANGENT_BL) +uniform vec3 boundingBoxMin; +uniform vec3 boundingBoxMax; +#endif +#if defined(NODE_REFLECT_REFRACT_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_BUMP_BL)||defined(NODE_PHY_SUN_SKY_ENV_MX)||defined(NODE_ENV_SPHERE_MY)||defined(NODE_UV_PROJECTION_AR)||defined(NODE_SUB_TRANSFORM_MX)||defined(NODE_SUB_TRANSFORM_MY) +varying vec3 vWorldPosition; +#endif +#if defined(NODE_TEX_COORD_BL) +uniform vec2 viewWidthHeight; +#endif +#include +#include +#include +#include +#include +void main(){ +#include +#include +#include +vec4 outgoingLight=vec4(0.0); +#include +#if WORLD_NODES==1 +outgoingLight.a=1.0; +#endif +#ifdef USE_ALPHATEST +if (outgoingLight.a +#include +#include +#include +#include +#include +#include +}`;var Yue=` +varying vec3 vViewPosition; +#ifndef FLAT_SHADED +varying vec3 vNormal; +#endif +struct NodeMaterial { +vec3 diffuseColor; +float roughness; +vec3 specularColor; +float specularF90; +vec3 fresnelRefl90; +vec3 refractionColor; +float refractionRoughness; +float refractionIOR; +#ifdef USE_CLEARCOAT +float clearcoat; +float clearcoatRoughness; +vec3 clearcoatF0; +float clearcoatF90; +#endif +#ifdef USE_SHEEN +vec3 sheenColor; +float sheenRoughness; +#endif +}; +vec3 clearcoatSpecular=vec3(0.0); +vec3 sheenSpecular=vec3(0.0); +float IBLSheenBRDF(const in vec3 normal,const in vec3 viewDir,const in float roughness){ +float dotNV=saturate(dot(normal,viewDir)); +float r2=roughness*roughness; +float a=roughness<0.25?-339.2*r2+161.4*roughness-25.9:-8.48*r2+14.3*roughness-9.95; +float b=roughness<0.25?44.0*r2-23.7*roughness+3.26:1.97*r2-3.27*roughness+0.72; +float DG=exp(a*dotNV+b)+(roughness<0.25?0.0:0.1*(roughness-0.25)); +return saturate(DG*RECIPROCAL_PI); +} +#if NUM_RECT_AREA_LIGHTS>0 +void RE_Direct_RectArea_Node(const in RectAreaLight rectAreaLight,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){ +vec3 normal=geometry.normal; +vec3 viewDir=geometry.viewDir; +vec3 position=geometry.position; +vec3 lightPos=rectAreaLight.position; +vec3 halfWidth=rectAreaLight.halfWidth; +vec3 halfHeight=rectAreaLight.halfHeight; +vec3 lightColor=rectAreaLight.color; +float roughness=material.roughness; +vec3 rectCoords[4]; +rectCoords[0]=lightPos+halfWidth-halfHeight; +rectCoords[1]=lightPos-halfWidth-halfHeight; +rectCoords[2]=lightPos-halfWidth+halfHeight; +rectCoords[3]=lightPos+halfWidth+halfHeight; +vec2 uv=LTC_Uv(normal,viewDir,roughness); +vec4 t1=texture2D(ltc_1,uv); +vec4 t2=texture2D(ltc_2,uv); +mat3 mInv=mat3(vec3(t1.x,0,t1.y),vec3( 0,1,0),vec3(t1.z,0,t1.w) +); +vec3 fresnel=(material.specularColor*t2.x+(vec3(1.0)-material.specularColor)*t2.y); +reflectedLight.directSpecular+=lightColor*fresnel*LTC_Evaluate(normal,viewDir,position,mInv,rectCoords); +reflectedLight.directDiffuse+=lightColor*material.diffuseColor*LTC_Evaluate(normal,viewDir,position,mat3(1.0),rectCoords); +} +#endif +void RE_Direct_Node(const in IncidentLight directLight,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){ +float dotNL=saturate(dot(geometry.normal,directLight.direction)); +vec3 irradiance=dotNL*directLight.color; +#ifdef USE_CLEARCOAT +float dotNLcc=saturate(dot(geometry.clearcoatNormal,directLight.direction)); +vec3 ccIrradiance=dotNLcc*directLight.color; +clearcoatSpecular+=ccIrradiance*BRDF_GGX(directLight.direction,geometry.viewDir,geometry.clearcoatNormal,material.clearcoatF0,material.clearcoatF90,material.clearcoatRoughness); +#endif +#ifdef USE_SHEEN +sheenSpecular+=irradiance*BRDF_Sheen(directLight.direction,geometry.viewDir,geometry.normal,material.sheenColor,material.sheenRoughness); +#endif +reflectedLight.directSpecular+=irradiance*BRDF_GGX(directLight.direction,geometry.viewDir,geometry.normal,material.specularColor,material.specularF90,material.roughness); +reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectDiffuse_Node(const in vec3 irradiance,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){ +reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectSpecular_Node(const in vec3 radiance,const in vec3 irradiance,const in vec3 clearcoatRadiance,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){ +#ifdef USE_CLEARCOAT +clearcoatSpecular+=clearcoatRadiance*BRDF_Specular_GGX_Environment(geometry.viewDir,geometry.clearcoatNormal,material.clearcoatF0,vec3(material.clearcoatF90),material.clearcoatRoughness); +#endif +#ifdef USE_SHEEN +sheenSpecular+=irradiance*material.sheenColor*IBLSheenBRDF(geometry.normal,geometry.viewDir,material.sheenRoughness); +#endif +#ifdef MT_BLENDER +vec3 specEnv=BRDF_Specular_GGX_Environment(geometry.viewDir,geometry.normal,material.specularColor,material.fresnelRefl90,material.roughness); +#elif defined(MT_MAX) +float alphaEnv=pow2(pow2(material.roughness)); +vec3 specEnv=material.specularColor/(1.0-alphaEnv+PI*alphaEnv); +#elif defined(MT_MAYA) +vec3 specEnv=BRDF_Specular_GGX_Environment(geometry.viewDir,geometry.normal,material.specularColor,material.fresnelRefl90,material.roughness); +#else +vec3 specEnv=vec3(1.0); +#endif +reflectedLight.indirectSpecular+=radiance*specEnv; +} +void RE_Refraction_Node(const vec3 refraction,const NodeMaterial material,inout vec3 refractedLight){ +refractedLight+=refraction*material.refractionColor; +} +void RE_DirectDiffuseOnly_Node(const in IncidentLight directLight,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){ +float dotNL=saturate(dot(geometry.normal,directLight.direction)); +vec3 irradiance=dotNL*directLight.color; +reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor); +} +void RE_IndirectDiffuse_Empty(const in vec3 irradiance,const in GeometricContext geometry,const in NodeMaterial material,inout ReflectedLight reflectedLight){} +#define RE_Direct_RectArea RE_Direct_RectArea_Node`,Xue=`#ifdef USE_GTAO +uniform sampler2D gtaoMap; +uniform vec2 currResolution; +float calcGTAOVisibilityFix(vec3 viewDir,vec3 normal){ +float slopeCoeff=saturate(dot(viewDir,normal)); +return pow(2.0/(slopeCoeff+1.0),log2(PI)-1.0); +} +float calcSolidAngle(float radiusAngle){ +return PI2*(1.0-cos(radiusAngle)); +} +float calcSolidAnglesIntersectionApprox(float radiusAngle0,float radiusAngle1,float distanceAngle){ +float rp=radiusAngle0,rl=radiusAngle1,d=distanceAngle; +float rDiff=abs(rp-rl); +return PI2*(1.0-cos(min(rp,rl)))*smoothstep(0.0,1.0,1.0 - +(d-rDiff)/(rp+rl-rDiff)); +} +float calcGTSOVisibility(float aoVisibility,vec3 bentNormal,vec3 viewDir,vec3 normal,float roughness){ +aoVisibility=saturate(aoVisibility*calcGTAOVisibilityFix(viewDir,normal)); +float radiusAngleVisCone=acos(clamp(sqrt(1.0-aoVisibility),-1.0,1.0)); +float radiusAngleSpecCone=acos(clamp(exp2(-3.32193*pow2(roughness)),-1.0,1.0)); +radiusAngleSpecCone=max(0.001,radiusAngleSpecCone); +vec3 specularConeAxis=-reflect(viewDir,normal); +float distanceAngle=acos(clamp(dot(bentNormal,specularConeAxis),-1.0,1.0)); +float solidAngleIntersection=calcSolidAnglesIntersectionApprox(radiusAngleVisCone,radiusAngleSpecCone,distanceAngle); +float solidAngleSpecular=calcSolidAngle(radiusAngleSpecCone); +float specVisibility=solidAngleIntersection/solidAngleSpecular; +return mix(specVisibility,1.0,aoVisibility); +} +#endif`,que=`#ifdef USE_GTAO +reflectedLight.indirectSpecular*=calcGTSOVisibility(gtaoVisibility,gtaoBentNormal,gtaoViewDir,gtaoNormal,gtaoRoughness); +#endif`,Kue=`#if NORMAL_OUTPUT==1 +gl_FragColor=vec4(packNormalToRGB(normal),gl_FragColor.a); +#endif`,Zue=`#ifdef USE_SSR +uniform sampler2D ssrSourceBuffer; +uniform sampler2D ssrDepthBuffer; +uniform sampler2D ssrBackfaceDepthBuffer; +uniform mat4 invProjectionMatrix; +uniform vec2 ssrResolution; +uniform float ssrThickness; +uniform float ssrStride; +uniform float ssrJitter; +uniform float ssrMaxDistance; +#ifdef USE_SSR_REFRACT +#define STEPS_FADE_AMOUNT 0.1 +#define SCREEN_FADE_THRESHOLD 0.6 +#else +#define STEPS_FADE_AMOUNT 1.0 +#define SCREEN_FADE_THRESHOLD 0.4 +#endif +vec3 deproject(vec3 p){ +vec4 res=invProjectionMatrix*vec4(p,1); +return res.xyz/res.w; +} +bool doesIntersect(float rayzmax,float rayzmin,vec2 uv){ +float sceneZMin=texture2D(ssrDepthBuffer,uv).r; +#ifdef USE_SSR_REFRACT +return rayzmin>=(sceneZMin-ssrThickness)&&rayzmax<=sceneZMin; +#else +float sceneZMax=texture2D(ssrBackfaceDepthBuffer,uv).r; +return rayzmin>=sceneZMax&&rayzmax<=sceneZMin; +#endif +} +float distanceSquared(vec2 a,vec2 b){a-=b;return dot(a,a);} +void swapIfBigger(inout float a,inout float b){ +if (a>b){ +float t=a; +a=b; +b=t; +} +} +bool isOutsideUvBounds(float x){return x<0.0||x>1.0;} +bool isOutsideUvBounds(vec2 uv){return isOutsideUvBounds(uv.x)||isOutsideUvBounds(uv.y);} +vec3 computeSSR(vec3 color,vec3 normal,float ior){ +vec2 uv=gl_FragCoord.xy/ssrResolution; +vec2 screenCoord=uv*2.0-vec2(1,1); +float nearClip=deproject(vec3(0,0,-1)).z; +vec3 ray=deproject(vec3(screenCoord,-1)); +ray/=ray.z; +float depthSample=-vViewPosition.z; +vec3 vpos=depthSample*ray; +#ifdef USE_SSR_REFRACT +vec3 dir=normalize(refract(normalize(vpos),normalize(normal),1.0/ior)); +#else +vec3 dir=normalize(reflect(normalize(vpos),normalize(normal))); +#endif +float maxDist=ssrMaxDistance; +float rayLength=(vpos.z+dir.z*maxDist)>nearClip?(nearClip-vpos.z)/dir.z:maxDist; +vec3 csOrig=vpos; +vec3 csEndPoint=csOrig+dir*rayLength; +vec4 H0=projectionMatrix*vec4(csOrig,1.0); +vec4 H1=projectionMatrix*vec4(csEndPoint,1.0); +float k0=1.0/H0.w,k1=1.0/H1.w; +vec3 Q0=csOrig.xyz*k0,Q1=csEndPoint.xyz*k1; +vec2 P0=H0.xy*k0,P1=H1.xy*k1; +P0=P0*0.5+vec2(0.5),P1=P1*0.5+vec2(0.5); +#ifndef SSR_SIMPLE_REFRACT +P0*=ssrResolution,P1*=ssrResolution; +P1+=vec2((distanceSquared(P0,P1)<0.0001)?0.01:0.0); +vec2 delta=P1-P0; +bool permute=false; +if (abs(delta.x)end)break; +} +if (intersected&&pixelStride>1.0){ +PQK-=dPQK; +dPQK/=ssrStride; +float ogStride=pixelStride*0.5; +float currStride=pixelStride; +prevZMaxEstimate=PQK.z/PQK.w; +rayZMin=prevZMaxEstimate,rayZMax=prevZMaxEstimate; +for(int j=0;j0.0) +falloffFactor=1.0-clamp((planeReflBoundingBoxMax.y-posRefl.y)/(planeReflBoundingBoxMax.y*(planeReflFalloff)),0.0,1.0); +else +falloffFactor=1.0-clamp((planeReflBoundingBoxMin.y-posRefl.y)/(planeReflBoundingBoxMin.y*(planeReflFalloff)),0.0,1.0); +result=mix(result,radiance,falloffFactor); +result=mix(result,radiance,(roughness<0.0526)?0.0:saturate(10.0*roughness)); +return result; +} +#endif`,tde=`#ifdef USE_PLANE_REFLECTION +vPlaneReflUv=planeReflTextureMatrix*modelMatrix*vec4(transformed,1.0); +#endif`,nde=`#ifdef USE_OIT_WEIGHTED +layout(location=1)out float outFragR; +#endif`,rde=`#ifdef USE_OIT_WEIGHTED +float weight=1.0-gl_FragCoord.z; +outFragR=gl_FragColor.a*weight; +outFragColor=vec4(gl_FragColor.rgb*weight,gl_FragColor.a); +#endif`,ode=` +#define LUM_WEIGHTS vec3(0.2126,0.7152,0.0722) +#define LUM_WEIGHTS_MAYA vec3(0.3,0.59,0.11) +#define LUMENS_PER_WATT 683.0 +#define MAX_ENV_COORDS_DIR 0 +#define MAX_ENV_COORDS_REFLECT 1 +#define MAX_ENV_COORDS_REFRACT 2 +#if defined(NODE_COLOR_CONVERT_AR)||defined(NODE_COLOR_CORRECT_AR)||defined(NODE_COMBINE_COLOR_BL)||defined(NODE_SEPARATE_COLOR_BL)||defined(NODE_COMBHSV_BL)||defined(NODE_SEPHSV_BL)||defined(NODE_HUE_SAT_BL)||defined(NODE_COLOR_CORRECTION_MX)||defined(NODE_COMPOSITE_LAYER_MX)||defined(NODE_COLOR_CORRECT_MY)||defined(USE_OSL) +#define HSV_NODES +#endif +#define OPENPBR_EMISSION_LUM_FACTOR 0.001 +float powCompat(const in float val,const in float power){ +if (power==0.0) +return 1.0; +else if (val<0.0){ +if (mod(-power,2.0)==0.0) +return pow(abs(val),power); +else +return -pow(abs(val),power); +} else if (val==0.0) +return 0.0; +return pow(abs(val),power); +} +float maxFromRGB(vec3 rgb){ +return max(max(rgb.r,rgb.g),rgb.b); +} +vec3 swizzleUpZ(const vec3 vec){ +return vec3(vec[0],-vec[2],vec[1]); +} +vec3 swizzleUpY(const vec3 vec){ +return vec3(vec[0],vec[2],-vec[1]); +} +float getSmoothFactor(float a,float b,float smoothness){ +return max(smoothness-abs(a-b),0.0)/smoothness; +} +float smoothMin(float a,float b,float smoothness){ +float smoothFac=getSmoothFactor(a,b,smoothness); +return min(a,b)-smoothFac*smoothFac*smoothFac*smoothness*(1.0/6.0); +} +float smoothMax(float a,float b,float smoothness){ +float smoothFac=getSmoothFactor(a,b,smoothness); +return max(a,b)+smoothFac*smoothFac*smoothFac*smoothness*(1.0/6.0); +} +float mat3GetDeterminant(mat3 mat){ +return mat[0][0]*mat[1][1]*mat[2][2] ++ mat[0][2]*mat[1][0]*mat[2][1] ++ mat[0][1]*mat[1][2]*mat[2][0] +- mat[0][2]*mat[1][1]*mat[2][0] +- mat[0][0]*mat[1][2]*mat[2][1] +- mat[0][1]*mat[1][0]*mat[2][2]; +} +mat3 mat3RotateX(float angle){ +float s=sin(angle),c=cos(angle); +return mat3(1.0,0.0,0.0,0.0,c,s,0.0,-s,c); +} +mat3 mat3RotateY(float angle){ +float s=sin(angle),c=cos(angle); +return mat3(c,0.0,-s,0.0,1.0,0.0,s,0.0,c); +} +mat3 mat3RotateZ(float angle){ +float s=sin(angle),c=cos(angle); +return mat3(c,s,0.0,-s,c,0.0,0.0,0.0,1.0); +} +vec3 vec3RotateXAngle(vec3 vector,float angle){ +return mat3RotateX(angle)*vector; +} +vec3 vec3RotateYAngle(vec3 vector,float angle){ +return mat3RotateY(angle)*vector; +} +vec3 vec3RotateZAngle(vec3 vector,float angle){ +return mat3RotateZ(angle)*vector; +} +vec4 eulerToAxisAngle(vec3 euler){ +float c1=cos(euler.x/2.0),c2=cos(euler.y/2.0),c3=cos(euler.z/2.0); +float s1=sin(euler.x/2.0),s2=sin(euler.y/2.0),s3=sin(euler.z/2.0); +vec4 axisAngle=vec4(s1*c2*c3-c1*s2*s3,c1*s2*c3+s1*c2*s3,c1*c2*s3-s1*s2*c3,2.0*acos(c1*c2*c3+s1*s2*s3) +); +axisAngle.xyz=length(axisAngle.xyz)>0.0?normalize(axisAngle.xyz):vec3(1.0,0.0,0.0); +return axisAngle; +} +mat3 axisAngleToMat3(vec3 axis,float angle){ +float s=sin(angle),c=cos(angle); +float t=1.0-c; +float x=axis.x,y=axis.y,z=axis.z; +float tx=t*x,ty=t*y; +return mat3(tx*x+c,tx*y-s*z,tx*z+s*y,tx*y+s*z,ty*y+c,ty*z-s*x,tx*z-s*y,ty*z+s*x,t*z*z+c); +} +mat3 toMat3(mat4 mat){ +return mat3(mat[0][0],mat[0][1],mat[0][2],mat[1][0],mat[1][1],mat[1][2],mat[2][0],mat[2][1],mat[2][2]); +} +mat4 toMat4(mat3 mat){ +return mat4(mat[0][0],mat[0][1],mat[0][2],0.0,mat[1][0],mat[1][1],mat[1][2],0.0,mat[2][0],mat[2][1],mat[2][2],0.0,0.0,0.0,0.0,1.0); +} +mat4 translationToMat4(vec3 v){ +return mat4(1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,v.x,v.y,v.z,1.0); +} +mat4 scalingToMat4(vec3 v){ +return mat4(v.x,0.0,0.0,0.0,0.0,v.y,0.0,0.0,0.0,0.0,v.z,0.0,0.0,0.0,0.0,1.0); +} +vec4 nodeTexelToLinear(in vec4 color,in int sourceType){ +if (sourceType==1) +return vec4(pow(color.rgb,vec3(2.2)),color.a); +else +return color; +} +vec3 xyz_to_sRGB(vec3 xyz){ +mat3 convMat=mat3(3.2406,-0.9689,0.0557,-1.5372,1.8758,-0.2040,-0.4986,0.0415,1.0570 +); +return convMat*xyz; +} +vec3 xyY_to_XYZ(float x,float y,float Y){ +float X=0.0; +float Z=0.0; +if (y != 0.0){ +X=(Y/y)*x; +Z=(Y/y)*(1.0-x-y); +} +return vec3(X,Y,Z); +} +#if defined HSV_NODES +void hsvToRGB(vec4 hsv,out vec4 outCol) +{ +float i,f,p,q,t,h,s,v; +vec3 rgb; +h=hsv[0]; +s=hsv[1]; +v=hsv[2]; +if (s==0.0) +rgb=vec3(v,v,v); +else { +if (h==1.0) +h=0.0; +h*=6.0; +i=floor(h); +f=h-i; +rgb=vec3(f,f,f); +p=v*(1.0-s); +q=v*(1.0-(s*f)); +t=v*(1.0-(s*(1.0-f))); +if (i==0.0) +rgb=vec3(v,t,p); +else if (i==1.0) +rgb=vec3(q,v,p); +else if (i==2.0) +rgb=vec3(p,v,t); +else if (i==3.0) +rgb=vec3(p,q,v); +else if (i==4.0) +rgb=vec3(t,p,v); +else +rgb=vec3(v,p,q); +} +outCol=vec4(rgb,hsv.w); +} +void rgbToHSV(vec4 rgb,out vec4 outCol) +{ +float cmax,cmin,h,s,v,cdelta; +vec3 c; +cmax=max(rgb[0],max(rgb[1],rgb[2])); +cmin=min(rgb[0],min(rgb[1],rgb[2])); +cdelta=cmax-cmin; +v=cmax; +if (cmax != 0.0) +s=cdelta/cmax; +else { +s=0.0; +h=0.0; +} +if (s==0.0) +h=0.0; +else { +c=(vec3(cmax,cmax,cmax)-rgb.xyz)/cdelta; +if (rgb.x==cmax)h=c[2]-c[1]; +else if (rgb.y==cmax)h=2.0+c[0]-c[2]; +else h=4.0+c[1]-c[0]; +h/=6.0; +if (h<0.0) +h+=1.0; +} +outCol=vec4(h,s,v,rgb.w); +} +#endif +#if defined(NODE_REFLECT_REFRACT_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_ENV_SPHERE_MY) +vec4 sampleEquirectangular(sampler2D map,vec3 reflectVec,mat3 uvTransform,int encoding) +{ +reflectVec=normalize(reflectVec); +vec2 sampleUV; +sampleUV.y=asin(clamp(reflectVec.y,-1.0,1.0))*RECIPROCAL_PI+0.5; +sampleUV.x=atan(reflectVec.x,reflectVec.z)*RECIPROCAL_PI2+0.5; +sampleUV.y*=-1.0; +const float seamWidth=0.15; +const float seamBiasFactor=-10.0; +float seam=max(0.0,1.0-abs (reflectVec.x)/seamWidth)* +clamp (1.0-reflectVec.z/seamWidth,0.0,1.0); +sampleUV=(uvTransform*vec3(sampleUV,1.0)).xy; +return texture2D(map,sampleUV,seamBiasFactor*seam); +} +#endif +#if defined(NODE_FRESNEL_BL)||defined(NODE_LAYER_WEIGHT_BL)||defined(NODE_FALLOFF_MX)||defined(NODE_BSDF_GLASS_BL)||defined(NODE_BSDF_PRINCIPLED_BL) +float fresnelReflection(const vec3 dir,const vec3 normal,const float ior){ +float cosTheta=clamp(abs(dot(dir,normal)),-1.0,1.0); +float gSquared=pow2(ior)+pow2(cosTheta)-1.0; +if (gSquared<0.0)return 1.0; +float g=sqrt(gSquared); +return 0.5*pow2((g-cosTheta)/(g+cosTheta)) +* (1.0+pow2(((g+cosTheta)*cosTheta-1.0)/ +((g-cosTheta)*cosTheta+1.0) +)); +} +#endif +#if defined(NODE_BITMAP_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_GRADIENT_MX)||defined(NODE_GRADIENT_RAMP_MX) +#define MAPPING_EXPLICIT_MAP_CHANNEL 1 +#define MAPPING_VERTEX_COLOR_CHANNEL 2 +#define MAPPING_PLANAR_OBJECT_XYZ 3 +#define MAPPING_PLANAR_WORLD_XYZ 4 +#define AXIS_XY 1 +#define AXIS_YZ 2 +#define AXIS_ZX 3 +#endif +#if defined(NODE_BITMAP_MX)||defined(NODE_BITMAP_ENV_MX)||defined(NODE_BUMP_MX)||defined(NODE_GRADIENT_MX)||defined(NODE_GRADIENT_RAMP_MX)||defined(NODE_PLACE_2D_TEXTURE_MY) +mat3 calcUvTransform(float uOffset,float vOffset,float uTiling,float vTiling,float wAngle) +{ +if (abs(uOffset)octavesInt)break; +float t=noiseSmooth(fscale*p,octaveLenPerPixel,falloffFactor,dispersionFactor); +sum+=t*amp; +amp*=0.5; +fscale*=2.0; +octaveLenPerPixel*=2.0; +#endif +} +float octavesFrac=fract(octaves); +float octavesCoeff=pow(2.0,float(octavesInt)); +if (octavesFrac != 0.0){ +float t=noiseSmooth(fscale*p,octaveLenPerPixel,falloffFactor,dispersionFactor); +float sum2=sum+t*amp; +sum*=octavesCoeff/(2.0*octavesCoeff-1.0); +sum2*=2.0*octavesCoeff/(4.0*octavesCoeff-1.0); +return mix(sum,sum2,octavesFrac); +} else { +return sum*octavesCoeff/(2.0*octavesCoeff-1.0); +} +} +#endif +#if (defined(USE_OSL)||defined(NODE_WAVELENGTH_BL))&&__VERSION__==300 +vec3 cieColorMatch[81]=vec3[](vec3(0.0014,0.0000,0.0065),vec3(0.0022,0.0001,0.0105),vec3(0.0042,0.0001,0.0201),vec3(0.0076,0.0002,0.0362),vec3(0.0143,0.0004,0.0679),vec3(0.0232,0.0006,0.1102),vec3(0.0435,0.0012,0.2074),vec3(0.0776,0.0022,0.3713),vec3(0.1344,0.0040,0.6456),vec3(0.2148,0.0073,1.0391),vec3(0.2839,0.0116,1.3856),vec3(0.3285,0.0168,1.6230),vec3(0.3483,0.0230,1.7471),vec3(0.3481,0.0298,1.7826),vec3(0.3362,0.0380,1.7721),vec3(0.3187,0.0480,1.7441),vec3(0.2908,0.0600,1.6692),vec3(0.2511,0.0739,1.5281),vec3(0.1954,0.0910,1.2876),vec3(0.1421,0.1126,1.0419),vec3(0.0956,0.1390,0.8130),vec3(0.0580,0.1693,0.6162),vec3(0.0320,0.2080,0.4652),vec3(0.0147,0.2586,0.3533),vec3(0.0049,0.3230,0.2720),vec3(0.0024,0.4073,0.2123),vec3(0.0093,0.5030,0.1582),vec3(0.0291,0.6082,0.1117),vec3(0.0633,0.7100,0.0782),vec3(0.1096,0.7932,0.0573),vec3(0.1655,0.8620,0.0422),vec3(0.2257,0.9149,0.0298),vec3(0.2904,0.9540,0.0203),vec3(0.3597,0.9803,0.0134),vec3(0.4334,0.9950,0.0087),vec3(0.5121,1.0000,0.0057),vec3(0.5945,0.9950,0.0039),vec3(0.6784,0.9786,0.0027),vec3(0.7621,0.9520,0.0021),vec3(0.8425,0.9154,0.0018),vec3(0.9163,0.8700,0.0017),vec3(0.9786,0.8163,0.0014),vec3(1.0263,0.7570,0.0011),vec3(1.0567,0.6949,0.0010),vec3(1.0622,0.6310,0.0008),vec3(1.0456,0.5668,0.0006),vec3(1.0026,0.5030,0.0003),vec3(0.9384,0.4412,0.0002),vec3(0.8544,0.3810,0.0002),vec3(0.7514,0.3210,0.0001),vec3(0.6424,0.2650,0.0000),vec3(0.5419,0.2170,0.0000),vec3(0.4479,0.1750,0.0000),vec3(0.3608,0.1382,0.0000),vec3(0.2835,0.1070,0.0000),vec3(0.2187,0.0816,0.0000),vec3(0.1649,0.0610,0.0000),vec3(0.1212,0.0446,0.0000),vec3(0.0874,0.0320,0.0000),vec3(0.0636,0.0232,0.0000),vec3(0.0468,0.0170,0.0000),vec3(0.0329,0.0119,0.0000),vec3(0.0227,0.0082,0.0000),vec3(0.0158,0.0057,0.0000),vec3(0.0114,0.0041,0.0000),vec3(0.0081,0.0029,0.0000),vec3(0.0058,0.0021,0.0000),vec3(0.0041,0.0015,0.0000),vec3(0.0029,0.0010,0.0000),vec3(0.0020,0.0007,0.0000),vec3(0.0014,0.0005,0.0000),vec3(0.0010,0.0004,0.0000),vec3(0.0007,0.0002,0.0000),vec3(0.0005,0.0002,0.0000),vec3(0.0003,0.0001,0.0000),vec3(0.0002,0.0001,0.0000),vec3(0.0002,0.0001,0.0000),vec3(0.0001,0.0000,0.0000),vec3(0.0001,0.0000,0.0000),vec3(0.0001,0.0000,0.0000),vec3(0.0000,0.0000,0.0000) +); +#endif +#if defined(USE_OSL)||defined(NODE_BLACKBODY_BL) +vec3 colorTempToRGB(float temp) +{ +vec3 retColor; +temp=clamp(temp,100.0,40000.0)/100.0; +if (temp<=66.0){ +retColor.r=1.0; +retColor.g=saturate(0.390081578*log(temp)-0.631841443); +} else { +float t=temp-60.0; +retColor.r=saturate(1.292936186*pow(t,-0.133204759)); +retColor.g=saturate(1.129890860*pow(t,-0.075514849)); +} +if (temp>=66.0) +retColor.b=1.0; +else if (temp<=19.0) +retColor.b=0.0; +else +retColor.b=saturate(0.543206789*log(temp-10.0)-1.196254089); +retColor.rgb=pow(retColor.rgb,vec3(2.2)); +return retColor; +} +#endif +#if (defined(NODE_TEX_WHITE_NOISE_BL)||defined(NODE_TEX_GABOR_BL))&&__VERSION__==300 +#define rotUint32(x,k)(((x)<< (k))|((x)>> (32-(k)))) +#define mixUint32(a,b,c){a-=c;a ^= rotUint32(c,4);c+=b;b-=a;b ^= rotUint32(a,6);a+=c;c-=b;c ^= rotUint32(b,8);b+=a;a-=c;a ^= rotUint32(c,16);c+=b;b-=a;b ^= rotUint32(a,19);a+=c;c-=b;c ^= rotUint32(b,4);b+=a;} +#define finalUint32(a,b,c){c ^= b;c-=rotUint32(b,14);a ^= c;a-=rotUint32(c,11);b ^= a;b-=rotUint32(a,25);c ^= b;c-=rotUint32(b,16);a ^= c;a-=rotUint32(c,4);b ^= a;b-=rotUint32(a,14);c ^= b;c-=rotUint32(b,24);} +uint hashUint(uint x){ +uint a=0xdeadbeefu+17u+x; +uint b=0xdeadbeefu+17u; +uint c=0xdeadbeefu+17u; +finalUint32(a,b,c); +return c; +} +uint hashUint2(uvec2 vec){ +uvec3 abc=uvec3(0xdeadbeefu+21u)+uvec3(vec,0u); +finalUint32(abc.x,abc.y,abc.z); +return abc.z; +} +uint hashUint3(uvec3 vec){ +uvec3 abc=uvec3(0xdeadbeefu+25u)+vec; +finalUint32(abc.x,abc.y,abc.z); +return abc.z; +} +uint hashUint4(uvec4 vec){ +uvec3 abc=uvec3(0xdeadbeefu+29u)+vec.xyz; +mixUint32(abc.x,abc.y,abc.z); +abc.x+=vec.w; +finalUint32(abc.x,abc.y,abc.z); +return abc.z; +} +#undef rotUint32 +#undef mixUint32 +#undef finalUint32 +float uintToFloat(uint value){ +return float(value)/float(0xFFFFFFFFu); +} +float hashFloatToFloat(float value){ +return uintToFloat(hashUint(floatBitsToUint(value))); +} +float hashVec2ToFloat(vec2 vec){ +return uintToFloat(hashUint2(floatBitsToUint(vec))); +} +float hashVec3ToFloat(vec3 vec){ +return uintToFloat(hashUint3(floatBitsToUint(vec))); +} +float hashVec4ToFloat(vec4 vec){ +return uintToFloat(hashUint4(floatBitsToUint(vec))); +} +vec2 hashVec3ToVec2(vec3 k){ +return vec2(hashVec3ToFloat(k.xyz),hashVec3ToFloat(k.zxy)); +} +vec2 hashVec4ToVec2(vec4 k){ +return vec2(hashVec4ToFloat(k.xyzw),hashVec4ToFloat(k.zxwy)); +} +vec3 hashFloatToVec3(float val){ +return vec3(hashFloatToFloat(val),hashVec2ToFloat(vec2(val,1.0)),hashVec2ToFloat(vec2(val,2.0))); +} +vec3 hashVec2ToVec3(vec2 vec){ +return vec3(hashVec2ToFloat(vec),hashVec3ToFloat(vec3(vec,1.0)),hashVec3ToFloat(vec3(vec,2.0))); +} +vec3 hashVec3ToVec3(vec3 vec){ +return vec3(hashVec3ToFloat(vec),hashVec4ToFloat(vec4(vec,1.0)),hashVec4ToFloat(vec4(vec,2.0))); +} +vec3 hashVec4ToVec3(vec4 vec){ +return vec3(hashVec4ToFloat(vec.xyzw),hashVec4ToFloat(vec.zxwy),hashVec4ToFloat(vec.wzyx)); +} +#endif`,ide=`#ifdef USE_OSL +#define M_PI PI +#define M_PI_2 PI/2.0 +#define M_PI_4 PI/4.0 +#define M_2_PI 2.0/PI +#define M_2PI 2.0*PI +#define M_4PI 4.0*PI +#define M_2_SQRTPI 2.0/sqrt(PI) +#define M_E 2.718281828459 +#define M_LN2 0.69314718056 +#define M_LN10 2.30258509299 +#define M_LOG2E 1.4426950409 +#define M_LOG10E 0.43429448190 +#define M_SQRT2 sqrt(2.0) +#define M_SQRT1_2 sqrt(0.5) +#define OSL_ALPHA 33633 +#define OSL_ANISOTROPIC 40205 +#define OSL_AVERAGEALPHA 57701 +#define OSL_AVERAGECOLOR 46077 +#define OSL_BANDWIDTH 37485 +#define OSL_BEZIER 27645 +#define OSL_BLACK 62409 +#define OSL_BSPLINE 16959 +#define OSL_CAMERA 8198 +#define OSL_CAMERA_CLIP 34380 +#define OSL_CAMERA_CLIP_FAR 31933 +#define OSL_CAMERA_CLIP_NEAR 21485 +#define OSL_CAMERA_FOV 60706 +#define OSL_CAMERA_PIXELASPECT 4950 +#define OSL_CAMERA_PROJECTION 29369 +#define OSL_CAMERA_RESOLUTION 39679 +#define OSL_CAMERA_SCREEN_WINDOW 47009 +#define OSL_CAMERA_SHUTTER 7107 +#define OSL_CAMERA_SHUTTER_CLOSE 34406 +#define OSL_CAMERA_SHUTTER_OPEN 40085 +#define OSL_CATMULL_ROM 31642 +#define OSL_CELL 20984 +#define OSL_CHANNELS 8726 +#define OSL_CLAMP 20052 +#define OSL_COLOR 53753 +#define OSL_COMMON 49871 +#define OSL_CONSTANT 25144 +#define OSL_DATAWINDOW 54276 +#define OSL_DEFAULT 54870 +#define OSL_DIFFUSE 40389 +#define OSL_DIRECTION 42220 +#define OSL_DISPLAYWINDOW 30728 +#define OSL_DISTANCE 51337 +#define OSL_DO_FILTER 35765 +#define OSL_EMPTY 9314 +#define OSL_ERRORMESSAGE 38305 +#define OSL_EXISTS 41510 +#define OSL_FILL 39132 +#define OSL_FIRSTCHANNEL 48155 +#define OSL_GABOR 57764 +#define OSL_GEOM_NAME 63686 +#define OSL_GLOSSY 47998 +#define OSL_HASH 49390 +#define OSL_HERMITE 63643 +#define OSL_HIT 48491 +#define OSL_HITDIST 22029 +#define OSL_HSL 49898 +#define OSL_HSV 29073 +#define OSL_IMPULSES 56191 +#define OSL_INDEX 1731 +#define OSL_INTERP 10557 +#define OSL_LINEAR 2182 +#define OSL_MIRROR 64591 +#define OSL_MISSINGALPHA 39755 +#define OSL_MISSINGCOLOR 51667 +#define OSL_NDC 48899 +#define OSL_NORMAL 16520 +#define OSL_OBJECT 59084 +#define OSL_OSL_VERSION 47920 +#define OSL_PERIODIC 8749 +#define OSL_PERLIN 730 +#define OSL_POSITION 43041 +#define OSL_RASTER 2618 +#define OSL_REFLECTION 37621 +#define OSL_REFRACTION 37287 +#define OSL_RESOLUTION 48704 +#define OSL_RGB 26673 +#define OSL_RWRAP 47801 +#define OSL_SCREEN 55875 +#define OSL_SHADER 21066 +#define OSL_SHADER_GROUPNAME 62327 +#define OSL_SHADER_LAYERNAME 51796 +#define OSL_SHADER_SHADERNAME 65123 +#define OSL_SHADOW 60708 +#define OSL_SIMPLEX 61636 +#define OSL_SUBIMAGE 33526 +#define OSL_SUBIMAGES 2366 +#define OSL_SWRAP 4328 +#define OSL_TEXTUREFORMAT 17851 +#define OSL_TIME 52235 +#define OSL_TRACE 62908 +#define OSL_TWRAP 30524 +#define OSL_TYPE 64071 +#define OSL_UPERLIN 65308 +#define OSL_USIMPLEX 11314 +#define OSL_WIDTH 48751 +#define OSL_WORLD 9059 +#define OSL_WORLDTOCAMERA 32273 +#define OSL_WORLDTOSCREEN 33876 +#define OSL_WRAP 58300 +#define OSL_XYY 2228 +#define OSL_XYZ 47351 +#define OSL_YIQ 15839 +vec3 oslGetP(vec3 viewPos){ +#if WORLD_NODES==1 +return swizzleUpZ((invViewMatrix*vec4(-viewPos,0.0)).xyz); +#else +return swizzleUpZ((invViewMatrix*vec4(-viewPos,1.0)).xyz); +#endif +} +vec3 oslGetI(vec3 viewPos){ +#if WORLD_NODES==1 +return swizzleUpZ((invViewMatrix*vec4(normalize(-viewPos),0.0)).xyz); +#else +return swizzleUpZ((invViewMatrix*vec4(normalize(-viewPos),0.0)).xyz); +#endif +} +vec3 oslGetN(vec3 viewNorm){ +return swizzleUpZ(normalize(invViewMatrix*vec4(viewNorm,0.0)).xyz); +} +vec3 oslBlackbody(float temperatureK){ +return vec4(colorTempToRGB(temperatureK),1.0).rgb; +} +float oslDistance(vec3 p0,vec3 p1){ +return distance(p0,p1); +} +float oslDistance(vec3 p0,vec3 p1,vec3 q){ +vec3 d=p1-p0; +float dd=dot(d,d); +if (dd==0.0) +return distance(q,p0); +float t=dot(q-p0,d)/dd; +return distance(q,p0+clamp(t,0.0,1.0)*d); +} +int oslEndsWith(int name1,int name2){ +return int(name1==name2); +} +int oslFormat(int name1,int name2){ +return name2; +} +int oslGetAttribute(int name,out int value){ +value=0; +return 0; +} +int oslGetAttribute(int name,out float value){ +value=0.0; +return 0; +} +int oslGetAttribute(int name,out vec3 vec){ +vec=vec3(0.0,0.0,0.0); +return 0; +} +void oslGetTextureInfo(int filename,int name,out int value){ +value=4; +} +void oslGetTextureInfo(int filename,int name,out int value[2]){ +value[0]=1024; +value[1]=1024; +} +vec3 oslHSV(float h,float s,float v){ +vec4 outCol; +hsvToRGB(vec4(h,s,v,1.0),outCol); +return outCol.rgb; +} +float oslHypot(float x,float y){ +return sqrt(x*x+y*y); +} +float oslHypot(float x,float y,float z){ +return sqrt(x*x+y*y+z*z); +} +float oslLog2(float x,float y){ +return log(x)/log(y); +} +float oslLuminance(vec3 color){ +return linearToRelativeLuminance(color); +} +float oslNoise(int type,vec3 vec,float phase){ +float n=snoise(vec4(vec,phase)); +if (type==OSL_UPERLIN) +n=n*0.5+0.5; +return n; +} +float oslNoise(int type,float value,float phase){ +return oslNoise(type,vec3(value),phase); +} +float oslNoise(int type,vec3 vec){ +return oslNoise(type,vec,0.0); +} +float oslNoise(int type,float value){ +return oslNoise(type,vec3(value),0.0); +} +vec3 oslNoise3D(int type,vec3 vec,float phase){ +float x=snoise(vec4(vec,phase)); +float y=snoise(vec4(vec.y,vec.x,vec.z,phase)); +float z=snoise(vec4(vec.y,vec.z,vec.x,phase)); +vec3 n=vec3(x,y,z); +if (type==OSL_UPERLIN) +n=n*0.5+0.5; +return n; +} +vec3 oslNoise3D(int type,float value,float phase){ +return oslNoise3D(type,vec3(value),phase); +} +vec3 oslNoise3D(int type,vec3 vec){ +return oslNoise3D(type,vec,0.0); +} +vec3 oslNoise3D(int type,float value){ +return oslNoise3D(type,vec3(value),0.0); +} +float oslPow(float a,float b){ +return pow(a,b); +} +vec3 oslPow(vec3 a,float b){ +return pow(a,vec3(b)); +} +int oslRayType(int name){ +if (name==OSL_CAMERA) +#if LIGHT_PATH_IS_CAM_RAY +return 1; +#else +return 0; +#endif +else +return 0; +} +vec3 oslRotate(vec3 vec,float angle,vec3 p0,vec3 p1){ +vec3 axis=normalize(p1-p0); +float c=cos(angle); +float s=sin(angle); +float x=axis[0]; +float y=axis[1]; +float z=axis[2]; +mat4 mat=mat4(x*x+(1.0-x*x)*c,x*y*(1.0-c)+z*s,x*z*(1.0-c)-y*s,0.0,x*y*(1.0-c)-z*s,y*y+(1.0-y*y)*c,y*z*(1.0-c)+x*s,0.0,x*z*(1.0-c)+y*s,y*z*(1.0-c)-x*s,z*z+(1.0-z*z)*c,0.0,0.0,0.0,0.0,1.0 +); +return (mat*vec4((vec-p0),1.0)+vec4(p0,1.0)).xyz; +} +vec3 oslRotate(vec3 vec,float angle,vec3 axis){ +return oslRotate(vec,angle,vec3(0.0),axis); +} +int oslStartsWith(int name1,int name2){ +return int(name1==name2); +} +int oslStrLen(int name){ +if (name==OSL_EMPTY) +return 0; +else +return 1; +} +int oslSubStr(int s,int start,int len){ +return s; +} +int oslSubStr(int s,int start){ +return s; +} +vec3 oslTexture(sampler2D image,float u,float v,int wrapModeFlag,int wrapMode,int alphaFlag,out float alpha){ +if (wrapMode==OSL_DEFAULT||wrapMode==OSL_BLACK){ +if (u<0.0||u>1.0||v<0.0||v>1.0) +return vec3(0.0); +} else if (wrapMode==OSL_CLAMP){ +u=clamp(u,0.0,1.0); +v=clamp(v,0.0,1.0); +} else if (wrapMode==OSL_PERIODIC){ +u=mod(u,1.0); +v=mod(v,1.0); +} else if (wrapMode==OSL_MIRROR){ +if (mod(floor(u),2.0)==0.0) +u=u-floor(u); +else +u=1.0-(u-floor(u)); +if (mod(floor(v),2.0)==0.0) +v=v-floor(v); +else +v=1.0-(v-floor(v)); +} +vec4 colAlpha=texture2D(image,vec2(u,v)); +alpha=colAlpha.a; +return colAlpha.rgb; +} +vec3 oslTexture(sampler2D image,float u,float v,int alphaFlag,out float alpha,int wrapModeFlag,int wrapMode){ +return oslTexture(image,u,v,wrapModeFlag,wrapMode,alphaFlag,alpha); +} +vec3 oslTexture(sampler2D image,float u,float v,int alphaFlag,out float alpha){ +return oslTexture(image,u,v,OSL_WRAP,OSL_DEFAULT,alphaFlag,alpha); +} +vec3 oslTexture(sampler2D image,float u,float v,int wrapModeFlag,int wrapMode){ +float alpha; +return oslTexture(image,u,v,wrapModeFlag,wrapMode,OSL_ALPHA,alpha); +} +vec3 oslTexture(sampler2D image,float u,float v){ +float alpha; +return oslTexture(image,u,v,OSL_WRAP,OSL_DEFAULT,OSL_ALPHA,alpha); +} +vec3 oslTexture(sampler2D image,float u,float v,int wrapModeFlag,int wrapMode,int colorSpaceFlag,int colorSpace){ +float alpha; +return oslTexture(image,u,v,wrapModeFlag,wrapMode,OSL_ALPHA,alpha); +} +vec3 oslTransform(int fromSpace,int toSpace,vec4 vec){ +if (toSpace==OSL_WORLD||toSpace==OSL_SHADER||toSpace==OSL_COMMON){ +return vec.xyz; +} else if (toSpace==OSL_OBJECT){ +vec=vec4(swizzleUpY(vec.xyz),vec.w); +vec=invModelMatrix*vec; +return swizzleUpZ(vec.xyz); +} else if (toSpace==OSL_CAMERA){ +vec=vec4(swizzleUpY(vec.xyz),vec.w); +return (viewMatrix*vec).xyz; +} else if (toSpace==OSL_SCREEN){ +return vec.xyz; +} else if (toSpace==OSL_RASTER){ +return gl_FragCoord.xyz; +} else if (toSpace==OSL_NDC){ +return vec.xyz; +} else { +return vec.xyz; +} +} +vec3 oslTransform(int fromSpace,int toSpace,vec3 vec){ +return oslTransform(fromSpace,toSpace,vec4(vec,1.0)); +} +vec3 oslTransform(int toSpace,vec3 vec){ +return oslTransform(OSL_COMMON,toSpace,vec4(vec,1.0)); +} +vec3 oslTransformDir(int fromSpace,int toSpace,vec3 vec){ +return oslTransform(fromSpace,toSpace,vec4(vec,0.0)); +} +vec3 oslTransformDir(int toSpace,vec3 vec){ +return oslTransform(OSL_COMMON,toSpace,vec4(vec,0.0)); +} +vec3 oslTransformC(int fromSpace,int toSpace,vec3 vec){ +vec4 outVec=vec4(vec,1.0); +if (fromSpace==OSL_HSV&&toSpace==OSL_RGB) +hsvToRGB(vec4(vec,1.0),outVec); +else if (fromSpace==OSL_RGB&&toSpace==OSL_HSV) +rgbToHSV(vec4(vec,1.0),outVec); +return outVec.rgb; +} +vec3 oslTransformC(int toSpace,vec3 vec){ +return oslTransformC(OSL_RGB,toSpace,vec); +} +void oslError(){} +void oslFPrintf(){} +void oslPrintf(){} +void oslWarning(){} +vec3 oslWaveLengthColor(float lambdaNM){ +#if __VERSION__==300 +vec3 xyz=vec3(0.0); +float ii=(lambdaNM-380.0)/5.0; +int i=int(ii); +if (i<0||i>=80) +return xyz; +ii-=float(i); +vec3 c1=cieColorMatch[i]; +vec3 c2=cieColorMatch[i+1]; +xyz=mix(c1,c2,ii); +return xyz_to_sRGB(xyz); +#else +return vec3(0.0); +#endif +} +#endif`,ade=`void node_incident(vec3 viewPos,out vec3 incident) +{ + +vec4 viewDir=vec4(normalize(viewPos),0.0); +incident=-swizzleUpZ(viewDir.xyz); +}`,sde=`void node_normal(vec3 norParam,out vec3 norOut) +{ +#ifdef MT_BLENDER +#if WORLD_NODES==1 +vec4 viewDir=isOrthographic?vec4(0.0,0.0,-1.0,0.0):vec4(normalize(-vViewPosition),0.0); +viewDir=invViewMatrix*viewDir; +norOut=-swizzleUpZ(viewDir.xyz); +#else +norOut=normalize(invViewMatrix*vec4(norParam,0.0)).xyz; +norOut=swizzleUpZ(norOut); +#endif +#else +norOut=norParam; +#endif +}`,lde=`void node_position(vec3 posParam,out vec3 posOut) +{ +#if defined(MT_BLENDER)||defined(MT_MAX) +posOut=swizzleUpZ(-posParam); +#else +posOut=-posParam; +#endif +}`,cde=`uniform vec4 nodeRGB[NODE_RGB_NUM]; +void node_rgb_alpha(vec4 color,out vec3 outColor,out float outAlpha) +{ +outColor=color.rgb; +outAlpha=color.a; +}`,ude=`uniform float nodeValue[NODE_VALUE_NUM]; +void node_value(float value,out float outValue) +{ +outValue=value; +}`,dde=`void node_u_float(vec2 inUv,out float u) +{ +u=inUv.x; +}`,fde=`void node_abs(vec3 inputVal,out vec3 outColor) +{ +outColor=abs(inputVal); +}`,hde=`void node_add(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=input1+input2; +}`,pde=`void node_atan(int units,vec3 x,vec3 y,out vec3 outColor) +{ +outColor=atan(y,x); +if (units==1) +outColor=degrees(outColor); +}`,mde=`void node_checkerboard(const vec2 inUv,vec3 color1,vec3 color2,float uFrequency,float vFrequency,float uOffset,float vOffset,float contrast,out vec3 outColor){ +vec2 uv=-1.0+2.0*inUv; +float fmodResult=mod(floor(uOffset*2.0+uFrequency*uv.x)+floor(vOffset*2.0+vFrequency*uv.y),2.0); +float final=max(sign(fmodResult),0.0); +vec3 col=vec3(final); +if (final==0.0) +col=color1; +else +col=color2; +outColor=col*vec3(contrast)+vec3(1.0-contrast); +}`,gde=`void node_clamp(const int mode,vec3 inputValue,float minValue,float maxValue,vec3 minColor,vec3 maxColor,out vec3 outColor,out vec3 outTransparency) +{ +if (mode==0) +outColor=clamp(inputValue,vec3(minValue),vec3(maxValue)); +else +outColor=clamp(inputValue,minColor,maxColor); +outTransparency=outColor; +}`,_de=`void node_color_to_float(const int mode,vec3 inputValue,out float outValue) +{ +if (mode==0) +outValue=min(min(inputValue.r,inputValue.g),inputValue.b); +else if (mode==1) +outValue=max(max(inputValue.r,inputValue.g),inputValue.b); +else if (mode==2) +outValue=(inputValue.r+inputValue.g+inputValue.b)/3.0; +else if (mode==3) +outValue=inputValue.r+inputValue.g+inputValue.b; +else if (mode==4){ +outValue=dot(inputValue,LUM_WEIGHTS); +} +else if (mode==5) +outValue=inputValue.r; +else if (mode==6) +outValue=inputValue.g; +else if (mode==7) +outValue=inputValue.b; +}`,vde=`void node_color_convert(const int from,const int to,vec3 inputValue,out vec3 outColor,out vec3 outTransparency) +{ +vec4 c; +if (from==to) +c=vec4(inputValue,1.0); +else if (from==0) +rgbToHSV(vec4(inputValue,1.0),c); +else if (from==1) +hsvToRGB(vec4(inputValue,1.0),c); +outColor=c.rgb; +outTransparency=outColor; +}`,Ade=`void node_color_correct(vec3 inputValue,float mask,float gamma,float hueShift,float saturation,float contrast,float contrastPivot,float exposure,vec3 multiply,vec3 add,bool invert,bool alphaIsLuminance,float alphaMultiply,float alphaAdd,bool invertAlpha,out vec3 outColor,out float outAlpha) +{ +outColor=inputValue; +outColor=invert?1.0-outColor:outColor; +outColor=vec3(pow(abs(outColor.r),gamma),pow(abs(outColor.g),gamma),pow(abs(outColor.b),gamma)); +vec4 hsv; +rgbToHSV(vec4(outColor,1.0),hsv); +hsv[0]+=hueShift/360.0; +if (hsv[0]>1.0) +hsv[0]-=1.0; +else if (hsv[0]<0.0) +hsv[0]+=1.0; + +hsv[1]*=(saturation); +hsv[1]=saturate(hsv[1]); +hsv[2]+=exposure*2.0; +vec4 c=hsv; +hsvToRGB(hsv,c); +c=((c-contrastPivot)*contrast+contrastPivot)*vec4(multiply,1.0)+vec4(add,1.0); +outColor=c.rgb; +outAlpha=1.0; +}`,yde=`void node_compare(int test,float input1,float input2,out bool outValue) +{ +if (test==0) +outValue=input1==input2; +else if (test==1) +outvalue=input1 != input2; +else if (test==2) +outValue=input1input2; +else if (test==4) +outValue=input1<=input2; +else if (test==5) +outValue=input1>=input2; +}`,bde=`void node_complement(vec3 inputValue,out vec3 outColor) +{ +outColor=1.0-inputValue; +}`,xde=`void node_composite(const int operation,const int alphaOperation,vec3 A,vec3 B,float AA,float BA,out float outAlpha,out vec3 outColor,out vec3 outTransparency) +{ +vec4 A1=vec4(A,AA); +vec4 B1=vec4(B,BA); +vec4 color=vec4(0.0); +if (operation==0) +color=A1; +else if (operation==1) +color=B1; +else if (operation==2) +color=A1*B1.a+B1*(1.0-A1.a); +else if (operation==3) +color=(A1+B1)/2.0; +else if (operation==4) +color=A1.a>B1.a?A1:(A1+B1*(1.0-A1.a)/B1.a); +else if (operation==5) +color=abs(A1-B1); +else if (operation==6) +color=A1.a+B1.a<1.0?A1+B1:A1+B1*(1.0-A1.a)/B1.a; +else if (operation==7) +for (int i=0;i<4;i++) +color[i]=B1[i]==0.0?0.0:(A1[i]/B1[i]); +else if (operation==8) +color=A1+B1-2.0*A1*B1; +else if (operation==9) +color=B1-A1; +else if (operation==10) +color=2.0*A1*B1/(A1+B1); +else if (operation==11) +for (int i=0;i<4;i++) +color[i]=A1[i]<0.5?(A1[i]*B1[i]):(A1[i]>=0.0&&A1[i]<=1.0&&B1[i]>=0.0&&B1[i]<=1.0)?(A1[i]+B1[i]-A1[i]*B1[i]):max(A1[i],B1[i]); +else if (operation==12) +color=sqrt(A1*A1+B1*B1); +else if (operation==13) +color=A1*B1.a; +else if (operation==14) +color=B1*A1.a; +else if (operation==15) +color=A1*A1.a+B1*(1.0-A1.a); +else if (operation==16) +color=max(A1,B1); +else if (operation==17) +color=min(A1,B1); +else if (operation==18) +color=A1-B1; +else if (operation==19) +color=A1*B1; +else if (operation==20) +color=A1*(1.0-B1.a); +else if (operation==21) +color=A1+B1*(1.0-A1.a); +else if (operation==22) +for (int i=0;i<4;i++) +color[i]=B1[i]<0.5?(A1[i]*B1[i]):(A1[i]>=0.0&&A1[i]<=1.0&&B1[i]>=0.0&&B1[i]<=1.0)?(A1[i]+B1[i]-A1[i]*B1[i]):max(A1[i],B1[i]); +else if (operation==23) +color=A1+B1; +else if (operation==24) +for (int i=0;i<4;i++) +color[i]=(A1[i]>=0.0&&A1[i]<=1.0&&B1[i]>=0.0&&B1[i]<=1.0)?(A1[i]+B1[i]-A1[i]*B1[i]):max(A1[i],B1[i]); + +else if (operation==25) +for (int i=0;i<4;i++) +color[i]=(A1[i]<.75)?(A1[i]*B1[i]):(A1[i]>=0.0&&A1[i]<=1.0&&B1[i]>=0.0&&B1[i]<=1.0)?(A1[i]+B1[i]-A1[i]*B1[i]):max(A1[i],B1[i]); +else if (operation==26) +color=B1*(1.0-A1.a); +else if (operation==27) +color=A1*(1.0-B1.a)+B1; +else if (operation==28) +color=A1*(1.0-B1.a)+B1*(1.0-A1.a); +if (alphaOperation==1) +color.a=AA; +else if (alphaOperation ==2) +color.a=BA; +outColor=color.rgb; +outAlpha=color.a; +outTransparency=outColor; +}`,Ede=`void node_cross(vec3 input1,vec3 input2,out vec3 outValue) +{ +outValue=cross(input1,input2); +}`,Cde=`void node_divide(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=input1/input2; +}`,Sde=`void node_dot(vec3 input1,vec3 input2,out vec3 outValue) +{ +outValue=dot(input1,input2); +}`,wde=`void node_exp(vec3 inputVal,out vec3 outColor) +{ +outColor=exp(inputVal); +}`,Mde=`void node_facing_ratio(vec3 viewNorm,const float bias,const float gain,const bool invert,const bool linear,out float outValue) +{ +outValue=dot(normalize(viewNorm),normalize(vViewPosition)); +}`,Tde=`void node_flat(vec3 color,out vec3 outColor) +{ +outColor=color; +}`,Ide=`void node_float_to_int(const int mode,float inputValue,out int outValue) +{ +if (mode==0) +outValue=round(inputValue); +else if (mode==1) +outValue=trunc(inputValue); +else if (mode==2) +outValue=floor(inputValue); +else if (mode==3) +outValue=ceil(inputValue); +}`,Rde=`void node_float_to_matrix(float input00,float input01,float input02,float input03,float input10,float input11,float input12,float input13,float input20,float input21,float input22,float input23,float input30,float input31,float input32,float input33,out mat4 outValue) +{ +outValue=mat4(input00,input01,input02,input03,input10,input11,input12,input13,input20,input21,input22,input23,input30,input31,input32,input33); +}`,Lde=`void node_float_to_rgba(float r,float g,float b,float a,out vec4 outColor,out float outAlpha,out vec3 outTransparency) +{ +outAlpha=a; +outColor=vec4(r,g,b,a); +outTransparency=vec3(1.0-a); +}`,Pde=`void node_float_to_rgb(float r,float g,float b,out vec3 outValue) +{ +outValue=vec3(r,g,b); +}`,Dde=`void node_fraction(vec3 inputValue,out vec3 outColor) +{ +outColor=fract(inputValue); +}`,Bde=`void node_is_finite(vec3 inputValue,out bool outValue) +{ +outValue=!any(isinf(inputValue)); +}`,Nde=` +void node_image(sampler2D ima,const int encoding,vec3 multiply,vec3 offset,vec2 uvcoords,float soffset,float toffset,float sscale,float tscale,bool sflip,bool tflip,bool swapSt,out vec3 outColor,out float outAlpha,out vec3 outTransparency){ +vec2 uv=vec2(uvcoords.x,uvcoords.y); +uv+=vec2(soffset,toffset); +uv=mix(uv.xy,uv.yx,float(swapSt)); +vec2 stFlip=vec2(float(sflip),float(tflip)); +uv=mix(uv,1.0-uv,stFlip); +uv*=vec2(sscale,tscale); +uv.y=1.0-uv.y; +vec4 tex=texture2D(ima,uv); +outColor=nodeTexelToLinear(tex,encoding).rgb*multiply+offset; +outAlpha=tex.a; +outTransparency=outColor.rgb; +} +void node_image(sampler2D ima,const int encoding,vec3 multiply,vec3 offset,vec2 uvcoords,float soffset,float toffset,float sscale,float tscale,bool sflip,bool tflip,bool swapSt,vec2 dUVdx,vec2 dUVdy,out vec3 outColor,out float outAlpha,out vec3 outTransparency){ +vec2 uv=vec2(uvcoords.x,uvcoords.y); +uv+=vec2(soffset,toffset); +uv=mix(uv.xy,uv.yx,float(swapSt)); +vec2 stFlip=vec2(float(sflip),float(tflip)); +uv=mix(uv,1.0-uv,stFlip); +uv*=vec2(sscale,tscale); +uv.y=1.0-uv.y; +#ifdef texture2DGradEXT +vec2 dInvOp=stFlip*(-2.0)+1.0; +dUVdx*=vec2(sscale,tscale)*dInvOp; +dUVdy*=vec2(sscale,tscale)*dInvOp; +vec4 tex=textureGrad(ima,uv,dUVdx,dUVdy); +#else +vec4 tex=texture2D(ima,uv); +#endif +outColor=nodeTexelToLinear(tex,encoding).rgb*multiply+offset; +outAlpha=tex.a; +outTransparency=outColor.rgb; +} +void node_image(sampler2D ima,const int encoding,vec4 multiply,vec4 offset,vec2 uvcoords,float soffset,float toffset,float sscale,float tscale,bool sflip,bool tflip,bool swapSt,out vec4 outColor){ +vec2 uv=vec2(uvcoords.x,uvcoords.y); +uv+=vec2(soffset,toffset); +uv=mix(uv.xy,uv.yx,float(swapSt)); +vec2 stFlip=vec2(float(sflip),float(tflip)); +uv=mix(uv,1.0-uv,stFlip); +uv*=vec2(sscale,tscale); +uv.y=1.0-uv.y; +vec4 tex=texture2D(ima,uv); +outColor=nodeTexelToLinear(tex,encoding).rgba*multiply+offset; +} +void node_image(sampler2D ima,const int encoding,vec4 multiply,vec4 offset,vec2 uvcoords,float soffset,float toffset,float sscale,float tscale,bool sflip,bool tflip,bool swapSt,vec2 dUVdx,vec2 dUVdy,out vec4 outColor){ +vec2 uv=vec2(uvcoords.x,uvcoords.y); +uv+=vec2(soffset,toffset); +uv=mix(uv.xy,uv.yx,float(swapSt)); +vec2 stFlip=vec2(float(sflip),float(tflip)); +uv=mix(uv,1.0-uv,stFlip); +uv*=vec2(sscale,tscale); +uv.y=1.0-uv.y; +#ifdef texture2DGradEXT +vec2 dInvOp=stFlip*(-2.0)+1.0; +dUVdx*=vec2(sscale,tscale)*dInvOp; +dUVdy*=vec2(sscale,tscale)*dInvOp; +vec4 tex=textureGrad(ima,uv,dUVdx,dUVdy); +#else +vec4 tex=texture2D(ima,uv); +#endif +outColor=nodeTexelToLinear(tex,encoding).rgba*multiply+offset; +}`,Ode=`void node_lambert(vec3 geometryNormal,float base,vec3 baseColor,vec3 normalCamera,vec3 opacity,out vec4 outColor,out float outAlpha,out vec3 outTransparency) +{ +NodeMaterial material; +material.diffuseColor=base*baseColor; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +vec3 normal=normalCamera; +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +outAlpha=average(opacity); +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse,outAlpha); +outTransparency=vec3(1.0)-opacity; +}`,kde=`void node_length(int mode,vec3 inputVec,out float outValue) +{ +if (mode==0) +outValue=length(inputVec); +else if (mode==1) +outValue=dot(inputVec,inputVec); +else +outValue=abs(inputVec.x)+abs(inputVec.y)+abs(inputVec.z); +}`,Fde=`void node_log(vec3 inputVec,vec3 base,out vec3 outColor) +{ +outColor=log(inputVec)/log(base); +}`,Vde=`void node_map_to_mtl(bool opaqueEnabled,vec4 color,out vec4 outColor) +{ +outColor=vec4(color.rgb,opaqueEnabled?color.a:1.0); +}`,Ude=` +void node_matrix_transform(const int transformOrder,const int rotationType,const int rotationUnits,const int rotationOrder,vec3 rotationEuler,vec3 rotationAxis,float rotationAngle,vec3 translation,vec3 scaling,vec3 pivot,out mat4 outMatrix) +{ +mat4 tMat=translationToMat4(translation); +mat4 sMat=scalingToMat4(scaling); +mat4 rMat=mat4(1.0); +if (rotationType==0){ +vec3 rot=float(rotationUnits)*radians(rotationEuler)+float(1-rotationUnits)*rotationEuler; +mat3 matX=mat3RotateX(rot.x); +mat3 matY=mat3RotateY(-rot.y); +mat3 matZ=mat3RotateZ(rot.z); +mat3 rotMat3; +if (rotationOrder==0){ +rotMat3=matX*matY*matZ; +} else if (rotationOrder==1){ +rotMat3=matX*matZ*matY; +} else if (rotationOrder==2){ +rotMat3=matY*matX*matZ; +} else if (rotationOrder==3){ +rotMat3=matY*matZ*matX; +} else if (rotationOrder==4){ +rotMat3=matZ*matX*matY; +} else if (rotationOrder==5){ +rotMat3=matZ*matY*matX; +} +rMat=toMat4(rotMat3); +} else if (rotationType==1){ +float angleInRadians=float(rotationUnits)*radians(rotationAngle)+float(1-rotationUnits)*rotationAngle; +rotationAxis=normalize(rotationAxis); +rMat=toMat4(axisAngleToMat3(rotationAxis,angleInRadians)); +} +if (transformOrder==0){ +outMatrix=sMat*rMat*tMat; +} else if (transformOrder==1){ +outMatrix=sMat*tMat*rMat; +} else if (transformOrder==2){ +outMatrix=rMat*sMat*tMat; +} else if (transformOrder==3){ +outMatrix=rMat*tMat*sMat; +} else if (transformOrder==4){ +outMatrix=tMat*sMat*rMat; +} else if (transformOrder==5){ +outMatrix=tMat*rMat*sMat; +} +mat4 rotX90=toMat4(mat3RotateX(PI*0.5)); +mat4 pivotMat=translationToMat4(pivot); +mat4 invPivotMat=inverse(pivotMat); +outMatrix=invPivotMat*outMatrix*pivotMat*rotX90; +} +void node_matrix_transform(const int transformOrder,const int rotationType,const int rotationUnits,const int rotationOrder,vec3 rotationEuler,vec3 rotationAxis,float rotationAngle,vec3 translation,vec3 scaling,vec3 pivot,out mat4 outMatrix,out vec3 outTransparency) +{ +mat4 tMat=translationToMat4(translation); +mat4 sMat=scalingToMat4(scaling); +mat4 rMat=mat4(1.0); +if (rotationType==0){ +vec3 rot=mix(rotationEuler,radians(rotationEuler),float(rotationUnits)); +mat3 matX=mat3RotateX(rot.x); +mat3 matY=mat3RotateY(-rot.y); +mat3 matZ=mat3RotateZ(rot.z); +mat3 rotMat3; +if (rotationOrder==0){ +rotMat3=matX*matY*matZ; +} else if (rotationOrder==1){ +rotMat3=matX*matZ*matY; +} else if (rotationOrder==2){ +rotMat3=matY*matX*matZ; +} else if (rotationOrder==3){ +rotMat3=matY*matZ*matX; +} else if (rotationOrder==4){ +rotMat3=matZ*matX*matY; +} else if (rotationOrder==5){ +rotMat3=matZ*matY*matX; +} +rMat=toMat4(rotMat3); +} else if (rotationType==1){ +float angleInRadians=mix(rotationAngle,radians(rotationAngle),float(rotationUnits)); +rotationAxis=normalize(rotationAxis); +rMat=toMat4(axisAngleToMat3(rotationAxis,angleInRadians)); +} +outMatrix=rMat; +if (transformOrder==0){ +outMatrix=sMat*rMat*tMat; +} else if (transformOrder==1){ +outMatrix=sMat*tMat*rMat; +} else if (transformOrder==2){ +outMatrix=rMat*sMat*tMat; +} else if (transformOrder==3){ +outMatrix=rMat*tMat*sMat; +} else if (transformOrder==4){ +outMatrix=tMat*sMat*rMat; +} else if (transformOrder==5){ +outMatrix=tMat*rMat*sMat; +} +mat4 pivotMat=translationToMat4(pivot); +mat4 invPivotMat=inverse(pivotMat); +outMatrix=invPivotMat*outMatrix*pivotMat; +}`,zde=`void node_max(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=max(input1,input2); +}`,Gde=`void node_min(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=min(input1,input2); +}`,Hde=`void node_mix_shader(const int mode,const float mixAmt,vec4 shader1,vec4 shader2,out vec4 color) +{ +shader1.rgb*=shader1.a; +shader2.rgb*=shader2.a; +if (mode==0) +color=mix(shader1,shader2,clamp(mixAmt,0.0,1.0)); +else +color=vec4(shader1.rgb+shader2.rgb,min(shader1.a,shader2.a)); +color.rgb/=color.a; +}`,Wde=`void node_modulo(vec3 inputVec,vec3 divisor,out vec3 outColor) +{ +outColor=mod(inputVec,divisor); +}`,jde=`void node_multiply(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=input1*input2; +}`,Qde=`void node_negate(vec3 inputVec,out vec3 outColor) +{ +outColor=-inputVec; +}`,$de=`void node_normalize(vec3 inputVec,out vec3 outValue) +{ +outValue=normalize(inputVec); +}`,Yde=`void node_normal_map(vec4 tangentParam,vec3 inputVal,vec3 normal,float strength,vec3 tangent,out vec3 outValue){ +#ifdef DOUBLE_SIDED +normal=normal*(float(gl_FrontFacing)*2.0-1.0); +#endif +vec3 normalTex=inputVal.xyz*2.0-1.0; +vec3 bitangent=tangentParam.w*cross(normal,tangent); +outValue=normalize(normalTex.x*tangent+normalTex.y*bitangent+normalTex.z*normal); +outValue=mix(normal,outValue,strength); +}`,Xde=`void node_pow(vec3 base,vec3 exponent,out vec3 outColor) +{ +outColor=pow(base,exponent); +}`,qde=`void node_abs(vec3 inputColor,out vec3 outColor) +{ +outColor=inputColor; +}`,Kde=`void node_range(vec3 inputValue,float inputMin,float inputMax,float outputMin,float outputMax,bool smoothstep1,float contrast,float contrastPivot,float bias,float gain,out vec3 outColor,out vec3 outTransparency) +{ + +outColor=min(max(inputValue,vec3(inputMin)),vec3(inputMax)); +outColor=(outColor-contrastPivot)*contrast+contrastPivot; +if (smoothstep1==true){ +for (int i=0;i<3;i++) +outColor[i]=smoothstep(outputMin,outputMax,outColor[i]); +} else +outColor=min(max(outColor,vec3(outputMin)),vec3(outputMax)); +outTransparency=outColor; +}`,Zde=`void node_ray_switch(vec3 camera,vec3 diffuseReflection,vec3 diffuseTransmission,vec3 shadow,vec3 specularReflection,vec3 specularTransmission,out vec3 outColor,out float outAlpha) +{ +#if LIGHT_PATH_IS_CAM_RAY +outColor=camera; +#else +outColor=diffuseReflection; +#endif +outAlpha=1.0; +}`,Jde=`void node_reciprocal(vec3 inputVec,out vec3 outColor) +{ +outColor=1.0/inputVec; +}`,efe=`void node_rgba_to_float(const int mode,vec3 inputValue,float inputA,out float outValue,out vec3 outTransparency) +{ +outTransparency=inputValue+vec3(inputA/4.0); +if (mode==0) +outValue=min(min(min(inputValue.r,inputValue.g),inputValue.b),inputA); +else if (mode==1) +outValue=max(max(max(inputValue.r,inputValue.g),inputValue.b),inputA); +else if (mode==2) +outValue=(inputValue.r+inputValue.g+inputValue.b+inputA)/4.0; +else if (mode==3) +outValue=inputValue.r+inputValue.g+inputValue.b+inputA; +else if (mode==4){ +outValue=dot(inputValue,LUM_WEIGHTS); +} +else if (mode==5) +outValue=inputValue.r; +else if (mode==6) +outValue=inputValue.g; +else if (mode==7) +outValue=inputValue.b; +}`,tfe=`void node_rgb_to_float(const int mode,vec3 inputValue,out float outValue) +{ +if (mode==0) +outValue=min(min(inputValue.r,inputValue.g),inputValue.b); +else if (mode==1) +outValue=max(max(inputValue.r,inputValue.g),inputValue.b); +else if (mode==2) +outValue=(inputValue.r+inputValue.g+inputValue.b)/3.0; +else if (mode==3) +outValue=inputValue.r+inputValue.g+inputValue.b; +else if (mode==4){ +outValue=dot(inputValue,LUM_WEIGHTS); +} +else if (mode==5) +outValue=inputValue.r; +else if (mode==6) +outValue=inputValue.g; +else if (mode==7) +outValue=inputValue.b; +}`,nfe=`void node_rgb_to_vector(const int mode,vec3 inputValue,out vec3 outValue) +{ + +outValue=inputValue; +}`,rfe=`#include +void node_shadow_matte(vec3 normal,vec3 shadowColor,float backlighting,float shadowOpacity,out vec4 outColor,out float outAlpha){ +float shadow=getShadowMask(); +outColor=vec4(shadowColor,shadowOpacity*(1.0-shadow)); +outAlpha=outColor.a; +}`,ofe=` +void node_shuffle(const int channelR,const int channelG,const int channelB,const int channelA,vec3 color,float alpha,bool negateR,bool negateG,bool negateB,bool negateA,out vec3 outColor,out float outAlpha) +{ +outColor=vec3(0.0); +vec4 choose=vec4(color,alpha); +outAlpha=1.0; +#if __VERSION__==100 +outColor.r=choose[0]; +outColor.g=choose[1]; +outColor.b=choose[2]; +outAlpha=choose[3]; +#else +outColor.r=choose[channelR]; +outColor.g=choose[channelG]; +outColor.b=choose[channelB]; +outAlpha=choose[channelA]; +#endif +if (negateR) +outColor.r=-outColor.r; +if (negateG) +outColor.g=-outColor.g; +if (negateB) +outColor.b=-outColor.b; +if (negateA) +outAlpha=-outAlpha; +} +void node_shuffle(const int channelR,const int channelG,const int channelB,const int channelA,vec4 color,float alpha,bool negateR,bool negateG,bool negateB,bool negateA,out vec4 outColor) +{ +outColor=vec4(0.0); +vec4 choose=vec4(color.rgb,alpha); +#if __VERSION__==100 +outColor.r=choose[0]; +outColor.g=choose[1]; +outColor.b=choose[2]; +outColor.a=choose[3]; +#else +outColor.r=choose[channelR]; +outColor.g=choose[channelG]; +outColor.b=choose[channelB]; +outColor.a=choose[channelA]; +#endif +if (negateR) +outColor.r=-outColor.r; +if (negateG) +outColor.g=-outColor.g; +if (negateB) +outColor.b=-outColor.b; +if (negateA) +outColor.a=-outColor.a; +}`,ife=`void node_sign(vec3 inputVec,out vec3 outColor) +{ +outColor=sign(inputVec); +}`,afe=`void node_skydome_light(vec3 color,float intensity,out vec4 outgoingLight) +{ +outgoingLight=vec4(color*intensity,1.0); +}`,sfe=`void node_sqrt(vec3 inputVec,out vec3 outColor) +{ +outColor=sqrt(inputVec); +}`,lfe=`void node_standard_surface(vec3 geometryNormal,const bool thinWalled,const float base,const vec3 baseColor,const float diffuseRoughness,const float metalness,const float specular,const vec3 specularColor,const float specularRoughness,const float trans,const vec3 transColor,const float transDepth,const vec3 transScatter,const float transExtraRoughness,const float subsurface,const vec3 subsurfaceColor,const vec3 subsurfaceRadius,const float clearcoat,const vec3 clearcoatColor,const float clearcoatRoughness,const float sheen,const vec3 sheenColor,const float sheenRoughness,const float emission,const vec3 emissionColor,const vec3 opacity,const vec3 normal,const vec3 clearcoatNormal,const float specularIOR,out vec4 outColor,out vec3 outTransparency) +{ +NodeMaterial material; +vec3 baseColorWeighted=base*baseColor.rgb; +material.diffuseColor=baseColorWeighted*(1.0-metalness)*(1.0-trans); +#ifdef USE_CLEARCOAT +material.clearcoat=saturate(clearcoat); +material.clearcoatRoughness=clamp(clearcoatRoughness,0.0,1.0); +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#endif +#ifdef USE_SHEEN +material.sheenColor=saturate(sheen*sheenColor); +material.sheenRoughness=clamp(sheenRoughness,0.0,1.0); +#endif +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z); +material.roughness=max(specularRoughness,0.0525); +material.roughness+=geometryRoughness; +material.roughness=min(material.roughness,1.0); +vec3 specularColorWeighted=specular*specularColor; +vec3 dielRefl=pow2((1.0-specularIOR)/(1.0+specularIOR))*specularColorWeighted; +material.specularColor=mix(dielRefl,baseColorWeighted,metalness); +material.fresnelRefl90=mix(specularColorWeighted,vec3(1.0),metalness); +material.specularF90=average(material.fresnelRefl90); +material.refractionColor=pow(trans*(1.0-metalness)*transColor.rgb,vec3(2.0)); +material.refractionIOR=specularIOR; +material.refractionRoughness=material.roughness; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 totalEmissiveRadiance=emission*emissionColor; +vec3 outSpecular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +vec3 outColor3=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +outSpecular+totalEmissiveRadiance; +#ifdef USE_SHEEN +float sheenEnergyComp=1.0-0.157*max3(material.sheenColor); +outColor3=outColor3*sheenEnergyComp+sheenSpecular; +#endif +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +float alpha=1.0; +if (thinWalled){ +alpha=average(opacity)*(1.0-saturate(trans)+maxFromRGB(outSpecular)*saturate(trans)); +} else { +outColor3+=refractedLight; +} +outColor=vec4(outColor3,saturate(alpha)); +outTransparency=outColor3; +} +void node_standard_surface(vec3 geometryNormal,const bool thinWalled,const float base,const vec3 baseColor,const float diffuseRoughness,const float metalness,const float specular,const vec3 specularColor,const float specularRoughness,const float trans,const vec3 transColor,const float transDepth,const vec3 transScatter,const float transExtraRoughness,const float subsurface,const vec3 subsurfaceColor,const vec3 subsurfaceRadius,const float clearcoat,const vec3 clearcoatColor,const float clearcoatRoughness,const float sheen,const vec3 sheenColor,const float sheenRoughness,const float emission,const vec3 emissionColor,const vec3 opacity,const vec3 normal,const vec3 clearcoatNormal,out vec4 outColor,out vec3 outTransparency) +{ +node_standard_surface(geometryNormal,thinWalled,base,baseColor,diffuseRoughness,metalness,specular,specularColor,specularRoughness,trans,transColor,transDepth,transScatter,transExtraRoughness,subsurface,subsurfaceColor,subsurfaceRadius,clearcoat,clearcoatColor,clearcoatRoughness,sheen,sheenColor,sheenRoughness,emission,emissionColor,opacity,normal,clearcoatNormal,1.5,outColor,outTransparency); +}`,cfe=`void node_subtract(vec3 input1,vec3 input2,out vec3 outColor) +{ +outColor=input1-input2; +}`,ufe=`void node_trigo(const int function,const int units,vec3 inputVec,float frequency,float phase,out vec3 outColor) +{ +if (units==1&&function>=0&&function <=2) +inputVec=radians(inputVec); +if (function==0) +outColor=cos(inputVec*frequency+phase); +else if (function==1) +outColor=sin(inputVec*frequency+phase); +else if (function==2) +outColor=tan(inputVec*frequency+phase); +else if (function==3) +outColor=acos(inputVec*frequency+phase); +else if (function==4) +outColor=asin(inputVec*frequency+phase); +else if (function==5) +outColor=atan(inputVec*frequency+phase); +else if (function==6) +outColor=cosh(inputVec*frequency+phase); +else if (function==7) +outColor=sinh(inputVec*frequency+phase); +else +outColor=tanh(inputVec*frequency+phase); +if (units==1&&function>=3&&function <=5) +outColor=degrees(outColor); +}`,dfe=` +void node_triplanar(const int coordSpace,const bool inputPerAxis,const bool flipOnOppositeDirection,const float blendFactor,vec4 inputColor,vec4 inputColorY,vec4 inputColorZ,vec3 scaling,vec3 rotation,vec3 offset,vec3 normal,out vec4 outColor) +{ +if (inputPerAxis==true){ +vec3 barycentric=abs(normal); +barycentric/=barycentric.x+barycentric.y+barycentric.z; +vec3 edgeShape=min(min(barycentric.yzx,barycentric.zxy),(blendFactor-1.0)/(blendFactor-3.0)); +vec3 edgeValue=(1.0-blendFactor)*(1.0-edgeShape)/2.0; +vec3 weight=max((barycentric-edgeValue)/(1.0-edgeValue),EPSILON); +weight/=(weight.x+weight.y+weight.z); +outColor=weight.x*inputColor+weight.y*inputColorY+weight.z*inputColorZ; +} else { +outColor=inputColor; +} +} +void node_triplanar(const int coordSpace,const bool inputPerAxis,const bool flipOnOppositeDirection,const float blendFactor,vec3 inputColor,vec3 inputColorY,vec3 inputColorZ,vec3 scaling,vec3 rotation,vec3 offset,vec3 normal,out vec3 outColor) +{ +if (inputPerAxis==true){ +vec3 barycentric=abs(normal); +barycentric/=barycentric.x+barycentric.y+barycentric.z; +vec3 edgeShape=min(min(barycentric.yzx,barycentric.zxy),(blendFactor-1.0)/(blendFactor-3.0)); +vec3 edgeValue=(1.0-blendFactor)*(1.0-edgeShape)/2.0; +vec3 weight=max((barycentric-edgeValue)/(1.0-edgeValue),EPSILON); +weight/=(weight.x+weight.y+weight.z); +outColor=weight.x*inputColor+weight.y*inputColorY+weight.z*inputColorZ; +} else { +outColor=inputColor; +} +}`,ffe=` +float screenSpaceDither12(vec2 vScreenPos){ +float vDither=dot(vec2(171.0,231.0),vScreenPos.xy); +return fract(vDither/103.0); +} +vec3 smoothContrast(vec3 alpha,float contrast){ +vec3 powAlpha=pow(alpha,vec3(contrast)); +return powAlpha/(powAlpha.x+powAlpha.y+powAlpha.z); +} +void node_triplanar_uv(const bool flipOnOppositeDirection,const float blendFactor,vec3 vector,vec3 normal,out vec2 outUV,out vec2 dUVdx,out vec2 dUVdy) +{ +vec3 norm=normal; +float fp=float(flipOnOppositeDirection); +vec2 xFac=mix(vec2(1.0),vec2(-sign(norm.x),1.0),fp); +vec2 uvX=vec2(vector.z,vector.y)*xFac+0.5; +vec2 yFac=mix(vec2(1.0),vec2(1.0,-sign(norm.y)),fp); +vec2 uvY=vec2(vector.x,vector.z)*yFac+0.5; +vec2 zFac=vec2(mix(1.0,sign(norm.z),fp),1.0); +vec2 uvZ=vec2(vector.x,vector.y)*zFac+0.5; +#ifdef texture2DGradEXT +vec3 alpha=abs(norm); +float contrast=mix(20.0,1.0,blendFactor); +alpha=smoothContrast(alpha,contrast); +float dither=screenSpaceDither12(gl_FragCoord.xy); +dither=clamp(dither,0.01,0.99); +vec3 duvwdx=dFdx(vector); +vec3 duvwdy=dFdy(vector); +if (alpha.x>dither){ +outUV=uvX; +dUVdx=duvwdx.yz*xFac; +dUVdy=duvwdy.yz*xFac; +} else if (1.-alpha.z>dither){ +outUV=uvY; +dUVdx=duvwdx.xz*yFac; +dUVdy=duvwdy.xz*yFac; +} else { +outUV=uvZ; +dUVdx=duvwdx.xy*zFac; +dUVdy=duvwdy.xy*zFac; +} +#else +vec3 absNorm=abs(norm); +vec3 faceMask=step(absNorm.yzx,absNorm)*step(absNorm.zxy,absNorm); +outUV=faceMask.x*uvX+faceMask.y*uvY+faceMask.z*uvZ; +#endif +} +void node_triplanar_uv(const bool flipOnOppositeDirection,const int projectionAxis,vec3 vector,vec3 normal,out vec2 outUV) +{ +vec3 norm=normal; +float fp=float(flipOnOppositeDirection); +if (projectionAxis==0){ +vec2 xFac=mix(vec2(1.0),vec2(-sign(norm.x),1.0),fp); +outUV=vec2(vector.z,vector.y)*xFac+0.5; +} else if (projectionAxis==1){ +vec2 yFac=mix(vec2(1.0),vec2(1.0,-sign(norm.y)),fp); +outUV=vec2(vector.x,vector.z)*yFac+0.5; +} else if (projectionAxis==2){ +vec2 zFac=vec2(mix(1.0,sign(norm.z),fp),1.0); +outUV=vec2(vector.x,vector.y)*zFac+0.5; +} else if (projectionAxis==3){ +vec2 xFac=mix(vec2(1.0),vec2(-sign(norm.x),1.0),fp); +vec2 uvX=vec2(vector.z,vector.y)*xFac+0.5; +vec2 yFac=mix(vec2(1.0),vec2(1.0,-sign(norm.y)),fp); +vec2 uvY=vec2(vector.x,vector.z)*yFac+0.5; +vec2 zFac=vec2(mix(1.0,sign(norm.z),fp),1.0); +vec2 uvZ=vec2(vector.x,vector.y)*zFac+0.5; +vec3 absNorm=abs(norm); +vec3 faceMask=step(absNorm.yzx,absNorm)*step(absNorm.zxy,absNorm); +outUV=faceMask.x*uvX+faceMask.y*uvY+faceMask.z*uvZ; +} +}`,hfe=`void node_two_sided(float frontFacing,vec3 front,vec3 back,out vec3 outColor) +{ +outColor=(frontFacing>0.0)?front:back; +}`,pfe=`void node_user_data_color(vec4 color,out vec3 outColor,out float outAlpha) +{ +outColor=color.rgb; +outAlpha=color.a; +}`,mfe=`#define TEX_PROJ_PLANAR 0 +#define TEX_PROJ_SPHERICAL 1 +#define TEX_PROJ_CYLINDRICAL 2 +#define TEX_PROJ_BALL 3 +#define TEX_PROJ_CUBIC 4 +#define TEX_PROJ_SHRINK_WRAP 5 +#define COORD_WORLD_SPACE 0 +#define COORD_OBJECT_SPACE 1 +void node_uv_projection(const int projectionType,const int coordSpace,vec3 projectionColor,float uAngleDegrees,float vAngleDegrees,mat4 matrix,out vec2 outUV) +{ +vec3 vector=vWorldPosition.xyz; +if (coordSpace==COORD_OBJECT_SPACE){ +vector=(invModelMatrix*vec4(vector,1.0)).xyz; +} +vector=(matrix*vec4(vector,1.0)).xyz; +if (projectionType==TEX_PROJ_PLANAR){ +outUV=vector.xy*0.5+0.5; +} else if (projectionType==TEX_PROJ_SPHERICAL){ +vector=normalize(vector); +float uAngle=radians(uAngleDegrees); +float vAngle=radians(vAngleDegrees); +float theta=atan(vector.x,vector.z)/(uAngle); +theta=theta*0.5+0.5; +float vAngleNormalized=vAngle*2.0/PI; +float phi=(acos(-vector.y)/PI-0.5)/vAngleNormalized+0.5; +outUV=vec2(theta,phi); +} else if (projectionType==TEX_PROJ_CYLINDRICAL){ +vector.xz=normalize(vector).xz; +float uAngle=radians(uAngleDegrees); +vec2 uv=vec2((atan(vector.x,vector.z))/(uAngle),(vector.y)/2.0); +outUV=uv+0.5; +} else if (projectionType==TEX_PROJ_BALL){ +vec3 normal=normalize(vector); +normal.z+=1.0; +normal/=(2.0*sqrt(max(0.5*normal.z,0.0))); +outUV=clamp(0.5*normal.xy+0.5,0.0,1.0); +} else if (projectionType==TEX_PROJ_CUBIC){ +vec2 uvX=vec2(vector.z,vector.y)/abs(vector.x); +vec2 uvY=vec2(vector.x,vector.z)/abs(vector.y); +vec2 uvZ=vec2(vector.x,vector.y)/abs(vector.z); +vec3 absVec=abs(vector); +vec3 faceMask=step(absVec.yzx,absVec)*step(absVec.zxy,absVec); +vec2 uv=faceMask.x*uvX+faceMask.y*uvY+faceMask.z*uvZ; +uv=uv*0.5+0.5; +outUV=uv; +} else if (projectionType==TEX_PROJ_SHRINK_WRAP){ +vector=normalize(vector); +outUV=normalize(vector.xz)*acos(vector.y)/PI; +outUV=outUV*0.5+0.5; +} +}`,gfe=`void node_vector_to_rgb(const int mode,vec3 inputValue,out vec3 outColor) +{ +if (mode==0) +outColor=inputValue; +else if (mode==1) +outColor=normalize(inputValue); +else if (mode==2) +outColor=inputValue; +}`,_fe=`void node_add_shader(vec4 color1,vec4 color2,out vec4 outColor){ +outColor.rgb=color1.rgb+color2.rgb; +outColor.a=clamp(color1.a+color2.a,0.0,1.0); +}`,vfe=`void node_ambient_occlusion(vec4 color,float distance,vec3 normal,out vec4 outColor,out float outAO){ +outColor=color; +outAO=1.0; +}`,Afe=`void node_attribute(vec4 paramAttr,out vec4 outColor,out vec3 outVector,out float outFac,out float outAlpha){ +outColor=vec4(paramAttr.xyz,1.0); +outVector=paramAttr.xyz; +outFac=average(paramAttr.xyz); +outAlpha=paramAttr.w; +}`,yfe=`void node_background(vec4 color,float strength,out vec4 outColor) +{ +outColor=strength*color; +}`,bfe=`void node_bevel(float radius,vec3 normal,out vec3 outNormal){ +outNormal=normal; +}`,xfe=`void node_blackbody(float temp,out vec4 outColor) +{ +outColor=vec4(colorTempToRGB(temp),1.0); +}`,Efe=`void node_brightcontrast(vec4 color,float bright,float contrast,out vec4 outColor) +{ +float bminc=bright-contrast*0.5; +outColor.r=max((1.0+contrast)*color.r+bminc,0.0); +outColor.g=max((1.0+contrast)*color.g+bminc,0.0); +outColor.b=max((1.0+contrast)*color.b+bminc,0.0); +outColor.a=color.a; +}`,Cfe=`void node_bsdf_anisotropic(vec4 color,float roughness,float anisotropy,float rotation,vec3 normal,vec3 tangent,out vec4 outColor) +{ +outColor=color; +}`,Sfe=` +void node_bsdf_diffuse(vec4 color,float roughness,vec3 normal,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.diffuseColor=color.rgb; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +#endif +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse,1.0); +}`,wfe=`void node_bsdf_glass(vec3 geometryNormal,vec4 color,float roughness,float ior,vec3 normal,out vec4 outColor){ +normal=normalize(normal); +normal=swizzleUpY(normal); +vec3 normalWorld=normal; +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.specularColor=vec3(1.0); +material.fresnelRefl90=vec3(1.0); +material.roughness=clamp(roughness,0.0,1.0); +material.refractionColor=vec3(1.0); +material.refractionIOR=ior; +material.refractionRoughness=pow2(roughness); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +material.refractionRoughness=calcCubeUVAdjustedRoughness(material.refractionRoughness,geomRoughness); +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Empty +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +#ifdef USE_GTAO +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 viewWorld; +if (isOrthographic) +viewWorld=(invViewMatrix*vec4(0.0,0.0,-1.0,0.0)).xyz; +else +viewWorld=(invViewMatrix*vec4(-vViewPosition,0.0)).xyz; +viewWorld=normalize(viewWorld); +float fresnel=fresnelReflection(viewWorld,normalWorld,ior); +outColor=vec4(color.rgb*mix(refractedLight,reflectedLight.directSpecular ++ reflectedLight.indirectSpecular,fresnel),1.0); +}`,Mfe=`void node_bsdf_glossy(vec3 geometryNormal,vec4 color,float roughness,float anisotropy,float rotation,vec3 normal,vec3 tangent,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +normal=normalize((viewMatrix*vec4(normal.xyz,0.0)).xyz); +NodeMaterial material; +material.specularColor=vec3(1.0); +material.fresnelRefl90=vec3(1.0); +material.roughness=clamp(roughness,0.0,1.0); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Empty +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +#ifdef USE_GTAO +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +outColor=vec4(color.rgb*(reflectedLight.directSpecular ++ reflectedLight.indirectSpecular),1.0); +} +void node_bsdf_glossy(vec3 geometryNormal,vec4 color,float roughness,vec3 normal,out vec4 outColor){ +node_bsdf_glossy(geometryNormal,color,roughness,0.0,0.0,normal,vec3(0.0),outColor); +}`,Tfe=`void node_bsdf_hair(vec4 color,float offset,float roughnessU,float roughnessV,vec3 tangent,out vec4 outColor) +{ +outColor=color; +}`,Ife=`#define BSDF_METALLIC_BECKMANN 0 +#define BSDF_METALLIC_GGX 1 +#define BSDF_METALLIC_MULTI_GGX 2 +vec3 fresnelConductor(float cosi,vec3 eta,vec3 k){ +vec3 cosiSqr=vec3(cosi*cosi); +vec3 tmpF=(eta*eta)+(k*k); +vec3 tmp2EtaCosI=2.0*eta*vec3(cosi); +vec3 tmp=tmpF*cosiSqr; +vec3 rparl2=(tmp-tmp2EtaCosI+vec3(1.0))/(tmp+tmp2EtaCosI+vec3(1.0)); +vec3 rperp2=(tmpF-tmp2EtaCosI+cosiSqr)/(tmpF+tmp2EtaCosI+cosiSqr); +return (rparl2+rperp2)*0.5; +} +void node_bsdf_metallic(vec3 geometryNormal,const int distribution,const bool usePhysicalConductor,vec4 baseColor,vec4 edgeTint,vec3 ior,vec3 extinction,float roughness,float anisotropy,float rotation,vec3 normal,vec3 tangent,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +normal=normalize((viewMatrix*vec4(normal.xyz,0.0)).xyz); +NodeMaterial material; +if (usePhysicalConductor){ +material.specularColor=saturate(fresnelConductor(1.0,ior,extinction)); +material.fresnelRefl90=saturate(fresnelConductor(1.0/7.0,ior,extinction)); +} else { +material.specularColor=saturate(baseColor.rgb); +material.fresnelRefl90=saturate(edgeTint.rgb); +} +material.specularF90=average(material.fresnelRefl90); +material.roughness=saturate(roughness); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Empty +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +#ifdef USE_GTAO +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+reflectedLight.directSpecular+reflectedLight.indirectSpecular,1.0); +}`,Rfe=` +vec3 tintFromColor(vec3 color){ +float lum=dot(color,vec3(0.3,0.6,0.1)); +return lum>0.0?color/lum:vec3(1.0); +} +vec3 fresnelBlend(float ior,float fresnel,vec3 fresnelColor){ +float fresnelFac=fresnelReflection(vec3(1.0,0.0,0.0),vec3(1.0,0.0,0.0),ior); +float mixFac=saturate((fresnel-fresnelFac)/max(1e-8,1.0-fresnelFac)); +return mix(fresnelColor,vec3(1.0),mixFac); +} +float iorToF0(float eta){ +float A=(eta-1.0)/(eta+1.0); +return A*A; +} +#ifdef USE_SHEEN_BLENDER +float principledSheen(float NV,float rough){ +float den=35.6694*rough*rough-24.4269*rough*NV-0.1405*NV*NV+6.1211*rough+0.28105*NV-0.1405; +float num=58.5299*rough*rough-85.0941*rough*NV+9.8955*NV*NV+1.9250*rough+74.2268*NV-0.2246; +return saturate(den/num); +} +#elif defined(USE_SHEEN_BLENDER_OLD) +float principledSheen(float NV){ +float f=1.0-NV; +float sheen=f*f*f*0.077+f*0.01+0.00026; +return sheen; +} +#endif +void node_bsdf_principled(vec3 geometryNormal,vec4 baseColor,float metallic,float roughness,float ior,float alpha,vec3 normal,float diffuseRoughness,float subsurface,vec3 subsurfaceRadius,float subsurfaceScale,float subsurfaceIOR,float subsurfaceAnisotropy,float specularIORLevel,vec4 specularTint,float anisotropic,float anisotropicRotation,vec3 tangent,float transmission,float clearcoat,float clearcoatRoughness,float clearcoatIOR,vec4 clearcoatTint,vec3 clearcoatNormal,float sheen,float sheenRoughness,vec4 sheenTint,vec4 emission,float emissionStrength,float thinFilmThickness,float thinFilmIOR,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +vec3 normalWorld=normal; +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +metallic=clamp(metallic,0.0,1.0); +float dielectric=1.0-metallic; +transmission*=dielectric; +material.diffuseColor=baseColor.rgb*dielectric; +#ifdef USE_CLEARCOAT +material.clearcoat=saturate(clearcoat); +material.clearcoatRoughness=clamp(clearcoatRoughness,0.0,1.0); +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#endif +#ifdef USE_SHEEN_BLENDER +float dotNVsh=dot(normal,(isOrthographic)?vec3(0,0,1):normalize(vViewPosition)); +material.diffuseColor+=sheen*sheenTint.rgb*principledSheen(dotNVsh,sheenRoughness); +#endif +material.roughness=clamp(roughness,0.0,1.0); +vec3 viewWorld; +if (isOrthographic) +viewWorld=(invViewMatrix*vec4(0.0,0.0,-1.0,0.0)).xyz; +else +viewWorld=(invViewMatrix*vec4(-vViewPosition,0.0)).xyz; +viewWorld=normalize(viewWorld); +float f0d=iorToF0(ior); +if (specularIORLevel != 0.5) +f0d*=2.0*specularIORLevel; +vec3 F0d=vec3(f0d)*specularTint.rgb; +F0d=clamp(F0d,vec3(0.0),vec3(1.0)); +vec3 F90d=vec3(1.0); +material.specularColor=mix(F0d,baseColor.rgb,metallic); +material.fresnelRefl90=mix(F90d,specularTint.rgb,metallic); +material.specularF90=average(material.fresnelRefl90); +material.refractionColor=baseColor.rgb; +material.refractionIOR=ior; +material.refractionRoughness=pow2(roughness); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +material.refractionRoughness=calcCubeUVAdjustedRoughness(material.refractionRoughness,geomRoughness); +#ifdef USE_CLEARCOAT +material.clearcoatRoughness=calcCubeUVAdjustedRoughness(material.clearcoatRoughness,geomRoughness); +clearcoatNormal=normalize(vec3(clearcoatNormal[0],clearcoatNormal[2],-clearcoatNormal[1])); +clearcoatNormal=(viewMatrix*vec4(clearcoatNormal.xyz,0.0)).xyz; +#endif +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#ifdef USE_CLEARCOAT +clearcoatSpecular+=clearcoatRadiance*BRDF_Specular_GGX_Environment(geometry.viewDir,geometry.clearcoatNormal,material.clearcoatF0,vec3(material.clearcoatF90),material.clearcoatRoughness); +#endif +irradiance+=iblIrradiance; +vec3 specEnv=BRDF_Specular_GGX_Environment(geometry.viewDir,geometry.normal,material.specularColor,material.fresnelRefl90,material.roughness); +reflectedLight.indirectSpecular+=radiance*specEnv; +float weight=1.0; +weight*=max((1.0-max3(specEnv)),0.0); +material.diffuseColor*=weight; +RE_IndirectDiffuse(irradiance,geometry,material,reflectedLight); +RE_Refraction(refraction,material,refractedLight); +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +float fresnel=fresnelReflection(viewWorld,normalWorld,ior); +vec3 outColor3=(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse)*(1.0-transmission) ++ reflectedLight.directSpecular+reflectedLight.indirectSpecular ++ refractedLight*transmission*(1.0-fresnel) ++ emission.rgb*emissionStrength; +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +outColor=vec4(outColor3,alpha); +} +void node_bsdf_principled(vec3 geometryNormal,vec4 baseColor,float metallic,float roughness,float ior,float alpha,vec3 normal,float subsurface,vec3 subsurfaceRadius,float subsurfaceScale,float subsurfaceIOR,float subsurfaceAnisotropy,float specularIORLevel,vec4 specularTint,float anisotropic,float anisotropicRotation,vec3 tangent,float transmission,float clearcoat,float clearcoatRoughness,float clearcoatIOR,vec4 clearcoatTint,vec3 clearcoatNormal,float sheen,float sheenRoughness,vec4 sheenTint,vec4 emission,float emissionStrength,float thinFilmThickness,float thinFilmIOR,out vec4 outColor){ +node_bsdf_principled(geometryNormal,baseColor,metallic,roughness,ior,alpha,normal,0.0,subsurface,subsurfaceRadius,subsurfaceScale,subsurfaceIOR,subsurfaceAnisotropy,specularIORLevel,specularTint,anisotropic,anisotropicRotation,tangent,transmission,clearcoat,clearcoatRoughness,clearcoatIOR,clearcoatTint,clearcoatNormal,sheen,sheenRoughness,sheenTint,emission,emissionStrength,0.0,0.0,outColor); +} +void node_bsdf_principled(vec3 geometryNormal,vec4 baseColor,float metallic,float roughness,float ior,float alpha,vec3 normal,float subsurface,vec3 subsurfaceRadius,float subsurfaceScale,float subsurfaceIOR,float subsurfaceAnisotropy,float specularIORLevel,vec4 specularTint,float anisotropic,float anisotropicRotation,vec3 tangent,float transmission,float clearcoat,float clearcoatRoughness,float clearcoatIOR,vec4 clearcoatTint,vec3 clearcoatNormal,float sheen,float sheenRoughness,vec4 sheenTint,vec4 emission,float emissionStrength,out vec4 outColor){ +node_bsdf_principled(geometryNormal,baseColor,metallic,roughness,ior,alpha,normal,subsurface,subsurfaceRadius,subsurfaceScale,subsurfaceIOR,subsurfaceAnisotropy,specularIORLevel,specularTint,anisotropic,anisotropicRotation,tangent,transmission,clearcoat,clearcoatRoughness,clearcoatIOR,clearcoatTint,clearcoatNormal,sheen,sheenRoughness,sheenTint,emission,emissionStrength,0.0,0.0,outColor); +} +void node_bsdf_principled(vec3 geometryNormal,vec4 baseColor,float subsurface,vec3 subsurfaceRadius,vec4 subsurfaceColor,float subsurfaceIOR,float subsurfaceAnisotropy,float metallic,float specular,float specularTint,float roughness,float anisotropic,float anisotropicRotation,float sheen,float sheenTint,float clearcoat,float clearcoatRoughness,float ior,float transmission,float transmissionRoughness,vec4 emission,float emissionStrength,float alpha,vec3 normal,vec3 clearcoatNormal,vec3 tangent,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +vec3 normalWorld=normal; +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +metallic=clamp(metallic,0.0,1.0); +float dielectric=1.0-metallic; +transmission*=dielectric; +material.diffuseColor=baseColor.rgb*dielectric; +#ifndef USE_CLEARCOAT +float dielReflCoeff=0.08; +#else +float dielReflCoeff=0.16; +material.clearcoat=saturate(clearcoat); +material.clearcoatRoughness=clamp(clearcoatRoughness,0.0,1.0); +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#endif +#if defined(USE_SHEEN_BLENDER_OLD) +float dotNVsh=dot(normal,(isOrthographic)?vec3(0,0,1):normalize(vViewPosition)); +vec3 sheenColor=mix(vec3(1.0),tintFromColor(baseColor.rgb),sheenTint); +material.diffuseColor+=sheen*sheenColor*principledSheen(dotNVsh); +#endif +vec3 dielRefl=dielReflCoeff*specular +* mix(vec3(1.0),tintFromColor(baseColor.rgb),specularTint); +material.specularColor=mix(dielRefl,baseColor.rgb,metallic); +material.roughness=clamp(roughness,0.0,1.0); +vec3 viewWorld; +if (isOrthographic) +viewWorld=(invViewMatrix*vec4(0.0,0.0,-1.0,0.0)).xyz; +else +viewWorld=(invViewMatrix*vec4(-vViewPosition,0.0)).xyz; +viewWorld=normalize(viewWorld); +float fresnel=fresnelReflection(viewWorld,normalWorld,ior); +vec3 fresnelColor=mix(vec3(1.0),baseColor.rgb,specularTint); +material.specularColor=mix(material.specularColor,fresnelBlend(ior,fresnel,fresnelColor)*fresnel,transmission); +float isStrictDielectric=step(0.0,-length(vec4(subsurface,clearcoat,transmission,float(metallic==1.0)))); +material.fresnelRefl90=mix(vec3(1.0),material.specularColor,(1.0-specular)*metallic*(1.0-isStrictDielectric)); +material.specularF90=average(material.fresnelRefl90); +material.refractionColor=baseColor.rgb; +material.refractionIOR=ior; +material.refractionRoughness=pow2(roughness); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +material.refractionRoughness=calcCubeUVAdjustedRoughness(material.refractionRoughness,geomRoughness); +#ifdef USE_CLEARCOAT +material.clearcoatRoughness=calcCubeUVAdjustedRoughness(material.clearcoatRoughness,geomRoughness); +clearcoatNormal=normalize(vec3(clearcoatNormal[0],clearcoatNormal[2],-clearcoatNormal[1])); +clearcoatNormal=(viewMatrix*vec4(clearcoatNormal.xyz,0.0)).xyz; +#endif +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 outColor3=(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse)*(1.0-transmission) ++ reflectedLight.directSpecular+reflectedLight.indirectSpecular ++ refractedLight*transmission*(1.0-fresnel) ++ emission.rgb*emissionStrength; +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +outColor=vec4(outColor3,alpha); +}`,Lfe=`#define BSDF_REFRACTION_GGX 0 +#define BSDF_REFRACTION_BECKMANN 1 +#define BSDF_REFRACTION_SHARP 2 +void node_bsdf_refraction(vec3 geometryNormal,const int distribution,vec4 color,float roughness,float ior,vec3 normal,out vec4 outColor){ +normal=swizzleUpY(normal); +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.refractionColor=color.rgb; +material.refractionIOR=ior; +if (distribution==BSDF_REFRACTION_SHARP){ +material.refractionRoughness=0.0; +} else { +material.refractionRoughness=pow2(roughness); +} +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.refractionRoughness=calcCubeUVAdjustedRoughness(material.refractionRoughness,geomRoughness); +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Refraction +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +outColor=vec4(refractedLight,1.0); +}`,Pfe=` +void node_bsdf_sheen(vec4 color,float roughness,vec3 normal,out vec4 outColor) +{ +normal=vec3(normal[0],normal[2],-normal[1]); +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.diffuseColor=color.rgb; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse,1.0); +}`,Dfe=`void node_bsdf_toon(vec4 color,float size,float smoothFac,vec3 normal,out vec4 outColor) +{ +outColor=color; +}`,Bfe=`void node_bsdf_translucent(vec4 color,vec3 normal,out vec4 outColor){ +normal=-vec3(normal[0],normal[2],-normal[1]); +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.diffuseColor=color.rgb; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse,1.0); +}`,Nfe=`void node_bsdf_transparent(vec4 color,out vec4 outColor) +{ +float alpha=saturate(1.0-dot(color.rgb,vec3(0.333333))); +outColor=vec4(0.0,0.0,0.0,alpha); +}`,Ofe=` +void node_bsdf_velvet(vec4 color,float sigma,vec3 normal,out vec4 outColor) +{ +outColor=color; +}`,kfe=`void node_bump(const bool invert,float strength,float bumpDist,float filterWidth,float height,vec3 normal,out vec3 outNormal){ +vec3 position=swizzleUpZ(vWorldPosition); +if (invert) +bumpDist*=-1.0; +vec3 dPdx=dFdx(position); +vec3 dPdy=dFdy(position); +float dHdx=dFdx(height); +float dHdy=dFdy(height); +vec3 tanX=cross(dPdy,normal); +vec3 tanY=cross(normal,dPdx); +vec3 surfaceGrad=dHdx*tanX+dHdy*tanY; +float dotPosTanX=dot(dPdx,tanX); +outNormal=normalize(normal*abs(dotPosTanX)-surfaceGrad*bumpDist*sign(dotPosTanX)); +outNormal=normalize(mix(normal,outNormal,max(0.0,strength))); +} +void node_bump(const bool invert,float strength,float bumpDist,float height,vec3 normal,out vec3 outNormal){ +node_bump(invert,strength,bumpDist,1.0,height,normal,outNormal); +} +void node_bump(const bool invert,float strength,float bumpDist,float height,float height_dx,float height_dy,vec3 normal,out vec3 outNormal){ +node_bump(invert,strength,bumpDist,1.0,height,normal,outNormal); +}`,Ffe=`void node_camera(vec3 viewPos,const bool invCamZ,out vec3 outViewVector,out float outViewZDepth,out float outViewDistance) +{ +viewPos=-viewPos; +if (invCamZ) +viewPos.z=-viewPos.z; +outViewVector=normalize(viewPos); +outViewZDepth=abs(viewPos.z); +outViewDistance=length(viewPos); +}`,Vfe=`void node_clamp(bool clampRange,float value,float minVal,float maxVal,out float result){ +if (clampRange) +result=(maxVal>minVal)?clamp(value,minVal,maxVal):clamp(value,maxVal,minVal); +else +result=min(max(value,minVal),maxVal); +}`,Ufe=` +void node_combhsv(float h,float s,float v,out vec4 col) +{ +hsvToRGB(vec4(h,s,v,1.0),col); +}`,zfe=`#define NODE_COMB_COL_RGB 0 +#define NODE_COMB_COL_HSV 1 +#define NODE_COMB_COL_HSL 2 +void hslToRGB(vec3 hsl,out vec3 outCol) +{ +float nr,ng,nb,chroma; +float h,s,l; +h=hsl[0]; +s=hsl[1]; +l=hsl[2]; +nr=abs(h*6.0-3.0)-1.0; +ng=2.0-abs(h*6.0-2.0); +nb=2.0-abs(h*6.0-4.0); +nr=clamp(nr,0.0,1.0); +nb=clamp(nb,0.0,1.0); +ng=clamp(ng,0.0,1.0); +chroma=(1.0-abs(2.0*l-1.0))*s; +outCol=vec3((nr-0.5)*chroma+l,(ng-0.5)*chroma+l,(nb-0.5)*chroma+l); +} +void node_combine_color(int mode,float r,float g,float b,out vec4 col) +{ +if (mode==NODE_COMB_COL_RGB){ +col=vec4(r,g,b,1.0); +} else if (mode==NODE_COMB_COL_HSV){ +hsvToRGB(vec4(r,g,b,1.0),col); +} else { +vec3 col3; +hslToRGB(vec3(r,g,b),col3); +col=vec4(col3,1.0); +} +}`,Gfe=` +void node_combrgb(float r,float g,float b,out vec4 col) +{ +col=vec4(r,g,b,1.0); +}`,Hfe=`void node_combxyz(float x,float y,float z,out vec3 outVector) +{ +outVector=vec3(x,y,z); +}`,Wfe=`void node_curve_float(sampler2D curveData,float fac,float value,out float outValue) +{ +outValue=texture2D(curveData,vec2((value+1.0)*0.5,0.0)).x; +outValue=mix(value,outValue*2.0-1.0,fac); +}`,jfe=`void node_curve_rgb(sampler2D curveData,float fac,vec4 col,out vec4 outCol) +{ +outCol.r=texture2D(curveData,vec2(texture2D(curveData,vec2(col.r,0.0)).a,0.0)).r; +outCol.g=texture2D(curveData,vec2(texture2D(curveData,vec2(col.g,0.0)).a,0.0)).g; +outCol.b=texture2D(curveData,vec2(texture2D(curveData,vec2(col.b,0.0)).a,0.0)).b; +outCol=mix(col,outCol,fac); +outCol.a=col.a; +}`,Qfe=`void node_curve_vec(sampler2D curveData,float fac,vec3 vec,out vec3 outVec) +{ +outVec.x=texture2D(curveData,vec2((vec.x+1.0)*0.5,0.0)).x; +outVec.y=texture2D(curveData,vec2((vec.y+1.0)*0.5,0.0)).y; +outVec.z=texture2D(curveData,vec2((vec.z+1.0)*0.5,0.0)).z; +outVec=mix(vec,outVec*2.0-vec3(1.0),fac); +}`,$fe=`void node_diffuse_bsdf(vec4 color,float roughness,vec3 normal,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.diffuseColor=color.rgb; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +#endif +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse,1.0); +}`,Yfe=`void node_displacement(float height,float midlevel,float scale,vec3 normal,out vec3 outDisplacement){ +outDisplacement=vec3(0.0); +}`,Xfe=`void node_eevee_specular(vec3 geometryNormal,vec4 baseColor,vec4 specular,float roughness,vec4 emissiveColor,float transparency,vec3 normal,float clearcoat,float clearcoatRoughness,vec3 clearcoatNormal,float ambientOcclusion,out vec4 outColor){ +normal=vec3(normal[0],normal[2],-normal[1]); +vec3 normalWorld=normal; +normal=(viewMatrix*vec4(normal.xyz,0.0)).xyz; +NodeMaterial material; +material.diffuseColor=baseColor.rgb; +material.specularColor=specular.rgb; +material.roughness=clamp(roughness,0.0,1.0); +#ifdef USE_CLEARCOAT +material.clearcoat=saturate(clearcoat); +material.clearcoatRoughness=clamp(clearcoatRoughness,0.0,1.0); +#endif +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +#ifdef USE_CLEARCOAT +material.clearcoatRoughness=calcCubeUVAdjustedRoughness(material.clearcoatRoughness,geomRoughness); +clearcoatNormal=normalize(vec3(clearcoatNormal[0],clearcoatNormal[2],-clearcoatNormal[1])); +clearcoatNormal=(viewMatrix*vec4(clearcoatNormal.xyz,0.0)).xyz; +#endif +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 outColor3=(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse ++ reflectedLight.directSpecular+reflectedLight.indirectSpecular)*ambientOcclusion ++ emissiveColor.rgb; +outColor=vec4(outColor3,1.0-transparency); +}`,qfe=`void node_emission(vec4 color,float strength,out vec4 outColor) +{ +outColor=vec4(strength*color.rgb,1.0); +}`,Kfe=`void node_fresnel(vec3 viewPos,float IOR,vec3 normal,out float fac) +{ +vec3 worldDir; +if (isOrthographic) +worldDir=(invViewMatrix*vec4(0.0,0.0,-1.0,0.0)).xyz; +else +worldDir=(invViewMatrix*vec4(-viewPos,0.0)).xyz; +worldDir=normalize(swizzleUpZ(worldDir)); +float eta=max(IOR,0.00001); +fac=fresnelReflection(worldDir,normal,(gl_FrontFacing)?eta:1.0/eta); +}`,Zfe=`void node_gamma(vec4 col,float gamma,out vec4 outCol) +{ +outCol=col; +if (col.r>0.0) +outCol.r=powCompat(col.r,gamma); +if (col.g>0.0) +outCol.g=powCompat(col.g,gamma); +if (col.b>0.0) +outCol.b=powCompat(col.b,gamma); +}`,Jfe=` +void node_hair_info(out float isStrand,out float intercept,out float len,out float thickness,out vec3 tangentNormal,out float random){ +isStrand=0.0; +intercept=0.0; +len=0.0; +thickness=0.0; +tangentNormal=vec3(0.0); +random=1.0; +} +void node_hair_info(out float isStrand,out float intercept,out float thickness,out vec3 tangentNormal,out float random){ +float len; +node_hair_info(isStrand,intercept,len,thickness,tangentNormal,random); +}`,ehe=`void node_holdout(out vec4 outColor) +{ +outColor=vec4(0.0); +}`,the=`void node_hue_sat(float hue,float sat,float value,float fac,vec4 col,out vec4 outCol) +{ +vec4 hsv; +rgbToHSV(col,hsv); +hsv[0]+=(fract(hue)-0.5); +if (hsv[0]>1.0)hsv[0]-=1.0;else if (hsv[0]<0.0)hsv[0]+=1.0; +hsv[1]*=sat; +if (hsv[1]>1.0)hsv[1]=1.0;else if (hsv[1]<0.0)hsv[1]=0.0; +hsv[2]*=value; +hsvToRGB(hsv,outCol); +outCol=mix(col,outCol,fac); +}`,nhe=`void node_invert(float fac,vec4 col,out vec4 outCol) +{ +outCol.xyz=mix(col.xyz,vec3(1.0,1.0,1.0)-col.xyz,fac); +outCol.w=col.w; +}`,rhe=`void node_layer_weight(vec3 viewPos,float blend,vec3 normal,out float fresnel,out float facing) +{ +vec3 worldDir; +if (isOrthographic) +worldDir=(invViewMatrix*vec4(0.0,0.0,-1.0,0.0)).xyz; +else +worldDir=(invViewMatrix*vec4(-viewPos,0.0)).xyz; +worldDir=normalize(swizzleUpZ(worldDir)); +float eta=max(1.0-blend,EPSILON); +fresnel=fresnelReflection(worldDir,normal,(gl_FrontFacing)?1.0/eta:eta); +facing=abs(dot(worldDir,normal)); +if (blend != 0.5){ +blend=clamp(blend,0.0,1.0-EPSILON); +blend=(blend<0.5)?blend*2.0:0.5/(1.0-blend); +facing=pow(facing,blend); +} +facing=1.0-facing; +}`,ohe=`void node_light_falloff(float strength,float inSmooth,out float quadratic,out float linear,out float constant) +{ +quadratic=1.0; +linear=1.0; +constant=1.0; +}`,ihe=`void node_light_path(out float isCameraRay,out float isShadowRay,out float isDiffuseRay,out float isGlossyRay,out float isSingularRay,out float isReflectionRay,out float isTransmissionRay,out float isVolumeScatterRay,out float rayLength,out float rayDepth,out float diffuseDepth,out float glossyDepth,out float transparentDepth,out float transmissionDepth) +{ +#if LIGHT_PATH_IS_CAM_RAY +isCameraRay=1.0; +#else +isCameraRay=0.0; +#endif +isShadowRay=0.0; +isDiffuseRay=0.0; +isGlossyRay=0.0; +isSingularRay=0.0; +isReflectionRay=0.0; +isTransmissionRay=0.0; +isVolumeScatterRay=0.0; +rayLength=1.0; +rayDepth=1.0; +diffuseDepth=1.0; +glossyDepth=1.0; +transparentDepth=1.0; +transmissionDepth=1.0; +} +void node_light_path(out float isCameraRay,out float isShadowRay,out float isDiffuseRay,out float isGlossyRay,out float isSingularRay,out float isReflectionRay,out float isTransmissionRay,out float rayLength,out float rayDepth,out float diffuseDepth,out float glossyDepth,out float transparentDepth,out float transmissionDepth) +{ +#if LIGHT_PATH_IS_CAM_RAY +isCameraRay=1.0; +#else +isCameraRay=0.0; +#endif +isShadowRay=0.0; +isDiffuseRay=0.0; +isGlossyRay=0.0; +isSingularRay=0.0; +isReflectionRay=0.0; +isTransmissionRay=0.0; +rayLength=1.0; +rayDepth=1.0; +diffuseDepth=1.0; +glossyDepth=1.0; +transparentDepth=1.0; +transmissionDepth=1.0; +}`,ahe=`#define NODE_MAPPING_POINT 1 +#define NODE_MAPPING_TEXTURE 2 +#define NODE_MAPPING_VECTOR 3 +#define NODE_MAPPING_NORMAL 4 +mat3 rotationMatrix(float angleX,float angleY,float angleZ){ +float cx=cos(angleX); +float sx=sin(angleX); +float cy=cos(angleY); +float sy=sin(angleY); +float cz=cos(angleZ); +float sz=sin(angleZ); +mat3 mat; +mat[0][0]=cy*cz; +mat[0][1]=cy*sz; +mat[0][2]=-sy; +mat[1][0]=sy*sx*cz-cx*sz; +mat[1][1]=sy*sx*sz+cx*cz; +mat[1][2]=cy*sx; +mat[2][0]=sy*cx*cz+sx*sz; +mat[2][1]=sy*cx*sz-sx*cz; +mat[2][2]=cy*cx; +return mat; +} +mat3 mat3GetInverseTransposed(mat3 mat){ +float det=mat3GetDeterminant(mat); +float a00=(mat[1][1]*mat[2][2]-mat[1][2]*mat[2][1])/det; +float a01=- (mat[1][0]*mat[2][2]-mat[1][2]*mat[2][0])/det; +float a02=(mat[1][0]*mat[2][1]-mat[1][1]*mat[2][0])/det; +float a10=- (mat[0][1]*mat[2][2]-mat[0][2]*mat[2][1])/det; +float a11=(mat[0][0]*mat[2][2]-mat[0][2]*mat[2][0])/det; +float a12=- (mat[0][0]*mat[2][1]-mat[0][1]*mat[2][0])/det; +float a20=(mat[0][1]*mat[1][2]-mat[0][2]*mat[1][1])/det; +float a21=- (mat[0][0]*mat[1][2]-mat[0][2]*mat[1][0])/det; +float a22=(mat[0][0]*mat[1][1]-mat[0][1]*mat[1][0])/det; +return mat3(a00,a01,a02,a10,a11,a12,a20,a21,a22 +); +} +void node_mapping(int type,vec3 vec,vec3 loc,vec3 rot,vec3 scale,out vec3 outVec) +{ +if (type==NODE_MAPPING_POINT) +outVec=rotationMatrix(rot.x,rot.y,rot.z)*(vec*scale)+loc; +else if (type==NODE_MAPPING_TEXTURE) +outVec=transposeMat3(rotationMatrix(rot.x,rot.y,rot.z))*(vec-loc)/scale; +else if (type==NODE_MAPPING_VECTOR) +outVec=rotationMatrix(rot.x,rot.y,rot.z)*(vec*scale); +else { +mat3 rot=rotationMatrix(rot.x,rot.y,rot.z)*mat3(scale[0],0.0,0.0,0.0,scale[1],0.0,0.0,0.0,scale[2] +); +outVec=normalize(mat3GetInverseTransposed(rot)*vec); +} +}`,she=`#define NODE_MAP_RANGE_INTERP_LINEAR 0 +#define NODE_MAP_RANGE_INTERP_STEPPED 1 +#define NODE_MAP_RANGE_INTERP_SMOOTHSTEP 2 +#define NODE_MAP_RANGE_INTERP_SMOOTHERSTEP 3 +#define NODE_MAP_RANGE_TYPE_FLOAT 0 +#define NODE_MAP_RANGE_TYPE_FLOAT_VECTOR 1 +float smootherstep(float edge0,float edge1,float x){ +float t=clamp((x-edge0)/(edge1-edge0),0.0,1.0); +return t*t*t*(t*(t*6.0-15.0)+10.0); +} +vec3 smootherstep(vec3 x){ +vec3 t=clamp(x,0.0,1.0); +return (t*(t*6.0-15.0)+10.0)*t*t*t; +} +void node_map_range(const int interpolation,bool inClamp,float value,float fromMin,float fromMax,float toMin,float toMax,float steps,out float result){ +if (fromMax==fromMin){ +result=0.0; +} else if (interpolation==NODE_MAP_RANGE_INTERP_LINEAR){ +result=(value-fromMin)/(fromMax-fromMin)*(toMax-toMin)+toMin; +} else if (interpolation==NODE_MAP_RANGE_INTERP_STEPPED){ +float fac=(value-fromMin)/(fromMax-fromMin); +fac=(steps>0.0)?floor(fac*(steps+1.0))/steps:0.0; +result=fac*(toMax-toMin)+toMin; +} else if (interpolation==NODE_MAP_RANGE_INTERP_SMOOTHSTEP){ +float fac=(fromMin>fromMax)? +1.0-smoothstep(fromMax,fromMin,value): +smoothstep(fromMin,fromMax,value); +result=fac*(toMax-toMin)+toMin; +} else { +float fac=(fromMin>fromMax)? +1.0-smootherstep(fromMax,fromMin,value): +smootherstep(fromMin,fromMax,value); +result=fac*(toMax-toMin)+toMin; +} +if (inClamp&&interpolation<=NODE_MAP_RANGE_INTERP_STEPPED){ +result=clamp(result,toMin,toMax); +} +} +void node_map_range(const int dataType,const int interpolation,bool inClamp,float value,float fromMin,float fromMax,float toMin,float toMax,float steps,vec3 valueVec,vec3 fromMinVec,vec3 fromMaxVec,vec3 toMinVec,vec3 toMaxVec,vec3 stepsVec,out float result,out vec3 resultVec){ +if (dataType==NODE_MAP_RANGE_TYPE_FLOAT){ +if (fromMax==fromMin){ +result=0.0; +} else if (interpolation==NODE_MAP_RANGE_INTERP_LINEAR){ +result=(value-fromMin)/(fromMax-fromMin)*(toMax-toMin)+toMin; +} else if (interpolation==NODE_MAP_RANGE_INTERP_STEPPED){ +float fac=(value-fromMin)/(fromMax-fromMin); +fac=(steps>0.0)?floor(fac*(steps+1.0))/steps:0.0; +result=fac*(toMax-toMin)+toMin; +} else if (interpolation==NODE_MAP_RANGE_INTERP_SMOOTHSTEP){ +float fac=(fromMin>fromMax)? +1.0-smoothstep(fromMax,fromMin,value): +smoothstep(fromMin,fromMax,value); +result=fac*(toMax-toMin)+toMin; +} else { +float fac=(fromMin>fromMax)? +1.0-smootherstep(fromMax,fromMin,value): +smootherstep(fromMin,fromMax,value); +result=fac*(toMax-toMin)+toMin; +} +} else if (dataType==NODE_MAP_RANGE_TYPE_FLOAT_VECTOR){ +vec3 deltaVec=fromMaxVec-fromMinVec; +vec3 fac=vec3(deltaVec.x==0.0?0.0:(valueVec.x-fromMinVec.x)/deltaVec.x,deltaVec.y==0.0?0.0:(valueVec.y-fromMinVec.y)/deltaVec.y,deltaVec.z==0.0?0.0:(valueVec.z-fromMinVec.z)/deltaVec.z +); +if (interpolation==NODE_MAP_RANGE_INTERP_LINEAR){ +resultVec=fac*(toMaxVec-toMinVec)+toMinVec; +} else if (interpolation==NODE_MAP_RANGE_INTERP_STEPPED){ +fac.x=stepsVec.x==0.0?0.0:floor(fac.x*(stepsVec.x+1.0))/stepsVec.x; +fac.y=stepsVec.y==0.0?0.0:floor(fac.y*(stepsVec.y+1.0))/stepsVec.y; +fac.z=stepsVec.z==0.0?0.0:floor(fac.z*(stepsVec.z+1.0))/stepsVec.z; +resultVec=fac*(toMaxVec-toMinVec)+toMinVec; +} else if (interpolation==NODE_MAP_RANGE_INTERP_SMOOTHSTEP){ +fac=clamp(fac,0.0,1.0); +fac=fac*fac*(3.0-2.0*fac); +resultVec=fac*(toMaxVec-toMinVec)+toMinVec; +} else { +resultVec=smootherstep(fac)*(toMaxVec-toMinVec)+toMinVec; +} +if (inClamp&&interpolation<=NODE_MAP_RANGE_INTERP_STEPPED){ +vec3 sumVec=toMinVec+toMaxVec; +toMaxVec=max(toMaxVec,toMinVec); +toMinVec=sumVec-toMaxVec; +resultVec=clamp(resultVec,toMinVec,toMaxVec); +} +} +}`,lhe=`void node_math_add(float val1,float val2,float val3,out float outVal) +{ +outVal=val1+val2; +} +void node_math_subtract(float val1,float val2,float val3,out float outVal) +{ +outVal=val1-val2; +} +void node_math_multiply(float val1,float val2,float val3,out float outVal) +{ +outVal=val1*val2; +} +void node_math_divide(float val1,float val2,float val3,out float outVal) +{ +if (val2==0.0) +outVal=0.0; +else +outVal=val1/val2; +} +void node_math_sine(float val,float val2,float val3,out float outVal) +{ +outVal=sin(val); +} +void node_math_cosine(float val,float val2,float val3,out float outVal) +{ +outVal=cos(val); +} +void node_math_tangent(float val,float val2,float val3,out float outVal) +{ +outVal=tan(val); +} +void node_math_arcsine(float val,float val2,float val3,out float outVal) +{ +if (val<=1.0&&val>=-1.0) +outVal=asin(val); +else +outVal=0.0; +} +void node_math_arccosine(float val,float val2,float val3,out float outVal) +{ +if (val<=1.0&&val>=-1.0) +outVal=acos(val); +else +outVal=0.0; +} +void node_math_arctangent(float val,float val2,float val3,out float outVal) +{ +outVal=atan(val); +} +void node_math_arctan2(float val,float val2,float val3,out float outVal) +{ +outVal=atan(val,val2); +} +void node_math_power(float val1,float val2,float val3,out float outVal) +{ +if (val1>=0.0) +outVal=powCompat(val1,val2); +else { +float val2_mod_1=mod(abs(val2),1.0); +if (val2_mod_1>0.999||val2_mod_1<0.001) +outVal=powCompat(val1,floor(val2+0.5)); +else +outVal=0.0; +} +} +void node_math_logarithm(float val1,float val2,float val3,out float outVal) +{ +if (val1>0.0&&val2>0.0) +outVal=log2(val1)/log2(val2); +else +outVal=0.0; +} +void node_math_sqrt(float val1,float val2,float val3,out float outVal) +{ +outVal=sqrt(val1); +} +void node_math_maximum(float val1,float val2,float val3,out float outVal) +{ +outVal=max(val1,val2); +} +void node_math_minimum(float val1,float val2,float val3,out float outVal) +{ +outVal=min(val1,val2); +} +void node_math_round(float val1,float val2,float val3,out float outVal) +{ +outVal=floor(val1+0.5); +} +void node_math_floor(float val1,float val2,float val3,out float outVal) +{ +outVal=floor(val1); +} +void node_math_ceil(float val1,float val2,float val3,out float outVal) +{ +outVal=ceil(val1); +} +void node_math_fract(float val1,float val2,float val3,out float outVal) +{ +outVal=fract(val1); +} +void node_math_less_than(float val1,float val2,float val3,out float outVal) +{ +if (val1val2) +outVal=1.0; +else +outVal=0.0; +} +void node_math_modulo(float val1,float val2,float val3,out float outVal) +{ +if (val2==0.0) +outVal=0.0; +else +outVal=mod(val1,val2); +outVal=(val1>0.0)?outVal:outVal-val2; +} +void node_math_floored_modulo(float val1,float val2,float val3,out float outVal) +{ +outVal=(val2 != 0.0)?val1-floor(val1/val2)*val2:0.0; +} +void node_math_absolute(float val1,float val2,float val3,out float outVal) +{ +outVal=abs(val1); +} +void node_math_compare(float val1,float val2,float val3,out float outVal){ +outVal=step(abs(val1-val2),val3); +} +void node_math_cosh(float val1,float val2,float val3,out float outVal){ +outVal=cosh(val1); +} +void node_math_degrees(float val1,float val2,float val3,out float outVal){ +outVal=val1/PI*180.0; +} +void node_math_exponent(float val1,float val2,float val3,out float outVal){ +outVal=exp(val1); +} +void node_math_inverse_sqrt(float val1,float val2,float val3,out float outVal){ +if (val1>=0.0){ +outVal=1.0/sqrt(val1); +} else { +outVal=0.0; +} +} +void node_math_multiply_add(float val1,float val2,float val3,out float outVal){ +outVal=val1*val2+val3; +} +void node_math_pingpong(float val1,float val2,float val3,out float outVal){ +if (val2==0.0){ +outVal=0.0; +} else { +float absVal2=abs(val2); +float rem=mod(val1,absVal2); +outVal=mix(rem,absVal2-rem,mod(floor(val1/absVal2),2.0)); +} +} +void node_math_radians(float val1,float val2,float val3,out float outVal){ +outVal=val1/180.0*PI; +} +void node_math_sign(float val1,float val2,float val3,out float outVal){ +outVal=sign(val1); +} +void node_math_sinh(float val1,float val2,float val3,out float outVal){ +outVal=sinh(val1); +} +void node_math_smooth_max(float val1,float val2,float val3,out float outVal){ +outVal=smoothMax(val1,val2,val3); +} +void node_math_smooth_min(float val1,float val2,float val3,out float outVal){ +outVal=smoothMin(val1,val2,val3); +} +void node_math_snap(float val1,float val2,float val3,out float outVal){ +val1+=1e-5*sign(val2); +float quot=val1/val2; +outVal=floor(quot)*val2; +} +void node_math_tanh(float val1,float val2,float val3,out float outVal){ +outVal=tanh(val1); +} +void node_math_trunc(float val1,float val2,float val3,out float outVal){ +val1+=1e-5; +outVal=trunc(val1); +} +void node_math_wrap(float val1,float val2,float val3,out float outVal){ +val1+=1e-5; +outVal=mod(val1-val3,val2-val3)+val3; +}`,che=`void node_mix_rgba_mix(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col2,fac); +outCol.a=col1.a; +} +void node_mix_rgba_add(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1+col2,fac); +outCol.a=col1.a; +} +void node_mix_rgba_multiply(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1*col2,fac); +outCol.a=col1.a; +} +void node_mix_rgba_screen(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=vec4(1.0)-(vec4(facm)+fac*(vec4(1.0)-col2))*(vec4(1.0)-col1); +outCol.a=col1.a; +} +void node_mix_rgba_overlay(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +if (outCol.r<0.5) +outCol.r*=facm+2.0*fac*col2.r; +else +outCol.r=1.0-(facm+2.0*fac*(1.0-col2.r))*(1.0-outCol.r); +if (outCol.g<0.5) +outCol.g*=facm+2.0*fac*col2.g; +else +outCol.g=1.0-(facm+2.0*fac*(1.0-col2.g))*(1.0-outCol.g); +if (outCol.b<0.5) +outCol.b*=facm+2.0*fac*col2.b; +else +outCol.b=1.0-(facm+2.0*fac*(1.0-col2.b))*(1.0-outCol.b); +} +void node_mix_rgba_exclusion(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=max(mix(col1,col1+col2-2.0*col1*col2,fac),0.0); +outCol.a=col1.a; +} +void node_mix_rgba_subtract(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1-col2,fac); +outCol.a=col1.a; +} +void node_mix_rgba_divide(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +if (col2.r != 0.0)outCol.r=facm*outCol.r+fac*outCol.r/col2.r; +if (col2.g != 0.0)outCol.g=facm*outCol.g+fac*outCol.g/col2.g; +if (col2.b != 0.0)outCol.b=facm*outCol.b+fac*outCol.b/col2.b; +} +void node_mix_rgba_difference(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,abs(col1-col2),fac); +outCol.a=col1.a; +} +void node_mix_rgba_darken(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol.rgb=mix(col1.rgb,min(col1.rgb,col2.rgb),fac); +outCol.a=col1.a; +} +void node_mix_rgba_lighten(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol.rgb=mix(col1.rgb,max(col1.rgb,col2.rgb),fac); +outCol.a=col1.a; +} +void node_mix_rgba_dodge(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=col1; +if (outCol.r != 0.0){ +float tmp=1.0-fac*col2.r; +if (tmp<=0.0) +outCol.r=1.0; +else if ((tmp=outCol.r/tmp)>1.0) +outCol.r=1.0; +else +outCol.r=tmp; +} +if (outCol.g != 0.0){ +float tmp=1.0-fac*col2.g; +if (tmp<=0.0) +outCol.g=1.0; +else if ((tmp=outCol.g/tmp)>1.0) +outCol.g=1.0; +else +outCol.g=tmp; +} +if (outCol.b != 0.0){ +float tmp=1.0-fac*col2.b; +if (tmp<=0.0) +outCol.b=1.0; +else if ((tmp=outCol.b/tmp)>1.0) +outCol.b=1.0; +else +outCol.b=tmp; +} +} +void node_mix_rgba_burn(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float tmp,facm=1.0-fac; +outCol=col1; +tmp=facm+fac*col2.r; +if (tmp<=0.0) +outCol.r=0.0; +else if ((tmp=(1.0-(1.0-outCol.r)/tmp))<0.0) +outCol.r=0.0; +else if (tmp>1.0) +outCol.r=1.0; +else +outCol.r=tmp; +tmp=facm+fac*col2.g; +if (tmp<=0.0) +outCol.g=0.0; +else if ((tmp=(1.0-(1.0-outCol.g)/tmp))<0.0) +outCol.g=0.0; +else if (tmp>1.0) +outCol.g=1.0; +else +outCol.g=tmp; +tmp=facm+fac*col2.b; +if (tmp<=0.0) +outCol.b=0.0; +else if ((tmp=(1.0-(1.0-outCol.b)/tmp))<0.0) +outCol.b=0.0; +else if (tmp>1.0) +outCol.b=1.0; +else +outCol.b=tmp; +} +#ifdef HSV_NODES +void node_mix_rgba_hue(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2,tmp; +rgbToHSV(col2,hsv2); +if (hsv2.y != 0.0){ +rgbToHSV(outCol,hsv); +hsv.x=hsv2.x; +hsvToRGB(hsv,tmp); +outCol=mix(outCol,tmp,fac); +outCol.a=col1.a; +} +} +void node_mix_rgba_saturation(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2; +rgbToHSV(outCol,hsv); +if (hsv.y != 0.0){ +rgbToHSV(col2,hsv2); +hsv.y=facm*hsv.y+fac*hsv2.y; +hsvToRGB(hsv,outCol); +} +} +void node_mix_rgba_value(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +vec4 hsv,hsv2; +rgbToHSV(col1,hsv); +rgbToHSV(col2,hsv2); +hsv.z=facm*hsv.z+fac*hsv2.z; +hsvToRGB(hsv,outCol); +} +void node_mix_rgba_color(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2,tmp; +rgbToHSV(col2,hsv2); +if (hsv2.y != 0.0){ +rgbToHSV(outCol,hsv); +hsv.x=hsv2.x; +hsv.y=hsv2.y; +hsvToRGB(hsv,tmp); +outCol=mix(outCol,tmp,fac); +outCol.a=col1.a; +} +} +#endif +void node_mix_rgba_soft_light(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +vec4 one=vec4(1.0); +vec4 scr=one-(one-col2)*(one-col1); +outCol=facm*col1+fac*((one-col1)*col2*col1+col1*scr); +} +void node_mix_rgba_linear_light(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=col1+fac*(2.0*(col2-vec4(0.5))); +} +void node_mix_vector_uniform(float fac,vec3 facVec,vec3 v1,vec3 v2,out vec3 outVec) +{ +fac=clamp(fac,0.0,1.0); +outVec=mix(v1,v2,fac); +} +void node_mix_vector_non_uniform(float fac,vec3 facVec,vec3 v1,vec3 v2,out vec3 outVec) +{ +facVec=clamp(facVec,0.0,1.0); +outVec=mix(v1,v2,facVec); +} +void node_mix_float(float fac,float val1,float val2,out float outVal) +{ +fac=clamp(fac,0.0,1.0); +outVal=mix(val1,val2,fac); +}`,uhe=` +void node_mix_rgb_mix(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col2,fac); +outCol.a=col1.a; +} +void node_mix_rgb_add(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1+col2,fac); +outCol.a=col1.a; +} +void node_mix_rgb_multiply(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1*col2,fac); +outCol.a=col1.a; +} +void node_mix_rgb_screen(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=vec4(1.0)-(vec4(facm)+fac*(vec4(1.0)-col2))*(vec4(1.0)-col1); +outCol.a=col1.a; +} +void node_mix_rgb_overlay(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +if (outCol.r<0.5) +outCol.r*=facm+2.0*fac*col2.r; +else +outCol.r=1.0-(facm+2.0*fac*(1.0-col2.r))*(1.0-outCol.r); +if (outCol.g<0.5) +outCol.g*=facm+2.0*fac*col2.g; +else +outCol.g=1.0-(facm+2.0*fac*(1.0-col2.g))*(1.0-outCol.g); +if (outCol.b<0.5) +outCol.b*=facm+2.0*fac*col2.b; +else +outCol.b=1.0-(facm+2.0*fac*(1.0-col2.b))*(1.0-outCol.b); +} +void node_mix_rgb_subtract(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,col1-col2,fac); +outCol.a=col1.a; +} +void node_mix_rgb_divide(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +if (col2.r != 0.0)outCol.r=facm*outCol.r+fac*outCol.r/col2.r; +if (col2.g != 0.0)outCol.g=facm*outCol.g+fac*outCol.g/col2.g; +if (col2.b != 0.0)outCol.b=facm*outCol.b+fac*outCol.b/col2.b; +} +void node_mix_rgb_difference(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=mix(col1,abs(col1-col2),fac); +outCol.a=col1.a; +} +void node_mix_rgb_darken(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol.rgb=mix(col1.rgb,min(col1.rgb,col2.rgb),fac); +outCol.a=col1.a; +} +void node_mix_rgb_lighten(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol.rgb=max(col1.rgb,col2.rgb*fac); +outCol.a=col1.a; +} +void node_mix_rgb_dodge(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=col1; +if (outCol.r != 0.0){ +float tmp=1.0-fac*col2.r; +if (tmp<=0.0) +outCol.r=1.0; +else if ((tmp=outCol.r/tmp)>1.0) +outCol.r=1.0; +else +outCol.r=tmp; +} +if (outCol.g != 0.0){ +float tmp=1.0-fac*col2.g; +if (tmp<=0.0) +outCol.g=1.0; +else if ((tmp=outCol.g/tmp)>1.0) +outCol.g=1.0; +else +outCol.g=tmp; +} +if (outCol.b != 0.0){ +float tmp=1.0-fac*col2.b; +if (tmp<=0.0) +outCol.b=1.0; +else if ((tmp=outCol.b/tmp)>1.0) +outCol.b=1.0; +else +outCol.b=tmp; +} +} +void node_mix_rgb_burn(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float tmp,facm=1.0-fac; +outCol=col1; +tmp=facm+fac*col2.r; +if (tmp<=0.0) +outCol.r=0.0; +else if ((tmp=(1.0-(1.0-outCol.r)/tmp))<0.0) +outCol.r=0.0; +else if (tmp>1.0) +outCol.r=1.0; +else +outCol.r=tmp; +tmp=facm+fac*col2.g; +if (tmp<=0.0) +outCol.g=0.0; +else if ((tmp=(1.0-(1.0-outCol.g)/tmp))<0.0) +outCol.g=0.0; +else if (tmp>1.0) +outCol.g=1.0; +else +outCol.g=tmp; +tmp=facm+fac*col2.b; +if (tmp<=0.0) +outCol.b=0.0; +else if ((tmp=(1.0-(1.0-outCol.b)/tmp))<0.0) +outCol.b=0.0; +else if (tmp>1.0) +outCol.b=1.0; +else +outCol.b=tmp; +} +#ifdef HSV_NODES +void node_mix_rgb_hue(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2,tmp; +rgbToHSV(col2,hsv2); +if (hsv2.y != 0.0){ +rgbToHSV(outCol,hsv); +hsv.x=hsv2.x; +hsvToRGB(hsv,tmp); +outCol=mix(outCol,tmp,fac); +outCol.a=col1.a; +} +} +void node_mix_rgb_saturation(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2; +rgbToHSV(outCol,hsv); +if (hsv.y != 0.0){ +rgbToHSV(col2,hsv2); +hsv.y=facm*hsv.y+fac*hsv2.y; +hsvToRGB(hsv,outCol); +} +} +void node_mix_rgb_value(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +vec4 hsv,hsv2; +rgbToHSV(col1,hsv); +rgbToHSV(col2,hsv2); +hsv.z=facm*hsv.z+fac*hsv2.z; +hsvToRGB(hsv,outCol); +} +void node_mix_rgb_color(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +outCol=col1; +vec4 hsv,hsv2,tmp; +rgbToHSV(col2,hsv2); +if (hsv2.y != 0.0){ +rgbToHSV(outCol,hsv); +hsv.x=hsv2.x; +hsv.y=hsv2.y; +hsvToRGB(hsv,tmp); +outCol=mix(outCol,tmp,fac); +outCol.a=col1.a; +} +} +#endif +void node_mix_rgb_soft_light(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +float facm=1.0-fac; +vec4 one=vec4(1.0); +vec4 scr=one-(one-col2)*(one-col1); +outCol=facm*col1+fac*((one-col1)*col2*col1+col1*scr); +} +void node_mix_rgb_linear_light(float fac,vec4 col1,vec4 col2,out vec4 outCol) +{ +fac=clamp(fac,0.0,1.0); +outCol=col1+fac*(2.0*(col2-vec4(0.5))); +}`,dhe=`void node_mix_shader(int transpShaderNum,float fac,vec4 color1,vec4 color2,out vec4 outColor) +{ +if (transpShaderNum==0) +color1.rgb=color2.rgb; +else if (transpShaderNum==1) +color2.rgb=color1.rgb; +outColor=mix(color1,color2,clamp(fac,0.0,1.0)); +}`,fhe=`void node_new_geometry(float frontFacing,vec3 viewPos,vec3 viewNorm,out vec3 position,out vec3 normal,out vec3 tangent,out vec3 trueNormal,out vec3 incoming,out vec3 parametric,out float backfacing,out float pointiness,out float randomPerIsland) +{ +vec4 posWorld=invViewMatrix*vec4(-viewPos,1.0); +position=swizzleUpZ(posWorld.xyz); +vec4 viewDir=isOrthographic?vec4(0.0,0.0,-1.0,0.0):vec4(normalize(-viewPos),0.0); +viewDir=invViewMatrix*viewDir; +vec3 incomingVec=-swizzleUpZ(viewDir.xyz); +#if WORLD_NODES==1 +normal=incomingVec; +tangent=vec3(0.0); +#else +vec3 norWorld=normalize(invViewMatrix*vec4(viewNorm,0.0)).xyz; +normal=swizzleUpZ(norWorld); +vec4 posLocal=invModelMatrix*posWorld; +vec3 posLocalDelta=posLocal.xyz-boundingBoxMin; +vec3 bbDelta=boundingBoxMax-boundingBoxMin; +vec3 posOrco=vec3(bbDelta.x<1e-5?-sign(posLocal.y):posLocalDelta.x/bbDelta.x,0.0,bbDelta.z<1e-5?sign(posLocal.y):posLocalDelta.z/bbDelta.z +); +posOrco-=0.5; +vec3 tangWorld=(modelMatrix*vec4(posOrco.z,0.0,-posOrco.x,0.0)).xyz; +tangWorld=cross(norWorld,normalize(cross(tangWorld,norWorld))); +tangent=swizzleUpZ(tangWorld); +#endif +trueNormal=normal; +incoming=incomingVec; +parametric=vec3(0.0); +backfacing=(frontFacing>0.0)?0.0:1.0; +#if WORLD_NODES==1 +pointiness=0.0; +#else +pointiness=0.5; +#endif +randomPerIsland=0.0; +}`,hhe=`void node_normal(vec3 norParam,vec3 norIn,out vec3 norOut,out float dotOut) +{ +norOut=norParam; +dotOut=dot(normalize(norIn),norParam); +}`,phe=`void node_normal_map(vec4 tangent,vec3 normal,float strength,vec4 normalColor,out vec3 normalOut) +{ +#ifdef DOUBLE_SIDED +normal=normal*(float(gl_FrontFacing)*2.0-1.0); +#endif +if (all(lessThan(abs(tangent.xyz),vec3(EPSILON)))){ +normalOut=normal; +} else { +vec3 normalTex=(normalColor.xyz*2.0-1.0); +vec4 viewTangent=vec4(normalize((modelViewMatrix*vec4(tangent.xyz,0.0)).xyz),tangent.w); +vec3 bitangent=viewTangent.w*cross(normal,viewTangent.xyz); +normalOut=normalize(normalTex.x*viewTangent.xyz+normalTex.y*bitangent ++ normalTex.z*normal); +normalOut=mix(normal,normalOut,strength); +} +normalOut=normalize((invViewMatrix*vec4(normalOut,0.0)).xyz); +normalOut=swizzleUpZ(normalOut); +}`,mhe=`uniform int objectIndex; +uniform vec4 objectColor; +uniform int materialIndex; +uniform float objectRandom; +void node_object_info(out vec3 location,out vec4 color,out float alpha,out float objIndex,out float matIndex,out float random){ +#if WORLD_NODES==1 +location=vec3(0.0); +color=vec4(1.0); +alpha=1.0; +objIndex=0.0; +matIndex=0.0; +random=0.0; +#else +location=swizzleUpZ(modelMatrix[3].xyz); +color=vec4(objectColor.rgb,1.0); +alpha=objectColor.a; +objIndex=float(objectIndex); +matIndex=float(materialIndex); +random=float(objectRandom); +#endif +} +void node_object_info(out vec3 location,out vec4 color,out float objIndex,out float matIndex,out float random){ +float alpha; +node_object_info(location,color,alpha,objIndex,matIndex,random); +}`,ghe=`void node_output_lamp(out vec4 outColor) +{ +outColor=vec4(0.0); +}`,_he=`void node_output_material(vec4 surface,vec4 volume,vec3 displacement,float thickness,out vec4 outgoingLight){ +outgoingLight=surface+volume; +} +void node_output_material(vec4 surface,vec4 volume,vec3 displacement,out vec4 outgoingLight){ +node_output_material(surface,volume,displacement,0.0,outgoingLight); +}`,vhe=`void node_output_world(vec4 surface,vec4 volume,out vec4 outgoingLight) +{ +outgoingLight=surface; +}`,Ahe=`void node_particle_info(out float index,out float random,out float age,out float lifeTime,out vec3 location,out float size,out vec3 velocity,out vec3 angularVelocity){ +#if WORLD_NODES==1 +index=0.0; +random=0.0; +age=0.0; +lifeTime=0.0; +location=vec3(0.0); +size=0.0; +velocity=vec3(0.0); +angularVelocity=vec3(0.0); +#else +index=0.0; +random=0.0; +age=0.0; +lifeTime=0.0; +location=vec3(0.0); +size=0.0; +velocity=vec3(0.0); +angularVelocity=vec3(0.0); +#endif +}`,yhe=`void node_point_info(out vec3 position,out float radius,out float random){ +position=vec3(0.0); +radius=0.0; +random=0.0; +}`,bhe=`void node_principled_volume(vec4 color,float colorAttribute,float density,float densityAttribute,float anisotropy,vec4 absorptionColor,float emissionStrength,vec4 emissionColor,float blackbodyIntensity,vec4 blackbodyTint,float temperature,float temperatureAttribute,out vec4 volume){ +volume=vec4(0.0); +}`,xhe=`uniform vec4 nodeRGB[NODE_RGB_NUM]; +void node_rgb(vec4 color,out vec4 outColor) +{ +outColor=color; +}`,Ehe=`void node_rgbtobw(vec4 color,out float outVal){ +outVal=linearToRelativeLuminance(color.rgb); +}`,Che=`void node_script(out vec4 outColor) +{ +outColor=vec4(0.0); +}`,She=` +void node_sephsv(vec4 col,out float h,out float s,out float v) +{ +vec4 hsv; +rgbToHSV(col,hsv); +h=hsv[0]; +s=hsv[1]; +v=hsv[2]; +}`,whe=`#define NODE_SEP_COL_RGB 0 +#define NODE_SEP_COL_HSV 1 +#define NODE_SEP_COL_HSL 2 +void rgbToHSL(vec3 rgb,out vec3 outCol) +{ +float cMax,cMin; +float h,s,l; +cMax=max(rgb[0],max(rgb[1],rgb[2])); +cMin=min(rgb[0],min(rgb[1],rgb[2])); +l=min(1.0,(cMax+cMin)/2.0); +if (cMax==cMin){ +h=s=0.0; +} else { +float cdelta=cMax-cMin; +s=l>0.5?cdelta/(2.0-cMax-cMin):cdelta/(cMax+cMin); +if (cMax==rgb[0]){ +h=(rgb[1]-rgb[2])/cdelta+(rgb[1]> 13)^ n; +int nn=(n*(n*n*60493+19990303)+1376312589)&0x7fffffff; +return 0.5*(float(nn)/1073741824.0); +#else +const int RAND_MAX=32767; +int next=((123456*rowCount)+brickCount)*1103515245+12345; +return (mod(float(next/65536),float(RAND_MAX+1)))/float(RAND_MAX); +#endif +} +void node_tex_brick(float offset,int offsetFrequency,float squash,int squashFrequency,vec3 vector,vec4 color1,vec4 color2,vec4 mortar,float scale,float mortarSize,float mortarSmooth,float bias,float brickWidth,float rowHeight,out vec4 outColor,out float outFac) +{ +float x,y; +vec3 p=vector*scale; +float rowCount=floor(p.y/rowHeight); +if (offsetFrequency != 0&&squashFrequency != 0){ +brickWidth*=mod(rowCount,float(squashFrequency))>0.5?1.0:squash; +offset=mod(rowCount,float(offsetFrequency))>0.5?0.0:(brickWidth*offset); +} +int brickCount=int((p.x+offset)/brickWidth); +float tint=clamp((integer_noise(int(rowCount),brickCount)+bias),0.0,1.0); + +x=abs((p.x+offset)-brickWidth*float(brickCount)); +y=abs(p.y-rowHeight*rowCount); +float min_dist=min(min(x,y),min(brickWidth-x,rowHeight-y)); + +float f=step(min_dist,mortarSize); +if (mortarSmooth>0.0){ +min_dist=1.0-min_dist/mortarSize; +f*=smoothstep(0.0,mortarSmooth,min_dist); +} +outColor=mix(mix(color1,color2,tint),mortar,f); +outFac=f; +}`,Bhe=`void node_tex_checker(vec3 vector,vec4 color1,vec4 color2,float scale,out vec4 outColor,out float outFac) +{ +vec3 p=vector*scale; +p=(p+0.00001)*0.99999; +float cx=floor(p.x); +float cy=floor(p.y); +float cz=floor(p.z); +float result=sign(mod(cx+cy+cz,2.0)); +outFac=max(result,0.0); +outColor=mix(color2,color1,outFac); +}`,Nhe=`uniform mat4 nodeTexCoordObjectMatrices[NODE_TEX_COORD_NUM]; +void node_tex_coord(mat4 objectMat,vec3 viewPos,vec3 viewNorm,vec2 uv,out vec3 outGenerated,out vec3 outNormal,out vec3 outUV,out vec3 outObject,out vec3 outCamera,out vec3 outWindow,out vec3 outReflection) +{ +vec4 view=vec4(-viewPos,1.0); +vec4 posWorld=invViewMatrix*view; +vec3 loc=swizzleUpZ((invModelMatrix*posWorld).xyz); +#if WORLD_NODES==1 +loc=normalize(loc); +#endif +#if WORLD_NODES==1 +outGenerated=loc; +#else +vec3 boxMin=vec3(boundingBoxMin.x,-boundingBoxMax.z,boundingBoxMin.y); +vec3 boxMax=vec3(boundingBoxMax.x,-boundingBoxMin.z,boundingBoxMax.y); +vec3 boxSize=boxMax-boxMin; +if (abs(boxSize.x)<0.001){ +outGenerated.x=0.5; +} else { +outGenerated.x=(loc.x-boxMin.x)/boxSize.x; +} +if (abs(boxSize.y)<0.001){ +outGenerated.y=0.5; +} else { +outGenerated.y=(loc.y-boxMin.y)/boxSize.y; +} +if (abs(boxSize.z)<0.001){ +outGenerated.z=0.5; +} else { +outGenerated.z=(loc.z-boxMin.z)/boxSize.z; +} +#endif +#if WORLD_NODES==1 +outNormal=-loc; +#else +outNormal=normalize(invModelMatrix*invViewMatrix*vec4(viewNorm,0.0)).rgb; +outNormal=swizzleUpZ(outNormal); +#endif +#if WORLD_NODES==1 +outUV=vec3(0.0); +#else +uv.y=1.0-uv.y; +outUV=vec3(uv,0.0); +#endif +#if WORLD_NODES==1 +outObject=loc; +#else +outObject=swizzleUpZ((objectMat*posWorld).xyz); +#endif +outCamera=vec3(view.xy,-view.z); +#if WORLD_NODES==1 +outWindow=vec3(0.0); +#else +outWindow=vec3(gl_FragCoord.xy/viewWidthHeight,0.0); +#endif +#if WORLD_NODES==1 +outReflection=-loc; +#else +vec4 reflection=(invViewMatrix*vec4(reflect(view.xyz,normalize(viewNorm)),0.0)); +outReflection=normalize(swizzleUpZ(reflection.xyz)); +#endif +}`,Ohe=`#define TEX_PROJ_EQUIRECTANGULAR 0 +#define TEX_PROJ_MIRROR_BALL 1 +void node_tex_environment(sampler2D tex,const int encoding,const int projection,vec3 vector,out vec4 outColor){ +vec2 uv; +float bias; +if (projection==TEX_PROJ_EQUIRECTANGULAR){ +vec3 direction=swizzleUpY(vector); +if (length(direction)==0.0){ +direction=vec3(0.0,1.0,0.0); +} else { +direction=normalize(direction); +} +uv=equirectUv(direction); +#if WORLD_NODES==1 +bias=-16.0; +#else +const float seamWidth=0.15; +const float seamBiasFactor=-10.0; +float seam=max(0.0,1.0-abs (direction.z)/seamWidth)* +clamp (1.0-direction.x/seamWidth,0.0,1.0); +bias=seamBiasFactor*seam; +#endif +} else { +vec3 normal=normalize(vector); +normal.y-=1.0; +normal/=(2.0*sqrt(max(-0.5*normal.y,0.0))); +uv=clamp(0.5*normal.xz+0.5,0.0,1.0); +bias=0.0; +} +uv.y=1.0-uv.y; +outColor=texture2D(tex,uv,bias); +outColor=nodeTexelToLinear(outColor,encoding); +}`,khe=`void node_tex_environment_none(vec3 vector,out vec4 outColor){ +outColor=vec4(1.0,0.0,1.0,1.0); +}`,Fhe=`#define TEX_GABOR_2D 0 +#define TEX_GABOR_3D 1 +#define IMPULSES_COUNT 8 +#if __VERSION__==300 +vec2 compute2DGaborKernel(vec2 position,float frequency,float orientation){ +float distanceSq=dot(position,position); +float hannWindow=0.5+0.5*cos(PI*distanceSq); +float gaussianEnvelop=exp(-PI*distanceSq); +float windowedGaussianEnvelope=gaussianEnvelop*hannWindow; +vec2 frequencyVector=frequency*vec2(cos(orientation),sin(orientation)); +float angle=2.0*PI*dot(position,frequencyVector); +vec2 phasor=vec2(cos(angle),sin(angle)); +return windowedGaussianEnvelope*phasor; +} +float compute2DGaborStandardDeviation(){ +float integralOfGaborSq=0.25; +float secondMoment=0.5; +return sqrt(float(IMPULSES_COUNT)*secondMoment*integralOfGaborSq); +} +vec2 compute2DGaborNoiseCell(vec2 cell,vec2 position,float frequency,float isotropy,float baseOrientation){ +vec2 noise=vec2(0.0); +for (int i=0;i=1.0) +continue; +float weight=hashVec3ToFloat(seedForWeight)<0.5?-1.0:1.0; +noise+=weight*compute2DGaborKernel(positionInKernelSpace,frequency,orientation); +} +return noise; +} +vec2 compute2DGaborNoise(vec2 coordinates,float frequency,float isotropy,float baseOrientation){ +vec2 cellPosition=floor(coordinates); +vec2 localPosition=coordinates-cellPosition; +vec2 sum=vec2(0.0); +for (int j=-1;j<=1;j++){ +for (int i=-1;i<=1;i++){ +vec2 cellOffset=vec2(i,j); +vec2 currCellPosition=cellPosition+cellOffset; +vec2 positionInCellSpace=localPosition-cellOffset; +sum+=compute2DGaborNoiseCell(currCellPosition,positionInCellSpace,frequency,isotropy,baseOrientation); +} +} +return sum; +} +vec2 compute3DGaborKernel(vec3 position,float frequency,vec3 orientation){ +float distanceSq=dot(position,position); +float hannWindow=0.5+0.5*cos(PI*distanceSq); +float gaussianEnvelop=exp(-PI*distanceSq); +float windowedGaussianEnvelope=gaussianEnvelop*hannWindow; +vec3 frequencyVector=frequency*orientation; +float angle=2.0*PI*dot(position,frequencyVector); +vec2 phasor=vec2(cos(angle),sin(angle)); +return windowedGaussianEnvelope*phasor; +} +float compute3DGaborStandardDeviation(){ +float integralOfGaborSq=1.0/(4.0*sqrt(2.0)); +float secondMoment=0.5; +return sqrt(float(IMPULSES_COUNT)*secondMoment*integralOfGaborSq); +} +vec3 compute3DOrientation(vec3 orientation,float isotropy,vec4 seed){ +if (isotropy==0.0) +return orientation; +float inclination=acos(orientation.z); +float azimuth=sign(orientation.y)*acos(orientation.x/length(orientation.xy)); +vec2 randomAngles=hashVec4ToVec2(seed)*PI; +inclination+=randomAngles.x*isotropy; +azimuth+=randomAngles.y*isotropy; +return vec3(sin(inclination)*cos(azimuth),sin(inclination)*sin(azimuth),cos(inclination)); +} +vec2 compute3DGaborNoiseCell(vec3 cell,vec3 position,float frequency,float isotropy,vec3 baseOrientation){ +vec2 noise=vec2(0.0); +for (int i=0;i=1.0) +continue; +float weight=hashVec4ToFloat(seedForWeight)<0.5?-1.0:1.0; +noise+=weight*compute3DGaborKernel(positionInKernelSpace,frequency,orientation); +} +return noise; +} +vec2 compute3DGaborNoise(vec3 coordinates,float frequency,float isotropy,vec3 baseOrientation){ +vec3 cellPosition=floor(coordinates); +vec3 localPosition=coordinates-cellPosition; +vec2 sum=vec2(0.0); +for (int k=-1;k<=1;k++){ +for (int j=-1;j<=1;j++){ +for (int i=-1;i<=1;i++){ +vec3 cellOffset=vec3(i,j,k); +vec3 currCellPosition=cellPosition+cellOffset; +vec3 positionInCellSpace=localPosition-cellOffset; +sum+=compute3DGaborNoiseCell(currCellPosition,positionInCellSpace,frequency,isotropy,baseOrientation); +} +} +} +return sum; +} +void node_tex_gabor(int gaborType,vec3 vector,float scale,float frequency,float anisotropy,float orientation2D,vec3 orientation3D,out float outValue,out float outPhase,out float outIntensity){ +vec3 scaledVector=vector*scale; +float isotropy=1.0-clamp(anisotropy,0.0,1.0); +frequency=max(0.001,frequency); +vec2 phasor=vec2(0.0); +float standard_deviation=1.0; +if (gaborType==TEX_GABOR_2D){ +phasor=compute2DGaborNoise(scaledVector.xy,frequency,isotropy,orientation2D); +standard_deviation=compute2DGaborStandardDeviation(); +} else { +vec3 orientation=normalize(orientation3D); +phasor=compute3DGaborNoise(scaledVector,frequency,isotropy,orientation); +standard_deviation=compute3DGaborStandardDeviation(); +} +float normalizationFactor=6.0*standard_deviation; +outValue=(phasor.y/normalizationFactor)*0.5+0.5; +outPhase=(atan(phasor.y,phasor.x)+PI)/(2.0*PI); +outIntensity=length(phasor)/normalizationFactor; +} +#else +void node_tex_gabor(int gaborType,vec3 vector,float scale,float frequency,float anisotropy,float orientation2D,vec3 orientation3D,out float outValue,out float outPhase,out float outIntensity){ +outValue=0.0; +outPhase=0.0; +outIntensity=0.0; +} +#endif`,Vhe=`#define TEX_GRAD_LINEAR 0 +#define TEX_GRAD_QUADRATIC 1 +#define TEX_GRAD_EASING 2 +#define TEX_GRAD_DIAGONAL 3 +#define TEX_GRAD_SPHERICAL 4 +#define TEX_GRAD_QUADRATIC_SPHERE 5 +#define TEX_GRAD_RADIAL 6 +void node_tex_gradient(const int type,vec3 vector,out vec4 outColor,out float outFac) +{ +float x,y,z,r; +x=vector.x; +y=vector.y; +z=vector.z; +if (type==TEX_GRAD_LINEAR){ +outFac=x; +} else if (type==TEX_GRAD_QUADRATIC){ +r=max(x,0.0); +outFac=pow2(r); +} else if (type==TEX_GRAD_EASING){ +r=min(max(x,0.0),1.0); +outFac=(3.0*pow2(r)-2.0*pow3(r)); +} else if (type==TEX_GRAD_DIAGONAL){ +outFac=(x+y)*0.5; +} else if (type==TEX_GRAD_RADIAL){ +outFac=atan(y,x)/PI2+0.5; +} else { +r=max(0.99999-sqrt(x*x+y*y+z*z),0.0); +if (type==TEX_GRAD_QUADRATIC_SPHERE){ +outFac=pow2(r); +} else if (type==TEX_GRAD_SPHERICAL){ +outFac=r; +} +} +outFac=clamp(outFac,0.0,1.0); +outColor=vec4(outFac,outFac,outFac,1.0); +}`,Uhe=`void node_tex_ies(vec3 vector,float strength,out float fac){ +fac=0.0; +}`,zhe=`#define TEX_PROJ_FLAT 0 +#define TEX_PROJ_BOX 1 +#define TEX_PROJ_SPHERE 2 +#define TEX_PROJ_TUBE 3 +#define TEX_ALPHA_CLEAR 0 +#define TEX_ALPHA_PREMUL 1 +#define TEX_ALPHA_UNPREMUL 2 +#define TEX_ALPHA_ONE 3 +vec4 applyAlphaMode(vec4 color,const int alphaMode){ +if (alphaMode==TEX_ALPHA_CLEAR){ +} else if (alphaMode==TEX_ALPHA_PREMUL){ +color.rgb=color.rgb*color.a; +} else if (alphaMode==TEX_ALPHA_UNPREMUL){ +float alpha=color.a; +color.rgb=clamp(color.rgb,0.0,alpha); +if (alpha==0.0) +color.rgb=vec3(0.0); +else +color.rgb/=alpha; +} +return color; +} +void node_tex_image(sampler2D ima,const int encoding,const int alphaMode,vec3 viewNorm,const int projection,const float projectionBlend,const bool clampToEdgeNoExtend,vec3 vector,out vec4 outColor,out float outAlpha){ +if (projection==TEX_PROJ_FLAT){ +vec2 uv=vector.xy; +uv.y=1.0-uv.y; +if (clampToEdgeNoExtend&&(uv.x<0.0||uv.x>1.0||uv.y<0.0||uv.y>1.0)){ +outColor=vec4(0.0); +outAlpha=0.0; +} else { +outColor=texture2D(ima,uv); +outAlpha=outColor.a; +} +outColor=nodeTexelToLinear(outColor,encoding); +} else if (projection==TEX_PROJ_BOX){ +vec3 norm=normalize(viewNorm*normalMatrix); +vector=swizzleUpY(vector); +vec2 uvX=vec2(-sign(norm.x)*vector.z,-vector.y); +vec2 uvY=vec2(sign(norm.y)*vector.z,-vector.x); +vec2 uvZ=vec2(sign(norm.z)*vector.x,-vector.y); +vec4 colX=nodeTexelToLinear(texture2D(ima,uvX),encoding); +vec4 colY=nodeTexelToLinear(texture2D(ima,uvY),encoding); +vec4 colZ=nodeTexelToLinear(texture2D(ima,uvZ),encoding); +vec3 barycentric=abs(norm); +barycentric/=barycentric.x+barycentric.y+barycentric.z; +vec3 edgeShape=min(min(barycentric.yzx,barycentric.zxy),(projectionBlend-1.0)/(projectionBlend-3.0)); +vec3 edgeValue=(1.0-projectionBlend)*(1.0-edgeShape)/2.0; +vec3 weight=max((barycentric-edgeValue)/(1.0-edgeValue),EPSILON); +weight/=(weight.x+weight.y+weight.z); +outColor=weight.x*colX+weight.y*colY+weight.z*colZ; +outAlpha=outColor.a; +} else if (projection==TEX_PROJ_SPHERE){ +vector=normalize(vector*2.0-1.0); +vector=swizzleUpY(vector); +vec2 uv=vec2(atan(vector.x,vector.z)/PI2,acos(vector.y)/PI); +uv.x=mod(uv.x,1.0); +outColor=texture2D(ima,uv); +outAlpha=outColor.a; +outColor=nodeTexelToLinear(outColor,encoding); +} else if (projection==TEX_PROJ_TUBE){ +vector=vector*2.0-1.0; +vector=swizzleUpY(vector); +vec2 uv=vec2(atan(vector.x,vector.z)/PI2,(1.0-vector.y)/2.0); +uv.x=mod(uv.x,1.0); +outColor=texture2D(ima,uv); +outAlpha=outColor.a; +outColor=nodeTexelToLinear(outColor,encoding); +} +outColor=applyAlphaMode(outColor,alphaMode); +if (alphaMode==TEX_ALPHA_ONE) +outAlpha=1.0; +}`,Ghe=`void node_tex_image_none(vec3 vector,out vec4 color,out float alpha) +{ +color=vec4(1.0,0.0,1.0,1.0); +alpha=1.0; +}`,Hhe=`void node_tex_magic(vec3 vector,float scale,float distortion,out vec4 outColor,out float outFac) +{ +outColor=vec4(0.0); +outFac=0.0; +}`,Whe=` +void node_tex_musgrave(vec3 vector,float w,float scale,float detail,float dimension,float lacunarity,float offset,float gain,out float outFac){ +outFac=0.0; +}`,jhe=`#define TEX_NOISE_MULTIFRACTAL 0 +#define TEX_NOISE_RIDGED_MULTIFRACTAL 1 +#define TEX_NOISE_HYBRID_MULTIFRACTAL 2 +#define TEX_NOISE_FBM 3 +#define TEX_NOISE_HETERO_TERRAIN 4 +void node_tex_noise(int noiseType,float falloffFactor,float dispersionFactor,vec3 vector,float w,float scale,float detail,float roughness,float lacunarity,float offset,float gain,float distortion,out float outFac,out vec4 outColor){ +vec3 p=vector*scale; +vec3 dx=dFdx(p); +vec3 dy=dFdy(p); +float octaveLenPerPixel=(length(dx)+length(dy))/4.0; +if (distortion != 0.0){ +vec3 r,offset=vec3(13.5,13.5,13.5); +r.x=noiseSmooth(p+offset,octaveLenPerPixel,falloffFactor,dispersionFactor)*distortion; +r.y=noiseSmooth(p,octaveLenPerPixel,falloffFactor,dispersionFactor)*distortion; +r.z=noiseSmooth(p-offset,octaveLenPerPixel,falloffFactor,dispersionFactor)*distortion; +p+=r; +} +outFac=noiseTurbulence(p,detail,octaveLenPerPixel,falloffFactor,dispersionFactor); +vec3 color=vec3(outFac,noiseTurbulence(vec3(p.y,p.x,p.z),detail,octaveLenPerPixel,falloffFactor,dispersionFactor),noiseTurbulence(vec3(p.y,p.z,p.x),detail,octaveLenPerPixel,falloffFactor,dispersionFactor) +); +outColor=vec4(color,1.0); +} +void node_tex_noise(float falloffFactor,float dispersionFactor,vec3 vector,float w,float scale,float detail,float roughness,float lacunarity,float distortion,out float outFac,out vec4 outColor){ +node_tex_noise(TEX_NOISE_FBM,falloffFactor,dispersionFactor,vector,w,scale,detail,roughness,lacunarity,0.0,1.0,distortion,outFac,outColor); +} +void node_tex_noise(float falloffFactor,float dispersionFactor,vec3 vector,float w,float scale,float detail,float roughness,float distortion,out float outFac,out vec4 outColor){ +node_tex_noise(falloffFactor,dispersionFactor,vector,w,scale,detail,roughness,2.0,distortion,outFac,outColor); +}`,Qhe=`void node_tex_pointdensity(vec3 vector,out vec4 outColor,out float outDensity) +{ +outColor=vec4(0.0); +outDensity=0.0; +}`,$he=` +#define TEX_SKY_PREETHAM 0 +#define TEX_SKY_HOSEK_WILKIE 1 +#define TEX_SKY_NISHITA 2 +#define Km 683.0 +void node_tex_sky(const int skyType,vec3 param0,vec3 param1,vec3 param2,vec3 param3,vec3 param4,vec3 param5,vec3 param6,vec3 param7,vec3 param8,vec3 radiance,vec3 sunDirection,vec3 vectorIn,out vec4 outColor){ +if (length(vectorIn)==0.0){ +vectorIn=vec3(0.0,1.0,0.0); +} else { +vectorIn=normalize(vectorIn); +} +vectorIn=swizzleUpY(vectorIn); +sunDirection=swizzleUpY(sunDirection); +float cosGamma=clamp(dot(vectorIn,sunDirection),-1.0,1.0); +float cosTheta=clamp(vectorIn.y,0.0,1.0); +if (skyType==TEX_SKY_PREETHAM){ +vec3 radInternal=(1.0+param0*exp(param1/cosTheta))*(1.0+param2*exp(param3*acos(cosGamma)) ++ param4*pow(cosGamma,2.0) +); +vec3 XYZ=xyY_to_XYZ(radInternal.y*radiance.y,radInternal.z*radiance.z,radInternal.x*radiance.x); +outColor=vec4(max(xyz_to_sRGB(XYZ),0.0),1.0); +} else if (skyType==TEX_SKY_HOSEK_WILKIE){ +float cosGammaSq=pow(cosGamma,2.0); +vec3 chi=(1.0+cosGammaSq)/pow(1.0+pow(param8,vec3(2.0)) +- 2.0*param8*cosGamma,vec3(1.5)); +vec3 radInternal=(1.0+param0*exp(param1/(cosTheta+0.01)))*(param2+param3*exp(param4*acos(cosGamma)) ++ param5*cosGammaSq+param6*chi+param7*sqrt(cosTheta) +); +outColor=vec4(max(xyz_to_sRGB(radInternal*radiance),0.0)*PI2/Km,1.0); +} else { +outColor=vec4(0.0,0.0,0.0,1.0); +} +}`,Yhe=`#define DISTANCE_EUCLIDEAN 0 +#define DISTANCE_MANHATTAN 1 +#define DISTANCE_CHEBYCHEV 2 +#define DISTANCE_MINKOWSKI 3 +#define FEATURE_F1 0 +#define FEATURE_F2 1 +#define FEATURE_SMOOTH_F1 2 +#define FEATURE_DISTANCE_TO_EDGE 3 +#define FEATURE_N_SPHERE_RADIUS 4 +struct VoronoiGridData { +vec3 point; +vec3 randVec; +vec3 toClosest; +float dist; +}; +highp vec3 rand3(const in vec3 v){ +const highp float c=43758.5453; +const highp mat3 coeffs=mat3(165.15,253.34,323.22,241.49,329.07,147.79,376.31,143.45,281.63 +); +highp vec3 sn=mod(coeffs*v,PI); +return fract(sin(sn)*c); +} +float worleyLength(vec3 vec,int distance,float exponent){ +if (distance==DISTANCE_EUCLIDEAN){ +return length(vec); +} else if (distance==DISTANCE_MANHATTAN){ +return abs(vec.x)+abs(vec.y)+abs(vec.z); +} else if (distance==DISTANCE_CHEBYCHEV){ +return max(max(abs(vec.x),abs(vec.y)),abs(vec.z)); +} else if (distance==DISTANCE_MINKOWSKI){ +return pow(pow(abs(vec.x),exponent) ++ pow(abs(vec.y),exponent) ++ pow(abs(vec.z),exponent),1.0/exponent); +} +return 0.0; +} +void worleyNoise(vec3 pos,int distance,float exponent,int feature,float smoothness,float randomness,out float outDist,out vec4 outColor,out vec3 outPosition,out float outW,out float outRadius){ +const highp float RAND_FIX_ZERO=0.125; +vec3 posI=floor(pos); +vec3 posF=fract(pos); +VoronoiGridData vgd[27]; +#pragma unroll_loop +for (int i=0;i<=2;i++){ +#pragma unroll_loop +for (int j=0;j<=2;j++){ +#pragma unroll_loop +for (int k=0;k<=2;k++){ +vec3 point=vec3((i),(j),(k))-1.0; +vec3 randVec=rand3(posI+point+RAND_FIX_ZERO); +vec3 toClosest=point+randomness*randVec-posF; +const int counter=(i)+(j)*3+(k)*9; +vgd[counter].point=point; +vgd[counter].randVec=randVec; +vgd[counter].toClosest=toClosest; +vgd[counter].dist=worleyLength(toClosest,distance,exponent); +} +} +} +float f1=1e10; +float f2=1e10; +vec3 edgeToClosest=vec3(0.0); +float distToEdge=1e10; +vec3 randColF1=vec3(0.0); +vec3 randColF2=vec3(0.0); +vec3 toClosestF1=vec3(0.0); +vec3 toClosestF2=vec3(0.0); +vec3 radPoint=vec3(0.0); +vec3 radToClosest=vec3(0.0); +#pragma unroll_loop +for (int i=0;i<27;i++){ +if (feature==FEATURE_F1){ +if (vgd[i].dist0.0){ +vec3 point=localPoint+radPoint; +vec3 randVec=rand3(posI+point+RAND_FIX_ZERO); +vec3 toClosest=point+randomness*randVec-posF; +diam=min(diam,length(toClosest-radToClosest)); +} +} +} +} +outRadius=diam/2.0; +} +} +#define VORONOI_SMOOTH_COEFF 0.74 +void node_tex_voronoi(int distance,int feature,vec3 vector,float w,float scale,float detail,float roughness,float lacunarity,float smoothness,float exponent,float randomness,out float outDistance,out vec4 outColor,out vec3 outPosition,out float outW,out float outRadius){ +vector=scale*(vector-0.0001); +smoothness=clamp(smoothness,1e-3,1.0); +smoothness*=VORONOI_SMOOTH_COEFF; +worleyNoise(vector,distance,exponent,feature,smoothness,randomness,outDistance,outColor,outPosition,outW,outRadius); +outPosition/=scale; +} +void node_tex_voronoi(int distance,int feature,vec3 vector,float w,float scale,float smoothness,float exponent,float randomness,out float outDistance,out vec4 outColor,out vec3 outPosition,out float outW,out float outRadius){ +node_tex_voronoi(distance,feature,vector,w,scale,0.0,0.5,2.0,smoothness,exponent,randomness,outDistance,outColor,outPosition,outW,outRadius); +} +#define FEATURE_F3 5 +#define FEATURE_F4 6 +#define FEATURE_F2F1 7 +#define COLORING_INTENSITY 0 +#define COLORING_CELLS 1 +struct VoronoiClosest { +vec4 closestDists; +vec4 closestInds; +}; +void updateVoronoiClosest(inout VoronoiClosest vf,vec3 newDistances,vec3 newIndices){ +#pragma unroll_loop +for (int i=0;i<3;i++){ +float currDist=newDistances[i]; +float currIdx=newIndices[i]; +#pragma unroll_loop +for (int j=0;j<4;j++){ +if (currDist0.0?mod(v1.x,abs(v2.x)):0.0; +outVec.y=signProduct.y>0.0?mod(v1.y,abs(v2.y)):0.0; +outVec.z=signProduct.z>0.0?mod(v1.z,abs(v2.z)):0.0; +} +void node_vect_math_fraction(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=fract(v1); +} +void node_vect_math_absolute(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=abs(v1); +} +void node_vect_math_power(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=vec3(powCompat(v1.x,v2.x),powCompat(v1.y,v2.y),powCompat(v1.z,v2.z)); +} +void node_vect_math_sign(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=sign(v1); +} +void node_vect_math_minimum(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=min(v1,v2); +} +void node_vect_math_maximum(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=max(v1,v2); +} +void node_vect_math_cosine(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=cos(v1); +} +void node_vect_math_sine(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=sin(v1); +} +void node_vect_math_tangent(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=tan(v1); +} +void node_vect_math_wrap(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +v1+=1e-5; +outVec.x=v2.x==v3.x?v2.x:mod(v1.x-v3.x,v2.x-v3.x)+v3.x; +outVec.y=v2.y==v3.y?v2.y:mod(v1.y-v3.y,v2.y-v3.y)+v3.y; +outVec.z=v2.z==v3.z?v2.z:mod(v1.z-v3.z,v2.z-v3.z)+v3.z; +} +void node_vect_math_faceforward(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=dot(v2,v3)<0.0?v1:-v1; +} +void node_vect_math_multiply_add(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +outVec=v1*v2+v3; +} +void node_vect_math_refract(vec3 v1,vec3 v2,vec3 v3,float val,out vec3 outVec,out float outVal){ +if (v2 != vec3(0.0)){ +v2=normalize(v2); +} +outVec=refract(v1,v2,val); +}`,tpe=`#define VEC_TRANS_NONE 0 +#define VEC_TRANS_W_O 1 +#define VEC_TRANS_W_C 2 +#define VEC_TRANS_O_W 3 +#define VEC_TRANS_O_C 4 +#define VEC_TRANS_C_W 5 +#define VEC_TRANS_C_O 6 +#define VEC_TRANS_W_O_DIR 7 +#define VEC_TRANS_W_C_DIR 8 +#define VEC_TRANS_O_W_DIR 9 +#define VEC_TRANS_O_C_DIR 10 +#define VEC_TRANS_C_W_DIR 11 +#define VEC_TRANS_C_O_DIR 12 +void node_vect_transform(const int vecTransType,const bool invCamZ,vec3 vIn,out vec3 vOut) +{ +if (vecTransType==VEC_TRANS_NONE) +vOut=vIn; +else { +vec4 vec; +if (vecTransType0.0){ +vector-=center; +outVector=vec3RotateAxisAngle(vector,axis,invert*angle); +outVector+=center; +} else { +outVector=vector; +} +} +void node_vector_rotate_euler_xyz(float invert,vec3 vector,vec3 center,vec3 axis,float angle,vec3 rotation,out vec3 outVector){ +vec4 axisAngle=eulerToAxisAngle(rotation); +vector-=center; +outVector=vec3RotateAxisAngle(vector,axisAngle.xyz,invert*axisAngle.w); +outVector+=center; +} +void node_vector_rotate_x_axis(float invert,vec3 vector,vec3 center,vec3 axis,float angle,vec3 rotation,out vec3 outVector){ +vector-=center; +outVector=vec3RotateXAngle(vector,invert*angle); +outVector+=center; +} +void node_vector_rotate_y_axis(float invert,vec3 vector,vec3 center,vec3 axis,float angle,vec3 rotation,out vec3 outVector){ +vector-=center; +outVector=vec3RotateYAngle(vector,invert*angle); +outVector+=center; +} +void node_vector_rotate_z_axis(float invert,vec3 vector,vec3 center,vec3 axis,float angle,vec3 rotation,out vec3 outVector){ +vector-=center; +outVector=vec3RotateZAngle(vector,invert*angle); +outVector+=center; +}`,ope=`void node_vertex_color(vec4 color,out vec4 outColor,out float outAlpha){ +outColor=color; +outAlpha=color.a; +}`,ipe=`void node_volume_absorption(vec4 color,float density,out vec4 outColor) +{ +outColor=color; +}`,ape=`void node_volume_info(out vec4 color,out float density,out float flame,out float temperature){ +color=vec4(vec3(0.0),1.0); +density=0.0; +flame=0.0; +temperature=0.0; +}`,spe=`void node_volume_scatter(vec4 color,float density,float anisotropy,float ior,float backscatter,float alpha,float diameter,out vec4 outColor) +{ +outColor=vec4(color); +} +void node_volume_scatter(vec4 color,float density,float anisotropy,out vec4 outColor) +{ +outColor=vec4(color); +}`,lpe=`void node_wavelength(float wavelength,out vec4 outColor) +{ +outColor=vec4(0.0,0.0,0.0,1.0); +#if __VERSION__==300 +vec3 xyz=vec3(0.0); +float ii=(wavelength-380.0)/5.0; +int i=int(ii); +if (i<0||i>=80){ +return; +} +ii-=float(i); +vec3 c1=cieColorMatch[i]; +vec3 c2=cieColorMatch[i+1]; +xyz=mix(c1,c2,ii); +outColor=vec4(xyz_to_sRGB(xyz),1.0); +#endif +}`,cpe=`void node_wireframe(float size,out float outFac) +{ +outFac=0.0; +}`,upe=`void node_bitmap_none(out vec4 color) +{ +color=vec4(1.0); +}`,dpe=`void node_bitmap_env(sampler2D envMap,int reflectMode,float IOR,const int encoding,const bool alphaAsMono,const bool alphaAsRGB,float uOffset,float vOffset,float uTiling,float vTiling,float wAngle,vec3 normal,out vec4 color,out float value) +{ +vec3 cameraToVertex=normalize(vWorldPosition-cameraPosition); +vec3 worldNormal=inverseTransformDirection(normal,viewMatrix); +vec3 reflectVec; +#if WORLD_NODES +reflectVec=normalize(cameraToVertex); +#else +if (reflectMode==MAX_ENV_COORDS_REFLECT) +reflectVec=reflect(cameraToVertex,worldNormal); +else { +float refrRatio=1.0/IOR; +reflectVec=refract(cameraToVertex,worldNormal,refrRatio); +} +#endif +mat3 uvTransform=calcUvTransform(uOffset,vOffset,uTiling,vTiling,wAngle); +color=sampleEquirectangular(envMap,reflectVec,uvTransform,encoding); +if (alphaAsMono) +value=color.a; +else +value=average(color.rgb); +if (alphaAsRGB) +color=vec4(color.a); +}`,fpe=`void node_bitmap(sampler2D map,const vec2 uvIn,const int mapping,const int axis,const ivec2 clampToEdgeNoExtend,const int encoding,const bool alphaAsMono,const bool alphaAsRGB,float uOffset,float vOffset,float uTiling,float vTiling,float wAngle,out vec4 color,out float value) +{ +vec3 coordsIn; +if (mapping==MAPPING_EXPLICIT_MAP_CHANNEL){ +coordsIn=vec3(uvIn.x,1.0-uvIn.y,0.0); +} else if (mapping==MAPPING_VERTEX_COLOR_CHANNEL){ +coordsIn=vec3(0.0); +} else if (mapping==MAPPING_PLANAR_OBJECT_XYZ){ +coordsIn=swizzleUpZ((invModelMatrix*invViewMatrix*vec4(-vViewPosition,1.0)).xyz); +} else { +coordsIn=swizzleUpZ((invViewMatrix*vec4(-vViewPosition,1.0)).xyz); +} +if (axis==AXIS_XY) +coordsIn=vec3(coordsIn.x,coordsIn.y,1.0); +else if (axis==AXIS_YZ) +coordsIn=vec3(coordsIn.y,coordsIn.z,1.0); +else if (axis==AXIS_ZX) +coordsIn=vec3(coordsIn.z,coordsIn.x,1.0); +vec3 coordsOut=calcUvTransform(uOffset,vOffset,uTiling,vTiling,wAngle)*coordsIn; +vec2 uv=vec2(coordsOut.x,1.0-coordsOut.y); +if ((clampToEdgeNoExtend[0]==1&&(uvIn.x<0.0||uvIn.x>1.0))|| +(clampToEdgeNoExtend[1]==1&&(uvIn.y<0.0||uvIn.y>1.0))){ +color=vec4(0.0,0.0,0.0,1.0); +} else { +color=texture2D(map,uv); +color=nodeTexelToLinear(color,encoding); +} +if (alphaAsMono) +value=color.a; +else +value=average(color.rgb); +if (alphaAsRGB) +color=vec4(color.a); +}`,hpe=`void node_bump(sampler2D bumpMap,const vec3 eyePos,const vec3 normal,const vec2 uvIn,float uOffset,float vOffset,float uTiling,float vTiling,float wAngle,out vec3 normalOut) +{ +vec3 coordsIn; +coordsIn=vec3(uvIn.x,1.0-uvIn.y,1.0); +vec3 coordsOut=calcUvTransform(uOffset,vOffset,uTiling,vTiling,wAngle)*coordsIn; +vec2 uv=vec2(coordsOut.x,1.0-coordsOut.y); +vec2 dSTdx=dFdx(uv); +vec2 dSTdy=dFdy(uv); +if (any(equal(dSTdx,vec2(0.0)))||any(equal(dSTdy,vec2(0.0)))){ +normalOut=normal; +} else { +const float bumpScale=1.0; +vec3 vSigmaX=vec3(dFdx(eyePos.x),dFdx(eyePos.y),dFdx(eyePos.z)); +vec3 vSigmaY=vec3(dFdy(eyePos.x),dFdy(eyePos.y),dFdy(eyePos.z)); +vec3 vN=normal; +vec3 R1=cross(vSigmaY,vN); +vec3 R2=cross(vN,vSigmaX); +float fDet=dot(vSigmaX,R1); +float Hll=bumpScale*texture2D(bumpMap,uv).x; +float dBx=bumpScale*texture2D(bumpMap,uv+dSTdx).x-Hll; +float dBy=bumpScale*texture2D(bumpMap,uv+dSTdy).x-Hll; +vec2 dHdxy=vec2(dBx,dBy); +vec3 vGrad=sign(fDet)*(dHdxy.x*R1+dHdxy.y*R2); +normalOut=normalize(abs(fDet)*normal-vGrad); +} +}`,ppe=`void node_blend(const bool useCurve,const float curveLower,const float curveUpper,const vec4 color1,const vec4 color2,float mask,out vec4 color) +{ +if (useCurve) +mask=smoothstep(curveLower,curveUpper,mask); +else +mask=clamp(mask,0.0,1.0); +color=mix(color1,color2,mask); +}`,mpe=`#define REWIRE_RED 0 +#define REWIRE_GREEN 1 +#define REWIRE_BLUE 2 +#define REWIRE_ALPHA 3 +#define REWIRE_RED_INV 4 +#define REWIRE_GREEN_INV 5 +#define REWIRE_BLUE_INV 6 +#define REWIRE_ALPHA_INV 7 +#define REWIRE_MONOCHROME 8 +#define REWIRE_ONE 9 +#define REWIRE_ZERO 10 +float rewireChannel(int type,vec4 color) +{ +if (type==REWIRE_RED) +return color.r; +else if (type==REWIRE_GREEN) +return color.g; +else if (type==REWIRE_BLUE) +return color.b; +else if (type==REWIRE_ALPHA) +return color.a; +else if (type==REWIRE_RED_INV) +return 1.0-color.r; +else if (type==REWIRE_GREEN_INV) +return 1.0-color.g; +else if (type==REWIRE_BLUE_INV) +return 1.0-color.b; +else if (type==REWIRE_ALPHA_INV) +return 1.0-color.a; +else if (type==REWIRE_MONOCHROME) +return average(color.rgb); +else if (type==REWIRE_ONE) +return 1.0; +else +return 0.0; +} +vec3 gainPivotGammaLift(vec3 color,float gain,float pivot,float gamma,float lift,int exposureMode,float printerLights) +{ +gain=gain/100.0; +if (exposureMode==0){ +color=color*gain/pivot; +} else if (exposureMode==1){ +color=color*pow(2.0,gain)/pivot; +} else { +color=color*pow(printerLights,gain)/pivot; +} +vec3 tmp=pivot*pow(color,vec3(1.0/gamma)); +return step(0.00001,color)*tmp+lift; +} +float gainPivotGammaLift(float value,float gain,float pivot,float gamma,float lift,int exposureMode,float printerLights) +{ +gain=gain/100.0; +if (exposureMode==0){ +value=value*gain/pivot; +} else if (exposureMode==1){ +value=value*pow(2.0,gain)/pivot; +} else { +value=value*pow(printerLights,gain)/pivot; +} +float tmp=pivot*pow(value,1.0/gamma); +return step(0.00001,value)*tmp+lift; +} +void node_color_correction(const ivec4 rewire,const vec4 color,const float hueShift,const float saturation,const vec4 tint,const float tintStrength,const float brightness,const float contrast,out vec4 outColor) +{ +if (all(equal(rewire,ivec4(REWIRE_RED,REWIRE_GREEN,REWIRE_BLUE,REWIRE_ALPHA)))){ +outColor=color; +} else { +outColor.r=rewireChannel(rewire.x,color); +outColor.g=rewireChannel(rewire.y,color); +outColor.b=rewireChannel(rewire.z,color); +outColor.a=rewireChannel(rewire.w,color); +} +vec4 hsv; +rgbToHSV(outColor,hsv); +hsv[0]+=hueShift/360.0; +if (hsv[0]>1.0) +hsv[0]-=1.0; +else if (hsv[0]<0.0) +hsv[0]+=1.0; +hsv[1]*=(saturation/100.0+1.0); +hsv[1]=saturate(hsv[1]); +if (tintStrength>0.0){ +vec4 hsvTint; +rgbToHSV(tint,hsvTint); +hsv[0]=hsv[0]+(hsvTint[0]-hsv[0])*tintStrength/100.0; +} +hsvToRGB(hsv,outColor); +outColor=(outColor-0.5)*(contrast/100.0+1.0)+0.5+brightness/100.0; +outColor=max(outColor,0.0); +} +void node_color_correction(const ivec4 rewire,const mat4 params,bool enableR,bool enableG,bool enableB,int exposureMode,float printerLights,const vec4 color,const float hueShift,const float saturation,const vec4 tint,const float tintStrength,out vec4 outColor) +{ +if (all(equal(rewire,ivec4(REWIRE_RED,REWIRE_GREEN,REWIRE_BLUE,REWIRE_ALPHA)))){ +outColor=color; +} else { +outColor.r=rewireChannel(rewire.x,color); +outColor.g=rewireChannel(rewire.y,color); +outColor.b=rewireChannel(rewire.z,color); +outColor.a=rewireChannel(rewire.w,color); +} +vec4 hsv; +rgbToHSV(outColor,hsv); +hsv[0]+=hueShift/360.0; +if (hsv[0]>1.0) +hsv[0]-=1.0; +else if (hsv[0]<0.0) +hsv[0]+=1.0; +hsv[1]*=(saturation/100.0+1.0); +hsv[1]=saturate(hsv[1]); +if (tintStrength>0.0){ +vec4 hsvTint; +rgbToHSV(tint,hsvTint); +hsv[0]=hsv[0]+(hsvTint[0]-hsv[0])*tintStrength/100.0; +} +hsvToRGB(hsv,outColor); +outColor.rgb=gainPivotGammaLift(outColor.rgb,params[0][0],params[0][1],params[0][2],params[0][3],exposureMode,printerLights); +if (enableR) +outColor.r=gainPivotGammaLift(outColor.r,params[1][0],params[1][1],params[1][2],params[1][3],exposureMode,printerLights); +if (enableG) +outColor.g=gainPivotGammaLift(outColor.g,params[2][0],params[2][1],params[2][2],params[2][3],exposureMode,printerLights); +if (enableB) +outColor.b=gainPivotGammaLift(outColor.b,params[3][0],params[3][1],params[3][2],params[3][3],exposureMode,printerLights); +outColor=max(outColor,0.0); +}`,gpe=`void node_color_map(const bool reverseGamma,const vec4 color,const float gamma,const float gain,out vec4 outColor) +{ +float p=reverseGamma?gamma:1.0/gamma; +float g=reverseGamma?(gain>EPSILON?1.0/gain:1.0):gain; +outColor=vec4(g*pow(abs(color.rgb),vec3(p)),color.a); +}`,_pe=`#define COMP_BLEND_NORMAL 0 +#define COMP_BLEND_AVERAGE 1 +#define COMP_BLEND_ADD 2 +#define COMP_BLEND_SUBTRACT 3 +#define COMP_BLEND_DARKEN 4 +#define COMP_BLEND_MULTIPLY 5 +#define COMP_BLEND_COLORBURN 6 +#define COMP_BLEND_LINEARBURN 7 +#define COMP_BLEND_LIGHTEN 8 +#define COMP_BLEND_SCREEN 9 +#define COMP_BLEND_COLORDODGE 10 +#define COMP_BLEND_LINEARDODGE 11 +#define COMP_BLEND_SPOT 12 +#define COMP_BLEND_SPOTBLEND 13 +#define COMP_BLEND_OVERLAY 14 +#define COMP_BLEND_SOFTLIGHT 15 +#define COMP_BLEND_HARDLIGHT 16 +#define COMP_BLEND_PINLIGHT 17 +#define COMP_BLEND_HARDMIX 18 +#define COMP_BLEND_DIFFERENCE 19 +#define COMP_BLEND_EXCLUSION 20 +#define COMP_BLEND_HUE 21 +#define COMP_BLEND_SATURATION 22 +#define COMP_BLEND_COLOR 23 +#define COMP_BLEND_VALUE 24 +vec4 calcBlending(const vec4 colorBG,const vec4 colorFG,const int blendMode){ +if (blendMode==COMP_BLEND_NORMAL) +return colorFG; +else if (blendMode==COMP_BLEND_AVERAGE) +return (colorFG+colorBG)/2.0; +else if (blendMode==COMP_BLEND_ADD) +return colorBG+colorFG; +else if (blendMode==COMP_BLEND_SUBTRACT) +return colorBG-colorFG; +else if (blendMode==COMP_BLEND_DARKEN) +return min(colorFG,colorBG); +else if (blendMode==COMP_BLEND_MULTIPLY) +return colorBG*colorFG; +else if (blendMode==COMP_BLEND_COLORBURN){ +if (colorFG.r==0.0&&colorFG.g==0.0&&colorFG.b==0.0) +return vec4(0.0,0.0,0.0,1.0); +else +return max(1.0-(1.0-colorBG)/colorFG,0.0); +} else if (blendMode==COMP_BLEND_LINEARBURN) +return max(colorFG+colorBG-1.0,0.0); +else if (blendMode==COMP_BLEND_LIGHTEN) +return max(colorFG,colorBG); +else if (blendMode==COMP_BLEND_SCREEN) +return colorFG+colorBG-colorFG*colorBG; +else if (blendMode==COMP_BLEND_COLORDODGE){ +if (colorFG.r==1.0&&colorFG.g==1.0&&colorFG.b==1.0) +return vec4(1.0); +else +return min(colorBG/(1.0-colorFG),1.0); +} else if (blendMode==COMP_BLEND_LINEARDODGE) +return min(colorFG+colorBG,1.0); +else if (blendMode==COMP_BLEND_SPOT) +return min(2.0*colorFG*colorBG,1.0); +else if (blendMode==COMP_BLEND_SPOTBLEND) +return min(colorFG*colorBG+colorBG,1.0); +else if (blendMode==COMP_BLEND_OVERLAY){ +if (colorBG.r<=0.5&&colorBG.g<=0.5&&colorBG.b<=0.5) +return saturate(2.0*colorFG*colorBG); +else +return saturate(1.0-2.0*(1.0-colorFG)*(1.0-colorBG)); +} else if (blendMode==COMP_BLEND_SOFTLIGHT){ +if (colorFG.r<=0.5&&colorFG.g<=0.5&&colorFG.b<=0.5) +return saturate(colorBG*(colorBG+2.0*colorFG*(1.0-colorBG))); +else +return saturate(colorBG+(2.0*colorFG-1.0)*(sqrt(colorBG)-colorBG)); +} else if (blendMode==COMP_BLEND_HARDLIGHT){ +if (colorFG.r<=0.5&&colorFG.g<=0.5&&colorFG.b<=0.5) +return saturate(2.0*colorFG*colorBG); +else +return saturate(1.0-2.0*(1.0-colorFG)*(1.0-colorBG)); +} else if (blendMode==COMP_BLEND_PINLIGHT){ +if (((colorFG.r>0.5&&colorFG.g>0.5&&colorFG.b>0.5)&&all(greaterThan(colorFG,colorBG)))|| +((colorFG.r<=0.5&&colorFG.g<=0.5&&colorFG.b<=0.5)&&all(lessThan(colorFG,colorBG)))) +return colorFG; +else +return colorBG; +} else if (blendMode==COMP_BLEND_HARDMIX){ +if (colorFG.r+colorBG.r<=1.0&&colorFG.g+colorBG.g<=1.0&&colorFG.b+colorBG.b<=1.0) +return vec4(0.0,0.0,0.0,1.0); +else +return vec4(1.0); +} else if (blendMode==COMP_BLEND_DIFFERENCE) +return abs(colorFG-colorBG); +else if (blendMode==COMP_BLEND_EXCLUSION) +return colorFG+colorBG-2.0*colorFG*colorBG; +} +vec4 calcBlendingHSV(const vec4 colorBG,const vec4 colorFG,const int blendMode) +{ +vec4 hsvBG,hsvFG; +vec4 outColor; +if (blendMode==COMP_BLEND_HUE){ +rgbToHSV(colorBG,hsvBG); +rgbToHSV(colorFG,hsvFG); +hsvToRGB(vec4(hsvFG[0],hsvBG[1],hsvBG[2],1.0),outColor); +} else if (blendMode==COMP_BLEND_SATURATION){ +rgbToHSV(colorBG,hsvBG); +rgbToHSV(colorFG,hsvFG); +hsvToRGB(vec4(hsvBG[0],hsvFG[1],hsvBG[2],1.0),outColor); +} else if (blendMode==COMP_BLEND_COLOR){ +rgbToHSV(colorBG,hsvBG); +rgbToHSV(colorFG,hsvFG); +hsvToRGB(vec4(hsvFG[0],hsvFG[1],hsvBG[2],1.0),outColor); +} else if (blendMode==COMP_BLEND_VALUE){ +rgbToHSV(colorBG,hsvBG); +rgbToHSV(colorFG,hsvFG); +hsvToRGB(vec4(hsvBG[0],hsvBG[1],hsvFG[2],1.0),outColor); +} +return outColor; +} +void node_composite_layer(const int blendMode,const float opacity,const vec4 colorBG,const vec4 colorFG,const vec4 mask,out vec4 outColor) +{ +float fac=saturate(opacity*average(mask.rgb)); +if (blendModefarDistance){ +fac=0.0; +} else { +fac=((farDistance-nearDistance)!= 0.0)?((farDistance-dist)/(farDistance-nearDistance)):10000.0; +} +color=mix(color1,color2,fac); +}`,Ape=`#define GRAD_TYPE_LINEAR 0 +#define GRAD_TYPE_RADIAL 1 +void node_gradient(float color2Pos,int gradientType,vec2 uvIn,vec3 viewPos,int mapping,int axis,ivec2 clampToEdgeNoExtend,vec3 color1,vec3 color2,vec3 color3,float uOffset,float vOffset,float uTiling,float vTiling,float wAngle,out vec4 outCol) +{ +vec3 coordsIn; +if (mapping==MAPPING_EXPLICIT_MAP_CHANNEL){ +coordsIn=vec3(uvIn.x,1.0-uvIn.y,0.0); +} else if (mapping==MAPPING_VERTEX_COLOR_CHANNEL){ +coordsIn=vec3(0.0); +} else if (mapping==MAPPING_PLANAR_OBJECT_XYZ){ +coordsIn=swizzleUpZ((invModelMatrix*invViewMatrix*vec4(-viewPos,1.0)).xyz); +} else { +coordsIn=swizzleUpZ((invViewMatrix*vec4(-vViewPosition,1.0)).xyz); +} +if (axis==AXIS_XY) +coordsIn=vec3(coordsIn.x,coordsIn.y,1.0); +else if (axis==AXIS_YZ) +coordsIn=vec3(coordsIn.y,coordsIn.z,1.0); +else if (axis==AXIS_ZX) +coordsIn=vec3(coordsIn.z,coordsIn.x,1.0); +vec3 coordsOut=calcUvTransform(uOffset,vOffset,uTiling,vTiling,wAngle)*coordsIn; +float coord=uvIn.x; +uvIn=coordsOut.xy; +if ((clampToEdgeNoExtend[0]==1&&(uvIn.x<0.0||uvIn.x>1.0))|| +(clampToEdgeNoExtend[1]==1&&(uvIn.y<0.0||uvIn.y>1.0))){ +outCol=vec4(0.0,0.0,0.0,1.0); +return; +} +uvIn=fract(uvIn); +if (gradientType==GRAD_TYPE_LINEAR){ +coord=uvIn.y; +} else { +coord=length(uvIn-vec2(0.5))*2.0; +if (coord>1.0) +coord=1.0; +} +if (coordcolor2Pos){ +coord=(coord-color2Pos)/(1.0-color2Pos); +outCol=vec4(color2*(1.0-coord)+color1*coord,1.0); +} else { +outCol=vec4(color2,1.0); +} +}`,ype=`#define GRAD_TYPE_4_CORNER 0 +#define GRAD_TYPE_BOX 1 +#define GRAD_TYPE_DIAGONAL 2 +#define GRAD_TYPE_LIGHTING 3 +#define GRAD_TYPE_LINEAR 4 +#define GRAD_TYPE_MAPPED 5 +#define GRAD_TYPE_NORMAL 6 +#define GRAD_TYPE_PONG 7 +#define GRAD_TYPE_RADIAL 8 +#define GRAD_TYPE_SPIRAL 9 +#define GRAD_TYPE_SWEEP 10 +#define GRAD_TYPE_TARTAN 11 +void node_gradient_ramp(sampler2D gradientData,int gradientType,vec2 uvIn,vec3 geometryNormal,vec3 viewPos,int mapping,int axis,ivec2 clampToEdgeNoExtend,vec4 sourceMap,float uOffset,float vOffset,float uTiling,float vTiling,float wAngle,out vec4 outCol) +{ +vec3 coordsIn; +if (mapping==MAPPING_EXPLICIT_MAP_CHANNEL){ +coordsIn=vec3(uvIn.x,1.0-uvIn.y,0.0); +} else if (mapping==MAPPING_VERTEX_COLOR_CHANNEL){ +coordsIn=vec3(0.0); +} else if (mapping==MAPPING_PLANAR_OBJECT_XYZ){ +coordsIn=swizzleUpZ((invModelMatrix*invViewMatrix*vec4(-viewPos,1.0)).xyz); +} else { +coordsIn=swizzleUpZ((invViewMatrix*vec4(-vViewPosition,1.0)).xyz); +} +if (axis==AXIS_XY) +coordsIn=vec3(coordsIn.x,coordsIn.y,1.0); +else if (axis==AXIS_YZ) +coordsIn=vec3(coordsIn.y,coordsIn.z,1.0); +else if (axis==AXIS_ZX) +coordsIn=vec3(coordsIn.z,coordsIn.x,1.0); +vec3 coordsOut=calcUvTransform(uOffset,vOffset,uTiling,vTiling,wAngle)*coordsIn; +float coord=uvIn.x; +uvIn=coordsOut.xy; +if ((clampToEdgeNoExtend[0]==1&&(uvIn.x<0.0||uvIn.x>1.0))|| +(clampToEdgeNoExtend[1]==1&&(uvIn.y<0.0||uvIn.y>1.0))){ +outCol=vec4(0.0,0.0,0.0,1.0); +return; +} +uvIn=fract(uvIn); +if (gradientType==GRAD_TYPE_4_CORNER){ +coord=pow(uvIn.x,2.0); +} else if (gradientType==GRAD_TYPE_BOX){ +vec2 boxUv=abs(uvIn-vec2(0.5))*2.0; +coord=max(boxUv.x,boxUv.y); +} else if (gradientType==GRAD_TYPE_DIAGONAL){ +coord=abs(uvIn.x-uvIn.y)*sqrt(2.0); +} else if (gradientType==GRAD_TYPE_LIGHTING){ +IncidentLight directLight; +GeometricContext geometry; +geometry.position=-viewPos; +vec3 irr=vec3(0.0); +#if (NUM_POINT_LIGHTS>0) +#pragma unroll_loop +for (int i=0;i0) +#pragma unroll_loop +for (int i=0;i0) +#pragma unroll_loop +for (int i=0;i +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +diffuse=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse; +if (selfIllumColorOn){ +diffuse+=selfIllum.rgb; +} else { +diffuse=mix(diffuse,material.diffuseColor,selfIllum[0]); +} +specular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +outColor=vec4(saturate(diffuse+specular),1.0); +float alpha=opacity-saturate(maxFromRGB(specular))*(opacity-1.0); +outColor+=reflection*specularColor*reflectionRatio; +outColor+=refraction*refractionRatio; +alpha+=saturate(maxFromRGB(reflection.rgb)*maxFromRGB(specularColor.rgb))*reflectionRatio; +alpha+=saturate(maxFromRGB(refraction.rgb))*refractionRatio; +outColor.a=alpha; +}`,Cpe=`#include +void node_matte_shadow(vec3 normal,bool receiveShadow,float shadowBrightness,vec3 color,out vec4 outColor){ +float shadow=getShadowMask(); +outColor=vec4(color,1.0-(shadowBrightness+(1.0-shadowBrightness)*shadow)); +}`,Spe=`void node_mix(const vec4 color1,const vec4 color2,const float amount,out vec4 color) +{ +color=mix(color1,color2,clamp(amount,0.0,1.0)); +}`,wpe=`#define NOISE_REGULAR 0 +#define NOISE_FRACTAL 1 +#define NOISE_TURBULENCE 2 +float noise(vec3 vec,const int noiseType,const float size,const float thresholdLow,const float thresholdHigh,const float levels,float phase){ +vec/=size; +float n=0.0; +if (noiseType==NOISE_REGULAR){ +n=(1.0+snoise(vec4(vec,phase)))*0.5; +} else if (noiseType==NOISE_FRACTAL){ +float l,f=1.0; +#if __VERSION__==100 +for (float l=3.0;l>=1.0;l-=1.0){ +#else +for (l=levels;l>=1.0;l-=1.0){ +#endif +n+=snoise(vec4(vec*f,phase))/f; +f*=2.0; +} +if (l>0.0) +n+=l*snoise(vec4(vec*f,phase))/f; +n=0.5*(n+1.0); +} else { +float l,f=1.0; +float ml=levels; +#if __VERSION__==100 +for (float l=3.0;l>=1.0;l-=1.0){ +#else +for (l=levels;l>=1.0;l-=1.0,ml-=1.0){ +#endif +n+=abs(snoise(vec4(vec*f,phase)))/f; +f*=2.0; +} +if (l>0.0) +n+=l*abs(snoise(vec4(vec*f,phase)))/f; +} +return clamp(smoothstep(thresholdLow,thresholdHigh,n),0.0,1.0); +} +void node_noise(const vec2 uv,const int noiseType,const int coordType,const vec3 color1,const vec3 color2,const float size,const float thresholdLow,const float thresholdHigh,const float levels,const float phase,const vec3 offset,const vec3 tiling,const vec3 angle,out vec4 color){ +vec3 vec=(calcXYZTransform(offset,tiling,angle)*vec4(uv.x,1.0-uv.y,1.0,1.0)).xyz; +color=vec4(mix(color1,color2,noise(vec,noiseType,size,thresholdLow,thresholdHigh,levels,phase)),1.0); +} +void node_noise(const vec3 viewPos,const int noiseType,const int coordType,const vec3 color1,const vec3 color2,const float size,const float thresholdLow,const float thresholdHigh,const float levels,const float phase,const vec3 offset,const vec3 tiling,const vec3 angle,out vec4 color){ +vec4 posWorld=invViewMatrix*vec4(-viewPos,1.0); +vec3 vec; +if (coordType==0) +vec=(invModelMatrix*posWorld).xyz; +else +vec=posWorld.xyz; +vec=(calcXYZTransform(offset,tiling,angle)*vec4(swizzleUpZ(vec),1.0)).xyz; +color=vec4(mix(color1,color2,noise(vec,noiseType,size,thresholdLow,thresholdHigh,levels,phase)),1.0); +}`,Mpe=`void node_normal_bump(const vec4 tangent,const vec3 normal,ivec2 flip,vec4 normalColor,vec3 additionalBump,float normalMult,float addBumpMult,out vec3 normalOut) +{ +if (flip[0]==1) +normalColor.x=1.0-normalColor.x; +if (flip[1]==0) +normalColor.y=1.0-normalColor.y; +vec3 normalTex=(normalColor.xyz*2.0-1.0); +vec4 viewTangent=vec4(normalize(modelViewMatrix*vec4(tangent.xyz,0.0)).xyz,tangent.w); +vec3 bitangent=viewTangent.w*cross(normal,viewTangent.xyz); +normalOut=normalize(normalTex.x*viewTangent.xyz+normalTex.y*bitangent ++ normalTex.z*normal); +normalOut=mix(normal,normalOut,normalMult); +additionalBump=mix(normal,additionalBump,addBumpMult); +normalOut=normalize(normalOut+additionalBump); +}`,Tpe=`void node_openpbr_surface(vec3 geometryNormal,const bool thinWalled,const float baseWeight,const vec3 baseColor,const float baseMetalness,const float baseDiffuseRoughness,const float specularWeight,const vec3 specularColor,const float specularRoughness,const float specularIOR,const float transmissionWeight,const vec3 transmissionColor,const float transmissionDepth,const float coatWeight,const vec3 coatColor,const float coatRoughness,const float fuzzWeight,const vec3 fuzzColor,const float fuzzRoughness,const float emissionWeight,const vec3 emissionColor,const float emissionLuminance,const float geometryOpacity,const vec3 normal,const vec3 clearcoatNormal,out vec4 outColor) +{ +NodeMaterial material; +vec3 baseColorWeighted=baseWeight*baseColor.rgb; +material.diffuseColor=baseColorWeighted*(1.0-baseMetalness)*(1.0-transmissionWeight); +#ifdef USE_CLEARCOAT +material.clearcoat=saturate(coatWeight); +material.clearcoatRoughness=clamp(coatRoughness,0.0,1.0); +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#endif +#ifdef USE_SHEEN +material.sheenColor=saturate(fuzzWeight*fuzzColor); +material.sheenRoughness=clamp(fuzzRoughness,0.0,1.0); +#endif +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z); +material.roughness=max(specularRoughness,0.0525); +material.roughness+=geometryRoughness; +material.roughness=min(material.roughness,1.0); +vec3 specularColorWeighted=specularWeight*specularColor; +vec3 dielRefl=pow2((1.0-specularIOR)/(1.0+specularIOR))*specularColorWeighted; +material.specularColor=mix(dielRefl,baseColorWeighted,baseMetalness); +material.fresnelRefl90=mix(specularColorWeighted,vec3(1.0),baseMetalness); +material.specularF90=average(material.fresnelRefl90); +material.refractionColor=pow(transmissionWeight*(1.0-baseMetalness)*transmissionColor.rgb,vec3(2.0)); +material.refractionIOR=specularIOR; +material.refractionRoughness=material.roughness; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 totalEmissiveRadiance=emissionWeight*emissionColor*emissionLuminance*OPENPBR_EMISSION_LUM_FACTOR; +vec3 outSpecular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +vec3 outColor3=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +outSpecular+totalEmissiveRadiance; +#ifdef USE_SHEEN +float sheenEnergyComp=1.0-0.157*max3(material.sheenColor); +outColor3=outColor3*sheenEnergyComp+sheenSpecular; +#endif +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +float alpha=1.0; +if (thinWalled){ +alpha=geometryOpacity*(1.0-saturate(transmissionWeight)+maxFromRGB(outSpecular)*saturate(transmissionWeight)); +} else { +outColor3+=refractedLight; +} +outColor=vec4(outColor3,saturate(alpha)); +}`,Ipe=`vec4 processOutputColor(vec4 color,const bool invert,const bool clampColor,const bool alphaFromRGB,const float rgbLevel,const float rgbOffset,const float outputAmount) +{ +vec3 color3=color.rgb; +color3=clampColor?saturate(color3):color3; +color3=color3*rgbLevel+vec3(rgbOffset); +color3=invert?(vec3(1.0)-color3):color3; +color=outputAmount*vec4(color3,color.a); +color.a=alphaFromRGB?average(color.rgb):color.a; +return color; +} +void node_output_map(const bool invert,const bool clampColor,const bool alphaFromRGB,const vec4 color,const float rgbLevel,const float rgbOffset,const float outputAmount,const float bumpAmount,out vec4 outColor) +{ +outColor=processOutputColor(color,invert,clampColor,alphaFromRGB,rgbLevel,rgbOffset,outputAmount); +} +void node_output_map(const bool invert,const bool clampColor,const bool alphaFromRGB,sampler2D colormap,vec4 color,const float rgbLevel,const float rgbOffset,const float outputAmount,const float bumpAmount,out vec4 outColor) +{ +float r=texture2D(colormap,vec2(color.r,0.0)).r; +float g=texture2D(colormap,vec2(color.g,0.0)).g; +float b=texture2D(colormap,vec2(color.b,0.0)).b; +outColor=processOutputColor(vec4(r,g,b,color.a),invert,clampColor,alphaFromRGB,rgbLevel,rgbOffset,outputAmount); +}`,Rpe=`void node_output(vec4 color,out vec4 outgoingLight) +{ +outgoingLight=color; +}`,Lpe=`#define DEFAULT_REFLECTION_EDGE 1.0 +#define DEFAULT_REFLECTION_SLOPE 5.0 +void node_physical(vec3 geometryNormal,const float emitLuminance,const bool useCustomReflCurve,const float reflFacing,const float reflEdge,const float reflSlope,const bool roughnessInv,const bool transRoughnessLock,const bool transRoughnessInv,const bool thinWalled,const float base,const vec4 baseColor,const float reflectivity,const vec4 reflColor,const float roughness,const float metalness,const float diffRoughness,const float anisotropy,const float anisoangle,const float transparency,const vec4 transColor,const float transRoughness,const float ior,const float scattering,const vec4 sssColor,const float sssScale,const float emission,const vec4 emitColor,const float clearcoat,const vec4 clearcoatColor,const float clearcoatRoughness,const vec3 normal,const vec3 clearcoatNormal,const float displacement,const float opacity,out vec4 outColor) +{ +NodeMaterial material; +vec3 baseColorWeighted=base*baseColor.rgb; +material.diffuseColor=baseColorWeighted*(1.0-transparency); +#ifdef USE_CLEARCOAT +material.clearcoat=saturate(clearcoat); +material.clearcoatRoughness=clamp(clearcoatRoughness,0.0,1.0); +material.clearcoatF0=vec3(0.04); +material.clearcoatF90=1.0; +#endif +float facing,edge,slope; +if (useCustomReflCurve){ +facing=reflFacing; +edge=reflEdge; +slope=reflSlope; +} else { +facing=pow2((1.0-ior)/(1.0+ior)); +edge=DEFAULT_REFLECTION_EDGE; +slope=DEFAULT_REFLECTION_SLOPE; +} +float cosTheta=saturate(dot(normal,normalize(vViewPosition))); +float fresnelRefl=(facing+(edge-facing)*pow(1.0-cosTheta,slope)) +* saturate(reflectivity+metalness); +float kd=1.0-(metalness*(1.0-fresnelRefl)+fresnelRefl); +material.specularColor=mix(metalness*baseColorWeighted,reflColor.rgb,fresnelRefl); +material.diffuseColor*=kd; +material.specularF90=1.0; +material.roughness=clamp(roughnessInv?(1.0-roughness):roughness,0.0,1.0); +material.refractionColor=pow(transparency*(1.0-metalness)*transColor.rgb,vec3(2.0)); +material.refractionIOR=ior; +float tRough; +if (transRoughnessLock){ +tRough=roughnessInv?1.0-roughness:roughness; +} else { +tRough=transRoughnessInv?1.0-transRoughness:transRoughness; +} +material.refractionRoughness=pow2(tRough); +#if defined(ENVMAP_TYPE_CUBE)||defined(ENVMAP_TYPE_CUBE_UV) +float geomRoughness=calcGeometryRoughness(geometryNormal); +material.roughness=calcCubeUVAdjustedRoughness(material.roughness,geomRoughness); +material.refractionRoughness=calcCubeUVAdjustedRoughness(material.refractionRoughness,geomRoughness); +#ifdef USE_CLEARCOAT +material.clearcoatRoughness=calcCubeUVAdjustedRoughness(material.clearcoatRoughness,geomRoughness); +#endif +#endif +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +vec3 refractedLight=vec3(0.0); +#ifdef USE_GTAO +vec4 gtaoVisibilityBentNormal=texture2D(gtaoMap,gl_FragCoord.xy/currResolution); +vec3 bentNormal=normalize(unpackRGBToNormal(gtaoVisibilityBentNormal.gba)); +#define PROBE_NORMAL bentNormal +#endif +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#define RE_Refraction RE_Refraction_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 totalEmissiveRadiance=emitLuminance/LUMENS_PER_WATT*emission*emitColor.rgb; +vec3 specular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +vec3 outColor3=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +specular+totalEmissiveRadiance; +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +float alpha=1.0; +if (thinWalled){ +alpha=1.0-saturate(transparency)+maxFromRGB(specular)*saturate(transparency); +} else { +outColor3+=refractedLight; +} +outColor=vec4(outColor3,saturate(alpha)*opacity); +}`,Ppe=`vec3 perezSky(vec3 paramA,vec3 paramB,vec3 paramC,vec3 paramD,vec3 paramE,vec3 radiance,vec3 sunDirection,vec3 direction) +{ +float cosGamma=clamp(dot(direction,sunDirection),-1.0,1.0); +float cosTheta=clamp(direction.y,0.0,1.0); +vec3 radInternal=(1.0+paramA*exp(paramB/cosTheta))*(1.0+paramC*exp(paramD*acos(cosGamma)) ++ paramE*pow(cosGamma,2.0) +); +float ciex=radInternal.y*radiance.y; +float ciey=radInternal.z*radiance.z; +float cieY=clamp(radInternal.x*radiance.x,0.0,1000000.0); +vec3 XYZ=xyY_to_XYZ(ciex,ciey,cieY); +return max(xyz_to_sRGB(XYZ),0.0); +} +#define GROUND_SKY_SAMPLES 16 +vec3 groundSky(vec3 paramA,vec3 paramB,vec3 paramC,vec3 paramD,vec3 paramE,vec3 radiance,vec3 sunDirection,vec3 sunIlluminance) +{ +const int horizSamples=GROUND_SKY_SAMPLES; +const int vertSamples=GROUND_SKY_SAMPLES/2; +vec3 result=vec3(0.0); +for (int horizSampleIdx=0;horizSampleIdx +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +float alpha=1.0-average(transparency); +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +reflectedLight.directSpecular+reflectedLight.indirectSpecular+incandescence,alpha); +}`,Ype=`void node_bulge(float uWidth,float vWidth,vec2 uvCoord,out float outAlpha,out vec3 outColor){ +uvCoord=2.0*fract(uvCoord); +float bulge=0.0; +if (uvCoord.x>uWidth&&uvCoord.x<2.0-uWidth && +uvCoord.y>vWidth&&uvCoord.y<2.0-vWidth){ +uvCoord.x=(uvCoord.x-uWidth)/(1.0-uWidth); +uvCoord.y=(uvCoord.y-vWidth)/(1.0-vWidth); +bulge=uvCoord.x*(2.0-uvCoord.x)*uvCoord.y*(2.0-uvCoord.y); +} +outAlpha=bulge; +outColor=vec3(bulge,bulge,bulge); +}`,Xpe=`void node_bump_2d(vec3 normal,float bumpDepth,float bumpValue,out vec3 outNormal){ +vec3 position=vViewPosition; +vec3 dPdx=dFdx(position); +vec3 dPdy=dFdy(position); +float dHdx=dFdx(bumpValue); +float dHdy=dFdy(bumpValue); +vec3 tanX=cross(dPdy,normal); +vec3 tanY=cross(normal,dPdx); +vec3 surfaceGrad=dHdx*tanX+dHdy*tanY; +float dotPosTanX=dot(dPdx,tanX); +outNormal=normalize(normal*abs(dotPosTanX)-surfaceGrad*sign(dotPosTanX)); +outNormal=normalize(mix(normal,outNormal,max(0.0,bumpDepth))); +} +void node_bump_2d(vec3 normal,vec4 tangent,float bumpDepth,vec3 bumpValue,out vec3 outNormal){ +#ifdef DOUBLE_SIDED +normal=normal*(float(gl_FrontFacing)*2.0-1.0); +#endif +if (length(tangent.xyz)==0.0) +tangent.x=1.0; +vec3 normalTex=(bumpValue.xyz*2.0-1.0); +vec4 viewTangent=vec4(normalize((modelViewMatrix*vec4(tangent.xyz,0.0)).xyz),tangent.w); +vec3 bitangent=viewTangent.w*cross(normal,viewTangent.xyz); +outNormal=normalize(normalTex.x*viewTangent.xyz+normalTex.y*bitangent ++ normalTex.z*normal); +outNormal=mix(normal,outNormal,bumpDepth); +}`,qpe=`void node_channels(int channelR,int channelG,int channelB,int channelA,float inAlpha,vec3 inColor,out float outAlpha,out vec3 outColor){ +outAlpha=1.0; +outColor=vec3(1.0); +if (channelR==0) +outColor.r=inColor.r; +else if (channelR==1) +outColor.r=inColor.g; +else if (channelR==2) +outColor.r=inColor.b; +else +outColor.r=inAlpha; +if (channelG==0) +outColor.g=inColor.r; +else if (channelG==1) +outColor.g=inColor.g; +else if (channelG==2) +outColor.g=inColor.b; +else +outColor.g=inAlpha; +if (channelB==0) +outColor.b=inColor.r; +else if (channelB==1) +outColor.b=inColor.g; +else if (channelB==2) +outColor.b=inColor.b; +else +outColor.b=inAlpha; +if (channelA==0) +outAlpha=inColor.r; +else if (channelA==1) +outAlpha=inColor.g; +else if (channelA==2) +outAlpha=inColor.b; +else +outAlpha=inAlpha; +}`,Kpe=`void node_checker(vec3 color1,vec3 color2,float contrast,vec2 uvCoord,out float outAlpha,out vec3 outColor){ +uvCoord-=floor(uvCoord); +vec3 deltaColor=color2-color1; +color1+=(1.0-contrast)*0.5*deltaColor; +color2-=(1.0-contrast)*0.5*deltaColor; +if ((uvCoord.x<0.5&&uvCoord.y>=0.5)||(uvCoord.x>=0.5&&uvCoord.y<0.5)){ +outColor=color2; +outAlpha=1.0; +} else { +outColor=color1; +outAlpha=0.0; +} +}`,Zpe=`void node_clamp(vec3 inputValue,vec3 maxValue,vec3 minValue,out vec3 outputValue){ +outputValue=clamp(inputValue,minValue,maxValue); +}`,Jpe=`void node_cloth(float brightSpread,vec3 gapColor,float randomness,vec3 uColor,float uWave,float uWidth,vec3 vColor,float vWave,float vWidth,float widthSpread,vec2 uvCoord,out float outAlpha,out vec3 outColor){ +if (abs(uWave)>-EPSILON||abs(vWave)>-EPSILON){ +uvCoord.x+=- uWave*sin(PI2*uvCoord.y); +uvCoord.y+=vWave*sin(PI2*uvCoord.x); +} +uvCoord=fract(uvCoord); +int thread=0; +if ((uvCoord.x>=0.5&&uvCoord.y<0.5)||(uvCoord.x<0.5&&uvCoord.y>=0.5)){ +float flippedCoord; +flippedCoord=uvCoord.x; +uvCoord.x=uvCoord.y; +uvCoord.y=flippedCoord; +flippedCoord=uWidth; +uWidth=vWidth; +vWidth=flippedCoord; +thread=1; +} +uvCoord=fract(2.0*uvCoord); +float cloth=1.0; +if (uvCoord.y<=vWidth){ +float clothU=uvCoord.x-0.5*uWidth; +float clothV=2.0*uvCoord.y/vWidth-1.0; +cloth=0.75*(clothU*clothU+clothV*clothV); +} else if (uvCoord.x<=uWidth){ +float clothU=2.0*uvCoord.x/uWidth-1.0; +float clothV=uvCoord.y-0.5*vWidth-1.0; +cloth=0.75*(clothU*clothU+clothV*clothV); +thread=1-thread; +} +outColor=gapColor; +if (cloth<1.0){ +cloth=1.0-cloth; +cloth=min(cloth,1.0); +outColor*=(1.0-cloth); +vec3 threadColor=uColor; +if (thread==0) +threadColor=vColor; +outColor+=threadColor*cloth; +} +outAlpha=dot(outColor,LUM_WEIGHTS_MAYA); +}`,eme=`void node_color_condition(float alphaA,float alphaB,vec3 colorA,vec3 colorB,bool condition,out float outAlpha,out vec3 outColor){ +outAlpha=condition?alphaA:alphaB; +outColor=condition?colorA:colorB; +}`,tme=`void node_color_composite(int operation,vec3 colorA,float alphaA,vec3 colorB,float alphaB,float factor,out vec3 outColor,out float outAlpha) +{ +if (factor<=0.0){ +outColor=colorA; +outAlpha=alphaA; +return; +} +if (operation==0){ +outColor[0]=colorA[0]+(colorB[0]*factor); +outColor[1]=colorA[1]+(colorB[1]*factor); +outColor[2]=colorA[2]+(colorB[2]*factor); +outAlpha=alphaA+(alphaB*factor); +} else if (operation==1){ +outColor[0]=colorA[0]+((colorB[0]-1.0)*factor); +outColor[1]=colorA[1]+((colorB[1]-1.0)*factor); +outColor[2]=colorA[2]+((colorB[2]-1.0)*factor); +outAlpha=alphaA+((alphaB-1.0)*factor); +} else if (operation==2){ +if (factor>=1.0){ +outColor=colorB; +outAlpha=alphaB; +return; +} +outColor[0]=mix(colorA[0],colorB[0],factor); +outColor[1]=mix(colorA[1],colorB[1],factor); +outColor[2]=mix(colorA[2],colorB[2],factor); +outAlpha=mix(alphaA,alphaB,factor); +} else if (operation==3){ +outColor[0]=colorA[0]*(colorB[0]*factor+(1.0-factor)); +outColor[1]=colorA[1]*(colorB[1]*factor+(1.0-factor)); +outColor[2]=colorA[2]*(colorB[2]*factor+(1.0-factor)); +outAlpha=alphaA*(alphaB*factor+(1.0-factor)); +} else if (operation==4){ +outColor[0]=1.0-((1.0-colorA[0])*(1.0-colorB[0]*factor)); +outColor[1]=1.0-((1.0-colorA[1])*(1.0-colorB[1]*factor)); +outColor[2]=1.0-((1.0-colorA[2])*(1.0-colorB[2]*factor)); +outAlpha=1.0-((1.0-alphaA)*(1.0-alphaB*factor)); +} else if (operation==5){ +outColor[0]=colorB[0]>0.5?(2.0*colorA[0]*colorB[0]*factor)+colorA[0]*(1.0-factor): +1.0-((1.0-colorA[0])*(1.0-colorB[0]*factor))*(2.0-(1.0-factor)); +outColor[1]=colorB[1]>0.5?(2.0*colorA[1]*colorB[1]*factor)+colorA[1]*(1.0-factor): +1.0-((1.0-colorA[1])*(1.0-colorB[1]*factor))*(2.0-(1.0-factor)); +outColor[2]=colorB[2]>0.5?(2.0*colorA[2]*colorB[2]*factor)+colorA[2]*(1.0-factor): +1.0-((1.0-colorA[2])*(1.0-colorB[2]*factor))*(2.0-(1.0-factor)); +outAlpha=alphaB>0.5?(2.0*alphaA*alphaB*factor)+alphaA*(1.0-factor): +1.0-((1.0-alphaA)*(1.0-alphaB*factor))*(2.0-(1.0-factor)); +} else if (operation==6){ +outColor[0]=abs(colorA[0]-(colorB[0]*factor)); +outColor[1]=abs(colorA[1]-(colorB[1]*factor)); +outColor[2]=abs(colorA[2]-(colorB[2]*factor)); +outAlpha=abs(alphaA-(alphaB*factor)); +} else if (operation==7){ +outColor[0]=clamp(mix(colorA[0],colorA[0]/max(1.0-colorB[0],0.00001),factor),colorA[0],colorB[0]); +outColor[1]=clamp(mix(colorA[1],colorA[1]/max(1.0-colorB[1],0.00001),factor),colorA[1],colorB[1]); +outColor[2]=clamp(mix(colorA[2],colorA[2]/max(1.0-colorB[2],0.00001),factor),colorA[2],colorB[2]); +outAlpha=clamp(mix(alphaA,alphaA/max(1.0-alphaB,0.00001),factor),alphaA,alphaB); +} else if (operation==8){ +outColor[0]=clamp(mix(colorA[0],1.0-(colorA[0]/max(1.0-colorB[0],0.00001)),factor),colorA[0],colorB[0]); +outColor[1]=clamp(mix(colorA[1],1.0-(colorA[1]/max(1.0-colorB[1],0.00001)),factor),colorA[1],colorB[1]); +outColor[2]=clamp(mix(colorA[2],1.0-(colorA[2]/max(1.0-colorB[2],0.00001)),factor),colorA[2],colorB[2]); +outAlpha=clamp(mix(alphaA,1.0-(alphaA/max(1.0-alphaB,0.00001)),factor),alphaA,alphaB); +} +}`,nme=`void node_color_constant(vec3 inColor,float inAlpha,out vec3 outColor,out float outAlpha) +{ +outColor=inColor; +outAlpha=inAlpha; +}`,rme=`void node_color_correct(bool colClamp,vec3 colClampMin,vec3 colClampMax,bool alphaClamp,float alphaClampMin,float alphaClampMax,bool unpremultInput,bool premultResult,float alphaGain,float alphaGamma,float alphaOffset,vec3 colGain,vec3 colGamma,vec3 colOffset,float hueShift,float inAlpha,vec3 inColor,float satGain,float valGain,out float outAlpha,out vec3 outColor) +{ +outColor=unpremultInput?inColor/inAlpha:inColor; +if (hueShift != 0.0||satGain != 1.0||valGain != 1.0){ +vec4 color=vec4(outColor,1.0); +rgbToHSV(vec4(inColor,1.0),color); +color.r+=hueShift/360.0; +if (color.r>1.0) +color.r-=1.0; +else if (color.r<0.0) +color.r+=1.0; +color.g*=satGain; +color.b*=valGain; +hsvToRGB(color,color); +outColor=color.rgb; +} +outColor*=colGain; +outColor+=colOffset; +if (any(notEqual(colGamma,vec3(1.0)))) +outColor=pow(outColor,1.0/colGamma); +if (colClamp) +outColor=clamp(outColor,colClampMin,colClampMax); +outAlpha=inAlpha*alphaGain; +outAlpha+=alphaOffset; +if (alphaGamma != 1.0) +outAlpha=pow(outAlpha,1.0/alphaGamma); +if (alphaClamp) +outAlpha=clamp(outAlpha,alphaClampMin,alphaClampMax); +if (premultResult) +outColor*=outAlpha; +}`,ome=`void node_color_logic(int operation,vec3 colorA,vec3 colorB,out bool outBool){ +if (operation==0){ +outBool=all(equal(colorA,colorB)); +} else if (operation==1){ +outBool=any(notEqual(colorA,colorB)); +} else if (operation==2){ +outBool=((colorA.x+colorA.y+colorA.z)<(colorB.x+colorB.y+colorB.z)); +} else if (operation==3){ +outBool=((colorA.x+colorA.y+colorA.z)>(colorB.x+colorB.y+colorB.z)); +} else if (operation==4){ +outBool=((colorA.x+colorA.y+colorA.z)<=(colorB.x+colorB.y+colorB.z)); +} else { +outBool=((colorA.x+colorA.y+colorA.z)>=(colorB.x+colorB.y+colorB.z)); +} +}`,ime=`void node_color_mask(bool maskAlphaIsLuminance,float inAlpha,vec3 inColor,vec3 mask,float maskAlpha,out float outAlpha,out vec3 outColor){ +if (maskAlphaIsLuminance) +maskAlpha=1.0-dot(mask,LUM_WEIGHTS_MAYA); +outColor=inColor*(1.0-maskAlpha); +}`,ame=`void node_color_math(int operation,float alphaA,float alphaB,vec3 colorA,vec3 colorB,out float outAlpha,out vec3 outColor){ +if (operation==0){ +outColor=colorA+colorB; +outAlpha=alphaA+alphaB; +} else if (operation==1){ +outColor=colorA-colorB; +outAlpha=alphaA-alphaB; +} else if (operation==2){ +outColor=colorA*colorB; +outAlpha=alphaA*alphaB; +} else if (operation==3){ +outColor=colorA/colorB; +outAlpha=alphaA/alphaB; +} else if (operation==4){ +outColor=min(colorA,colorB); +outAlpha=min(alphaA,alphaB); +} else { +outColor=max(colorA,colorB); +outAlpha=max(alphaA,alphaB); +} +}`,sme=`mat3 quatToMat3(vec4 quat){ +float x=quat.x,y=quat.y,z=quat.z,w=quat.w; +float x2=x+x; +float y2=y+y; +float z2=z+z; + +float xx=x*x2; +float yx=y*x2; +float yy=y*y2; +float zx=z*x2; +float zy=z*y2; +float zz=z*z2; +float wx=w*x2; +float wy=w*y2; +float wz=w*z2; + +mat3 mat; + +mat[0][0]=1.0-yy-zz; +mat[1][0]=yx-wz; +mat[2][0]=zx+wy; + +mat[0][1]=yx+wz; +mat[1][1]=1.0-xx-zz; +mat[2][1]=zy-wx; + +mat[0][2]=zx-wy; +mat[1][2]=zy+wx; +mat[2][2]=1.0-xx-yy; +return mat; +} +void node_compose_matrix(bool useEulerRotation,int inputRotateOrder,vec4 inputQuat,vec3 inputRotate,vec3 inputScale,vec3 inputShear,vec3 inputTranslate,out mat4 outputMatrix) +{ +mat4 rotateMatrix; +inputRotate=radians(inputRotate); +if (useEulerRotation) +rotateMatrix=toMat4(mat3RotateX(inputRotate.x)*mat3RotateY(inputRotate.y)*mat3RotateZ(inputRotate.z)); +else +rotateMatrix=toMat4(quatToMat3(normalize(inputQuat))); +mat4 scaleMatrix=mat4(inputScale.x,0.0,0.0,0.0,0.0,inputScale.y,0.0,0.0,0.0,0.0,inputScale.z,0.0,0.0,0.0,0.0,1.0); +mat4 shearMatrix=mat4(1.0,0.0,0.0,0.0,inputShear.x,1.0,0.0,0.0,inputShear.y,inputShear.z,1.0,0.0,0.0,0.0,0.0,1.0); +mat4 transMatrix=mat4(1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,inputTranslate.x,inputTranslate.y,inputTranslate.z,1.0); +outputMatrix=scaleMatrix*shearMatrix*rotateMatrix*transMatrix; +}`,lme=`void node_condition(int operation,vec3 colorIfFalse,vec3 colorIfTrue,float firstTerm,float secondTerm,out vec3 outColor){ +if (operation==0){ +if (firstTerm==secondTerm) +outColor=colorIfTrue; +else +outColor=colorIfFalse; +} else if (operation==1){ +if (firstTerm != secondTerm) +outColor=colorIfTrue; +else +outColor=colorIfFalse; +} else if (operation==2){ +if (firstTerm>secondTerm) +outColor=colorIfTrue; +else +outColor=colorIfFalse; +} else if (operation==3){ +if (firstTerm>=secondTerm) +outColor=colorIfTrue; +else +outColor=colorIfFalse; +} else if (operation==4){ +if (firstTerm0.0){ +float s=sqrt(trace+1.0)*2.0; +q.w=0.25*s; +q.x=(m[2][1]-m[1][2])/s; +q.y=(m[0][2]-m[2][0])/s; +q.z=(m[1][0]-m[0][1])/s; +} else if ((m[0][0]>m[1][1])&&(m[0][0]>m[2][2])){ +float s=sqrt(1.0+m[0][0]-m[1][1]-m[2][2])*2.0; +q.w=(m[2][1]-m[1][2])/s; +q.x=0.25*s; +q.y=(m[0][1]+m[1][0])/s; +q.z=(m[0][2]+m[2][0])/s; +} else if (m[1][1]>m[2][2]){ +float s=sqrt(1.0+m[1][1]-m[0][0]-m[2][2])*2.0; +q.w=(m[0][2]-m[2][0])/s; +q.x=(m[0][1]+m[1][0])/s; +q.y=0.25*s; +q.z=(m[1][2]+m[2][1])/s; +} else { +float s=sqrt(1.0+m[2][2]-m[0][0]-m[1][1])*2.0; +q.w=(m[1][0]-m[0][1])/s; +q.x=(m[0][2]+m[2][0])/s; +q.y=(m[1][2]+m[2][1])/s; +q.z=0.25*s; +} +return q; +} +vec3 mat3ToEuler(mat3 m){ +float m11=m[0][0],m12=m[1][0],m13=m[2][0]; +float m21=m[0][1],m22=m[1][1],m23=m[2][1]; +float m31=m[0][2],m32=m[1][2],m33=m[2][2]; +vec3 euler; +euler.y=asin(clamp(m13,-1.0,1.0)); +if (abs(m13)<0.9999999){ +euler.x=atan(-m23,m33); +euler.z=atan(-m12,m11); +} else { +euler.x=atan(m32,m22); +euler.z=0.0; +} +return euler; +} +void decomposeMat4(mat4 m,out vec3 position,out vec4 quat,out vec3 euler,out vec3 scale){ +float sx=length(vec3(m[0][0],m[0][1],m[0][2])); +float sy=length(vec3(m[1][0],m[1][1],m[1][2])); +float sz=length(vec3(m[2][0],m[2][1],m[2][2])); +float det=mat3GetDeterminant(toMat3(m)); +if (det<0.0) +sx=-sx; +position.x=m[3][0]; +position.y=m[3][1]; +position.z=m[3][2]; +float invSX=1.0/sx; +float invSY=1.0/sy; +float invSZ=1.0/sz; +m[0][0]*=invSX; +m[0][1]*=invSX; +m[0][2]*=invSX; +m[1][0]*=invSY; +m[1][1]*=invSY; +m[1][2]*=invSY; +m[2][0]*=invSZ; +m[2][1]*=invSZ; +m[2][2]*=invSZ; +quat=mat3ToQuat(toMat3(m)); +euler=mat3ToEuler(toMat3(m)); +scale.x=sx; +scale.y=sy; +scale.z=sz; +} +void node_decompose_matrix(mat4 inputMatrix,out vec4 outputQuat,out vec3 outputRotate,out vec3 outputScale,out vec3 outputShear,out vec3 outputTranslate) +{ +decomposeMat4(inputMatrix,outputTranslate,outputQuat,outputRotate,outputScale); +outputShear=vec3(0.0,0.0,0.0); +}`,ume=`void node_env_sphere(sampler2D envMap,int encoding,vec3 normal,mat4 placementMatrix,out float outAlpha,out vec3 outColor) +{ +vec3 cameraToVertex=normalize(vWorldPosition-cameraPosition); +vec3 reflectVec; +#if WORLD_NODES +reflectVec=normalize(cameraToVertex); +#else +vec3 worldNormal=inverseTransformDirection(normal,viewMatrix); +reflectVec=reflect(cameraToVertex,worldNormal); +#endif +mat3 uvTransform=mat3(1.0); +reflectVec=toMat3(placementMatrix)*reflectVec; +vec4 tex=sampleEquirectangular(envMap,reflectVec,uvTransform,encoding); +outAlpha=tex.a; +outColor=tex.rgb; +}`,dme=`void node_file(sampler2D ima,const int encoding,const bool rgbToAlpha,vec2 uvCoord,out float outAlpha,out vec3 outColor,out vec2 outSize,out vec3 outTransparency){ +vec2 uv=vec2(uvCoord.x,1.0-uvCoord.y); +vec4 tex=texture2D(ima,uv); +outColor=nodeTexelToLinear(tex,encoding).rgb; +if (rgbToAlpha) +outAlpha=dot(tex.rgb,LUM_WEIGHTS_MAYA); +else +outAlpha=tex.a; +outSize=vec2(0.0); +outTransparency=vec3(1.0-outAlpha,1.0-outAlpha,1.0-outAlpha); +}`,fme=`void node_float_condition(bool condition,float floatA,float floatB,out float outFloat){ +outFloat=condition?floatA:floatB; +}`,hme=`void node_float_composite(int operation,float floatA,float floatB,float factor,out float outFloat) +{ +if (factor<=0.0){ +outFloat=floatA; +return; +} +if (operation==0){ +outFloat=floatA+(floatB*factor); +} else if (operation==1){ +outFloat=floatA+((floatB-1.0)*factor); +} else if (operation==2){ +if (factor>=1.0){ +outFloat=floatB; +return; +} +outFloat=mix(floatA,floatB,factor); +} else if (operation==3){ +outFloat=floatA*(floatB*factor+(1.0-factor)); +} else if (operation==4){ +outFloat=1.0-((1.0-floatA)*(1.0-floatB*factor)); +} else if (operation==5){ +outFloat=floatB>0.5?(2.0*floatA*floatB*factor)+floatA*(1.0-factor): +1.0-((1.0-floatA)*(1.0-floatB*factor))*(2.0-(1.0-factor)); +} else if (operation==6){ +outFloat=abs(floatA-(floatB*factor)); +} else if (operation==7){ +outFloat=clamp(mix(floatA,floatA/max(1.0-floatB,0.00001),factor),floatA,floatB); +} else if (operation==8){ +outFloat=clamp(mix(floatA,1.0-(floatA/max(1.0-floatB,0.00001)),factor),floatA,floatB); +} +}`,pme=`void node_float_constant(float value,out float outValue) +{ +outValue=value; +}`,mme=`void node_float_logic(int operation,float floatA,float floatB,out bool outBool){ +if (operation==0){ +outBool=(floatA==floatB); +} else if (operation==1){ +outBool=(floatA != floatB); +} else if (operation==2){ +outBool=(floatAfloatB); +} else if (operation==4){ +outBool=(floatA<=floatB); +} else { +outBool=(floatA>=floatB); +} +}`,gme=`void node_float_mask(float inFloat,float mask,out float outFloat){ +outFloat=inFloat-mask; +}`,_me=`void node_float_math(int operation,float floatA,float floatB,out float outFloat){ +if (operation==0){ +outFloat=floatA+floatB; +} else if (operation==1){ +outFloat=floatA-floatB; +} else if (operation==2){ +outFloat=floatA*floatB; +} else if (operation==3){ +outFloat=floatA/floatB; +} else if (operation==4){ +outFloat=min(floatA,floatB); +} else if (operation==5){ +outFloat=max(floatA,floatB); +} else { +outFloat=pow(floatA,floatB); +} +}`,vme=`void node_four_by_four_matrix(float in00,float in01,float in02,float in03,float in10,float in11,float in12,float in13,float in20,float in21,float in22,float in23,float in30,float in31,float in32,float in33,out mat4 outMatrix) +{ +outMatrix=mat4(in00,in01,in02,in03,in10,in11,in12,in13,in20,in21,in22,in23,in30,in31,in32,in33); +}`,Ame=`void node_gamma_correct(vec3 gamma,vec3 value,out vec3 outValue){ +outValue=pow(value,1.0/gamma); +}`,yme=`void node_grid(float contrast,vec3 fillerColor,vec3 lineColor,float uWidth,float vWidth,vec2 uvCoord,out float outAlpha,out vec3 outColor){ +uvCoord=fract(uvCoord); +float v0=max(uvCoord.y,0.5*vWidth); +float v1=min(uvCoord.y,1.0-0.5*vWidth); +float u0=max(uvCoord.x,0.5*uWidth); +float u1=min(uvCoord.x,1.0-0.5*uWidth); +float gridFactor=(v0<=v1&&u0<=u1)?1.0:0.0; +gridFactor=0.5-contrast*(gridFactor-0.5); +gridFactor=max(gridFactor,0.0); +vec3 gridColor=mix(fillerColor,lineColor,gridFactor); +gridColor.r=max(gridColor.r,0.0); +gridColor.g=max(gridColor.g,0.0); +gridColor.b=max(gridColor.b,0.0); +outAlpha=saturate(gridFactor); +outColor=gridColor; +}`,bme=` +mat4 inverseMat4(mat4 m){ +float a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3]; +float b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32; +float det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06; +return mat4(a11*b11-a12*b10+a13*b09,a02*b10-a01*b11-a03*b09,a31*b05-a32*b04+a33*b03,a22*b04-a21*b05-a23*b03,a12*b08-a10*b11-a13*b07,a00*b11-a02*b08+a03*b07,a32*b02-a30*b05-a33*b01,a20*b05-a22*b02+a23*b01,a10*b10-a11*b08+a13*b06,a01*b08-a00*b10-a03*b06,a30*b04-a31*b02+a33*b00,a21*b02-a20*b04-a23*b00,a11*b07-a10*b09-a12*b06,a00*b09-a01*b07+a02*b06,a31*b01-a30*b03-a32*b00,a20*b03-a21*b01+a22*b00)/det; +} +void node_inverse_matrix(mat4 inputMatrix,out mat4 outputMatrix) +{ +outputMatrix=inverseMat4(inputMatrix); +}`,xme=`void node_lambert(vec3 geometryNormal,vec3 color,vec3 ambientColor,vec3 incandescence,float matteOpacity,float diffuse,vec3 normal,float translucence,vec3 transparency,out vec4 outColor){ +NodeMaterial material; +material.diffuseColor=diffuse*color.rgb; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +#define RE_Direct RE_DirectDiffuseOnly_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +float alpha=1.0-average(transparency); +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+incandescence,alpha); +}`,Eme=`#define LAYER_BLEND_MODE_NONE 0.0 +#define LAYER_BLEND_MODE_OVER 1.0 +#define LAYER_BLEND_MODE_IN 2.0 +#define LAYER_BLEND_MODE_OUT 3.0 +#define LAYER_BLEND_MODE_ADD 4.0 +#define LAYER_BLEND_MODE_SUBTRACT 5.0 +#define LAYER_BLEND_MODE_MULTIPLY 6.0 +#define LAYER_BLEND_MODE_DIFFERENCE 7.0 +#define LAYER_BLEND_MODE_LIGHTEN 8.0 +#define LAYER_BLEND_MODE_DARKEN 9.0 +#define LAYER_BLEND_MODE_SATURATE 10.0 +#define LAYER_BLEND_MODE_DESATURATE 11.0 +#define LAYER_BLEND_MODE_ILLUMINATE 12.0 +void node_layered_texture_layer(const float alphaBG,const vec3 colorBG,const vec3 color,const float alpha,const float blendMode,const bool isVisible,out float outAlpha,out vec3 outColor) +{ +outAlpha=alphaBG; +outColor=colorBG; +if (!isVisible) +return; +if (blendMode==LAYER_BLEND_MODE_NONE){ +outColor=color; +} else if (blendMode==LAYER_BLEND_MODE_OVER){ +outColor=mix(colorBG,color,alpha); +} else if (blendMode==LAYER_BLEND_MODE_IN){ +outColor=alpha*colorBG; +} else if (blendMode==LAYER_BLEND_MODE_OUT){ +outColor=(1.0-alpha)*colorBG; +} else if (blendMode==LAYER_BLEND_MODE_ADD){ +outColor=mix(colorBG,colorBG+color,alpha); +} else if (blendMode==LAYER_BLEND_MODE_SUBTRACT){ +outColor=mix(colorBG,colorBG-color,alpha); +} else if (blendMode==LAYER_BLEND_MODE_MULTIPLY){ +outColor=mix(colorBG,colorBG*color,alpha); +} else { +outColor=mix(colorBG,color,alpha); +} +}`,Cme=`void node_luminance(vec3 value,out float outValue){ +outValue=dot(value,LUM_WEIGHTS_MAYA); +}`,Sme=`void node_multiply_divide(int operation,vec3 input1,vec3 input2,out vec3 outValue){ +if (operation==0){ +outValue=input1; +} else if (operation==1){ +outValue=input1*input2; +} else if (operation==2){ + +outValue=input1/input2; +} else { +outValue=pow(input1,input2); +} +}`,wme=`void node_mult_double_linear(float input1,float input2,out float outValue){ +outValue=input1*input2; +}`,Mme=` +void node_mult_matrix(mat4 matrixIn1,out mat4 matrixSum) +{ +matrixSum=matrixIn1; +} +void node_mult_matrix(mat4 matrixIn1,mat4 matrixIn2,out mat4 matrixSum) +{ +matrixSum=matrixIn2*matrixIn1; +} +void node_mult_matrix(mat4 matrixIn1,mat4 matrixIn2,mat4 matrixIn3,out mat4 matrixSum) +{ +matrixSum=matrixIn3*matrixIn2*matrixIn1; +}`,Tme=`vec2 calcNoiseImplode(float implode,vec2 implodeCenter,vec2 uv){ +if (abs(implode)>=EPSILON){ +uv-=implodeCenter; +float len=length(uv); +if (len>EPSILON){ +float factor=pow(len,1.0-implode)/len; +uv*=factor; +} +uv+=implodeCenter; +} +return uv; +} +void node_noise(float amplitude,int depthMax,float frequency,float frequencyRatio,float implode,vec2 implodeCenter,bool inflection,float ratio,float threshold,float time,vec2 uvCoord,out float outAlpha,out vec3 outColor){ +uvCoord=calcNoiseImplode(implode,implodeCenter,uvCoord); +frequency*=0.6; +amplitude*=0.9; +uvCoord*=frequency; +float noiseAccum=0.0; +vec2 freqOffset=vec2(0.02,0.3); +#if __VERSION__==300 +for (int depthId=0;depthId +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#undef RE_Refraction +#ifdef PROBE_NORMAL +#undef PROBE_NORMAL +#endif +#ifdef USE_GTAO +reflectedLight.indirectDiffuse*=gtaoVisibilityBentNormal.r; +float gtaoVisibility=gtaoVisibilityBentNormal.r; +vec3 gtaoBentNormal=bentNormal; +vec3 gtaoViewDir=geometry.viewDir; +vec3 gtaoNormal=normal; +float gtaoRoughness=material.roughness; +#endif +#include +vec3 totalEmissiveRadiance=emissionLuminance*OPENPBR_EMISSION_LUM_FACTOR*emissionColor; +vec3 outSpecular=reflectedLight.directSpecular+reflectedLight.indirectSpecular; +vec3 outColor3=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +outSpecular+totalEmissiveRadiance; +#ifdef USE_SHEEN +float sheenEnergyComp=1.0-0.157*max3(material.sheenColor); +outColor3=outColor3*sheenEnergyComp+sheenSpecular; +#endif +#ifdef USE_CLEARCOAT +float dotNVcc=saturate(dot(geometry.normal,geometry.viewDir)); +vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc); +outColor3=outColor3*(1.0-material.clearcoat*Fcc)+clearcoatSpecular*material.clearcoat; +#endif +float alpha=1.0; +if (thinWalled){ +alpha=geometryOpacity*(1.0-saturate(transmissionWeight)+maxFromRGB(outSpecular)*saturate(transmissionWeight)); +} else { +outColor3+=refractedLight; +} +outColor=vec4(outColor3,saturate(alpha)); +}`,Rme=`void node_output(vec4 rgb,out vec4 outgoingLight) +{ +outgoingLight=rgb; +}`,Lme=`void node_phong(vec3 geometryNormal,vec3 color,vec3 ambientColor,vec3 incandescence,float matteOpacity,float diffuse,vec3 normal,float reflectivity,vec3 reflectedColor,float cosinePower,vec3 specularColor,float translucence,vec3 transparency,out vec4 outColor){ +NodeMaterial material; +material.diffuseColor=diffuse*color; +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z); +float roughness=sqrt(1.0/(0.454*cosinePower+3.357)); +material.roughness=max(roughness,0.0525); +material.roughness+=geometryRoughness; +material.roughness=min(material.roughness,1.0); +material.specularColor=specularColor; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +float alpha=1.0-average(transparency); +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +reflectedLight.directSpecular+reflectedLight.indirectSpecular+incandescence,alpha); +}`,Pme=`void node_phong_e(vec3 geometryNormal,vec3 color,vec3 ambientColor,vec3 incandescence,float matteOpacity,float diffuse,vec3 normal,float reflectivity,vec3 reflectedColor,float highlightSize,float roughness,vec3 specularColor,float translucence,vec3 transparency,out vec4 outColor){ +NodeMaterial material; +material.diffuseColor=diffuse*color; +#ifdef USE_CLEARCOAT +#undef USE_CLEARCOAT +#define _CLEARCOAT_RESTORE +#endif +vec3 dxy=max(abs(dFdx(geometryNormal)),abs(dFdy(geometryNormal))); +float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z); +material.roughness=max(roughness,0.0525); +material.roughness+=geometryRoughness; +material.roughness=min(material.roughness,1.0); +material.specularColor=specularColor; +ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); +#define RE_Direct RE_Direct_Node +#define RE_IndirectDiffuse RE_IndirectDiffuse_Node +#define RE_IndirectSpecular RE_IndirectSpecular_Node +#include +#include +#include +#undef RE_Direct +#undef RE_IndirectDiffuse +#undef RE_IndirectSpecular +#ifdef _CLEARCOAT_RESTORE +#undef _CLEARCOAT_RESTORE +#define USE_CLEARCOAT +#endif +float alpha=1.0-average(transparency); +outColor=vec4(reflectedLight.directDiffuse+reflectedLight.indirectDiffuse + +reflectedLight.directSpecular+reflectedLight.indirectSpecular+incandescence,alpha); +}`,Dme=`void node_place_2d_texture(const vec2 inUv,vec2 offset,vec2 repeatUv,float rotateUv,out vec2 outUv) +{ +outUv=(calcUvTransform(offset.x,offset.y,repeatUv.x,repeatUv.y,rotateUv)*vec3(inUv,1.0)).xy; +outUv.y=1.0-outUv.y; +}`,Bme=`void node_premultiply(float inAlpha,vec3 inColor,out float outAlpha,out vec3 outColor){ +outColor=inColor*inAlpha; +outAlpha=inAlpha; +}`,Nme=`#define RAMP_WRAP_REPEAT 1000 +#define RAMP_WRAP_CLAMP_TO_EDGE 1001 +#define RAMP_WRAP_MIRROR 1002 +float applyWrap(float coord,int wrap){ +if (coord<0.0||coord>1.0){ +if (wrap==RAMP_WRAP_REPEAT) +coord=mod(coord,1.0); +else if (wrap==RAMP_WRAP_CLAMP_TO_EDGE) +coord=clamp(coord,0.0,1.0); +else if (wrap==RAMP_WRAP_MIRROR){ +if (mod(floor(coord),2.0)==0.0) +coord=coord-floor(coord); +else +coord=1.0-(coord-floor(coord)); +} +} +return coord; +} +void node_ramp(sampler2D rampData,int rampType,int wrapU,int wrapV,vec2 uvCoord,out float outAlpha,out vec3 outColor) +{ +uvCoord.x=applyWrap(uvCoord.x,wrapU); +uvCoord.y=applyWrap(uvCoord.y,wrapV); +float coord; +if (rampType==0){ +coord=uvCoord.y; +} else if (rampType==1){ +coord=uvCoord.x; +} else if (rampType==2){ +coord=abs(uvCoord.x+uvCoord.y)/2.0; +} else if (rampType==3){ +vec2 uvSpiral=mat2(0.0,1.0,1.0,0.0)*(uvCoord-vec2(0.5)); +coord=atan(uvSpiral.y,uvSpiral.x)/PI2+0.5; +} else if (rampType==4){ +coord=length(uvCoord-vec2(0.5))*sqrt(2.0); +} else if (rampType==5){ +vec2 boxUv=abs(uvCoord-vec2(0.5))*2.0; +coord=max(boxUv.x,boxUv.y); +} else if (rampType==6){ +uvCoord=abs((uvCoord-vec2(0.5))*2.0); +coord=uvCoord.y; +} else if (rampType==7){ +coord=uvCoord.y; +} else { +coord=uvCoord.y; +} +float offset=0.5/float(RAMP_TEX_SIZE); +float scale=1.0-(1.0/float(RAMP_TEX_SIZE)); +coord=coord*scale+offset; +vec4 tex=texture2D(rampData,vec2(coord,0.0)); +outAlpha=average(tex.xyz); +outColor=tex.xyz; +}`,Ome=`void node_remap_hsv(vec3 color,out vec3 outColor) +{ +outColor=color; +}`,kme=`void node_reverse(vec3 inValue,out vec3 outValue){ +outValue=1.0-inValue; +}`,Fme=`void node_sampler_info(float frontFacing,vec4 tangent,vec2 uv,vec3 viewNorm,out float facingRatio,out bool flippedNormal,out mat4 matrixEyeToWorld,out vec3 normalCamera,out vec2 pixelCenter,out vec3 pointCamera,out vec3 pointObj,out vec3 pointWorld,out vec3 tangentUCamera,out vec3 tangentVCamera,out vec2 uvCoord) +{ +vec4 worldPos=invViewMatrix*vec4(-vViewPosition,1.0); +facingRatio=dot(normalize(viewNorm),normalize(vViewPosition)); +flippedNormal=(frontFacing>0.0); +matrixEyeToWorld=invViewMatrix; +normalCamera=viewNorm; +pixelCenter=vec2(1.0); +pointCamera=-vViewPosition*UNITS_SCALE_FACTOR; +pointObj=(invModelMatrix*worldPos).xyz*UNITS_SCALE_FACTOR; +pointWorld=worldPos.xyz*UNITS_SCALE_FACTOR; +tangentUCamera=normalize((modelViewMatrix*vec4(tangent.xyz,0.0)).xyz); +tangentVCamera=tangent.w*cross(viewNorm,tangentUCamera); +uvCoord=vec2(uv.x,1.0-uv.y); +}`,Vme=`void node_set_range(vec3 maxValue,vec3 minValue,vec3 oldMax,vec3 oldMin,vec3 value,out vec3 outValue){ +outValue=minValue+(((value-oldMin)/(oldMax-oldMin))*(maxValue-minValue)); +}`,Ume=`void node_shading_engine(vec4 surface,vec4 volume,vec3 displacement,out vec4 outgoingLight){ +outgoingLight=surface+volume; +}`,zme=`#define COORD_WORLD_SPACE 0 +#define COORD_OBJECT_SPACE 1 +void node_sub_transform(const int coordSpace,vec3 scale,vec3 rotate,vec3 offset,out vec3 outVector,out vec3 outNormal) +{ +vec3 norm=vNormal; +norm=(invViewMatrix*vec4(norm,0.0)).xyz; +vec3 vector=vWorldPosition.xyz; +if (coordSpace==COORD_OBJECT_SPACE){ +vector=(invModelMatrix*vec4(vector,1.0)).xyz; +norm=(invModelMatrix*vec4(norm,0.0)).xyz; +} +vector-=offset; +vector*=scale; +mat3 rotX=mat3RotateX(radians(rotate.x)); +mat3 rotY=mat3RotateY(radians(-rotate.y)); +mat3 rotZ=mat3RotateZ(radians(rotate.z)); +mat3 rotMat=rotX*rotY*rotZ; +vector=rotMat*vector; +norm=rotMat*norm; +outVector=vector; +outNormal=normalize(norm); +}`,Gme=`void node_surface_shader(vec3 color,vec3 glowColor,vec3 matteOpacity,vec3 transparency,out vec4 outColor,out vec3 outGlowColor,out vec3 outMatteOpacity,out vec3 outTransparency) +{ +outColor=vec4(color,saturate(1.0-average(transparency))); +outGlowColor=glowColor; +outMatteOpacity=matteOpacity; +outTransparency=transparency; +} +void node_surface_shader(vec3 color,vec3 glowColor,vec3 matteOpacity,vec3 transparency,out vec3 outColor,out vec3 outGlowColor,out vec3 outMatteOpacity,out vec3 outTransparency) +{ +outColor=color; +outGlowColor=glowColor; +outMatteOpacity=matteOpacity; +outTransparency=transparency; +}`,Hme=`void node_transform(out vec3 center,out mat4 inverseMatrix,out mat4 matrix,out mat4 parentInverseMatrix,out mat4 parentMatrix,out mat4 worldInverseMatrix,out mat4 worldMatrix,out mat4 xformMatrix) +{ +center=modelMatrix[3].xyz; +inverseMatrix=invModelMatrix; +matrix=modelMatrix; +parentInverseMatrix=mat4(1.0); +parentMatrix=mat4(1.0); +worldInverseMatrix=invModelMatrix; +worldMatrix=modelMatrix; +xformMatrix=matrix; +}`,Wme=`mat4 transposeMat4(mat4 m){ +return mat4(vec4(m[0].x,m[1].x,m[2].x,m[3].x),vec4(m[0].y,m[1].y,m[2].y,m[3].y),vec4(m[0].z,m[1].z,m[2].z,m[3].z),vec4(m[0].w,m[1].w,m[2].w,m[3].w)); +} +void node_transpose_matrix(mat4 inputMatrix,out mat4 outputMatrix) +{ +outputMatrix=transposeMat4(inputMatrix); +}`,jme=`void node_unit_conversion(float conversionFactor,float inInput,out float outOutput) +{ +outOutput=conversionFactor*inInput; +} +void node_unit_conversion(float conversionFactor,vec3 inInput,out vec3 outOutput) +{ +outOutput=conversionFactor*inInput; +}`,Qme=`void node_unpremultiply(float inAlpha,vec3 inColor,out float outAlpha,out vec3 outColor){ +outColor=inColor/inAlpha; +outAlpha=inAlpha; +}`,$me=`void node_vector_product(const int operation,const bool normalizeOutput,vec3 input1,vec3 input2,mat4 matrix,out vec3 outVector){ +if (operation==0){ +outVector=input1; +} else if (operation==1){ +if (normalizeOutput){ +input1=normalize(input1); +input2=normalize(input2); +} +outVector=vec3(dot(input1,input2)); +} else if (operation==2){ +outVector=cross(input1,input2); +} else if (operation==3){ +outVector=(matrix*vec4(input1,0.0)).xyz; +} else { +outVector=(matrix*vec4(input1,1.0)).xyz; +} + +if (operation>1&&normalizeOutput) +outVector=normalize(outVector); +}`,Yme=`void node_wt_add_matrix(mat4 matrixIn1,float weightIn1,out mat4 matrixSum) +{ +matrixSum=weightIn1*matrixIn1; +} +void node_wt_add_matrix(mat4 matrixIn1,float weightIn1,mat4 matrixIn2,float weightIn2,out mat4 matrixSum) +{ +matrixSum=weightIn1*matrixIn1+weightIn2*matrixIn2; +} +void node_wt_add_matrix(mat4 matrixIn1,float weightIn1,mat4 matrixIn2,float weightIn2,mat4 matrixIn3,float weightIn3,out mat4 matrixSum) +{ +matrixSum=weightIn1*matrixIn1+weightIn2*matrixIn2+weightIn3*matrixIn3; +}`,Xme=`precision mediump float; +precision mediump int; +attribute vec3 position; +attribute vec2 uv; +attribute float faceIndex; +varying vec3 vOutputDirection; +vec3 getDirection(vec2 uv,float face){ +uv=2.0*uv-1.0; +vec3 direction=vec3(uv,1.0); +if (face==0.0){ +direction=direction.zyx; +direction.z*=-1.0; +} else if (face==1.0){ +direction=direction.xzy; +direction.z*=-1.0; +} else if (face==3.0){ +direction=direction.zyx; +direction.x*=-1.0; +} else if (face==4.0){ +direction=direction.xzy; +direction.y*=-1.0; +} else if (face==5.0){ +direction.xz*=-1.0; +} +return direction; +} +void main(){ +vOutputDirection=getDirection(uv,faceIndex); +gl_Position=vec4(position,1.0); +}`,qme=`precision highp float; +precision highp int; +varying vec3 vOutputDirection; +uniform sampler2D envMap; +uniform int samples; +uniform float weights[n]; +uniform bool latitudinal; +uniform float dTheta; +uniform float lodIdx; +uniform vec3 poleAxis; +#define ENVMAP_TYPE_CUBE_UV +#include +vec3 getSample(float theta,vec3 axis){ +float cosTheta=cos(theta); +vec3 sampleDirection=vOutputDirection*cosTheta ++ cross(axis,vOutputDirection)*sin(theta) ++ axis*dot(axis,vOutputDirection)*(1.0-cosTheta); +return bilinearCubeUV(envMap,sampleDirection,lodIdx); +} +void main(){ +vec3 axis=latitudinal?poleAxis:cross(poleAxis,vOutputDirection); +if (all(equal(axis,vec3(0.0)))){ +axis=vec3(vOutputDirection.z,0.0,-vOutputDirection.x); +} +axis=normalize(axis); +gl_FragColor=vec4(0.0); +gl_FragColor.rgb+=weights[0]*getSample(0.0,axis); +for (int i=1;i=samples){ +break; +} +float theta=dTheta*float(i); +gl_FragColor.rgb+=weights[i]*getSample(-1.0*theta,axis); +gl_FragColor.rgb+=weights[i]*getSample(theta,axis); +} +}`,Kme=`precision mediump float; +precision mediump int; +uniform bool flipCubemapX; +uniform samplerCube envMap; +varying vec3 vOutputDirection; +void main(){ +gl_FragColor=textureCube(envMap,vec3(vOutputDirection.x*(flipCubemapX?-1.0:1.0),vOutputDirection.yz)); +}`,Zme=`precision mediump float; +precision mediump int; +varying vec3 vOutputDirection; +uniform sampler2D envMap; +uniform vec2 texelSize; +#define RECIPROCAL_PI 0.31830988618 +#define RECIPROCAL_PI2 0.15915494 +void main(){ +gl_FragColor=vec4(0.0); +vec3 outputDirection=normalize(vOutputDirection); +vec2 uv; +uv.y=asin(clamp(outputDirection.y,-1.0,1.0))*RECIPROCAL_PI+0.5; +uv.x=atan(outputDirection.z,outputDirection.x)*RECIPROCAL_PI2+0.5; +vec2 f=fract(uv/texelSize-0.5); +uv-=f*texelSize; +vec3 tl=texture2D(envMap,uv).rgb; +uv.x+=texelSize.x; +vec3 tr=texture2D(envMap,uv).rgb; +uv.y+=texelSize.y; +vec3 br=texture2D(envMap,uv).rgb; +uv.x-=texelSize.x; +vec3 bl=texture2D(envMap,uv).rgb; +vec3 tm=mix(tl,tr,f.x); +vec3 bm=mix(bl,br,f.x); +gl_FragColor.rgb=mix(tm,bm,f.y); +}`,Jme=`varying vec2 vUv; +void main(){ +vUv=uv; +gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); +}`,ege=`varying vec2 vUv; +uniform sampler2D tRGBABuffer; +uniform sampler2D tFloatBuffer; +void main(){ +vec4 color=texture2D(tRGBABuffer,vUv); +vec3 colorSum=color.rgb; +float alphaProduct=color.a; +float alphaSum=texture2D(tFloatBuffer,vUv).r; +gl_FragColor=vec4(colorSum.rgb/max(alphaSum,1e-5),1.0-alphaProduct); +}`,tge=`uniform float damp; +uniform sampler2D tOld; +uniform sampler2D tNew; +varying vec2 vUv; +vec4 when_gt(vec4 x,float y){ +return max(sign(x-y),0.0); +} +void main(){ +vec4 texelOld=texture2D(tOld,vUv); +vec4 texelNew=texture2D(tNew,vUv); + +texelOld*=damp*when_gt(texelOld,0.1); +gl_FragColor=max(texelNew,texelOld); +}`,nge=`varying vec2 vUv; +uniform sampler2D blurTexture1; +uniform sampler2D blurTexture2; +uniform sampler2D blurTexture3; +uniform sampler2D blurTexture4; +uniform sampler2D blurTexture5; +uniform sampler2D dirtTexture; +uniform float bloomStrength; +uniform float bloomRadius; +uniform float bloomFactors[NUM_MIPS]; +uniform vec3 bloomTintColors[NUM_MIPS]; +float lerpBloomFactor(const in float factor){ +float mirrorFactor=1.2-factor; +return mix(factor,mirrorFactor,bloomRadius); +} +void main(){ +gl_FragColor=bloomStrength*(lerpBloomFactor(bloomFactors[0])*vec4(bloomTintColors[0],1.0)*texture2D(blurTexture1,vUv)+ +lerpBloomFactor(bloomFactors[1])*vec4(bloomTintColors[1],1.0)*texture2D(blurTexture2,vUv)+ +lerpBloomFactor(bloomFactors[2])*vec4(bloomTintColors[2],1.0)*texture2D(blurTexture3,vUv)+ +lerpBloomFactor(bloomFactors[3])*vec4(bloomTintColors[3],1.0)*texture2D(blurTexture4,vUv)+ +lerpBloomFactor(bloomFactors[4])*vec4(bloomTintColors[4],1.0)*texture2D(blurTexture5,vUv) +); +}`,rge=`uniform sampler2D tDiffuse; +uniform vec3 defaultColor; +uniform float defaultOpacity; +uniform float luminosityThreshold; +uniform float smoothWidth; +varying vec2 vUv; +void main(){ +vec4 texel=texture2D(tDiffuse,vUv); +vec3 luma=vec3(0.299,0.587,0.114); +float v=dot(texel.xyz,luma); +vec4 outputColor=vec4(defaultColor.rgb,defaultOpacity); +float alpha=smoothstep(luminosityThreshold,luminosityThreshold+smoothWidth,v); +gl_FragColor=mix(outputColor,texel,alpha); +gl_FragColor=clamp(gl_FragColor,0.0,10.0); +}`,oge=`#include +varying vec2 vUv; +uniform sampler2D colorTexture; +uniform vec2 texSize; +uniform vec2 direction; +float gaussianPdf(in float x,in float sigma){ +return 0.39894*exp(-0.5*x*x/(sigma*sigma))/sigma; +} +void main(){ +vec2 invSize=1.0/texSize; +float fSigma=float(SIGMA); +float weightSum=gaussianPdf(0.0,fSigma); +vec3 diffuseSum=texture2D(colorTexture,vUv).rgb*weightSum; +for (int i=1;i +varying vec2 vUv; +uniform sampler2D colorTexture; +uniform vec2 texSize; +uniform vec2 direction; +uniform float kernelRadius; +float gaussianPdf(in float x,in float sigma){ +return 0.39894*exp(-0.5*x*x/(sigma*sigma))/sigma; +} +void main(){ +vec2 invSize=1.0/texSize; +float weightSum=gaussianPdf(0.0,kernelRadius); +#if LOG_SPACE==1 +float origDiffuse=texture2D(colorTexture,vUv).r; +float diffuseSum=weightSum; +#else +float diffuseSum=texture2D(colorTexture,vUv).r*weightSum; +#endif +vec2 delta=direction*invSize*kernelRadius/float(MAX_SAMPLE_RADIUS); +vec2 uvOffset=delta; +#if OCTAHEDRAL_MAP==1 +vec3 cubeDir=normalize(octUVToCubeVec(vUv,invSize)); +vec3 dirX=normalize(abs(cubeDir.y)<0.99999?vec3(cubeDir.z,0.0,-cubeDir.x) +: vec3(0.0,-cubeDir.z,cubeDir.y)); +vec3 dirY=cross(cubeDir,dirX); +#endif +#pragma unroll_loop +for (int i=1;i<=MAX_SAMPLE_RADIUS;i++){ +float w=gaussianPdf(uvOffset.x,kernelRadius); +#if OCTAHEDRAL_MAP==1 +vec3 cubeOffset=uvOffset.x*dirX+uvOffset.y*dirY; +vec2 uv1=cubeVecToOctUV(cubeDir+cubeOffset,invSize); +vec2 uv2=cubeVecToOctUV(cubeDir-cubeOffset,invSize); +#else +vec2 uv1=vUv+uvOffset; +vec2 uv2=vUv-uvOffset; +#endif +float sample1=texture2D(colorTexture,uv1).r; +float sample2=texture2D(colorTexture,uv2).r; +#if LOG_SPACE==1 +diffuseSum+=(clamp(exp(sample1-origDiffuse),0.0,1e38)+ +clamp(exp(sample2-origDiffuse),0.0,1e38) +)*w; +#else +diffuseSum+=((sample1+sample2)*w); +#endif +weightSum+=2.0*w; +uvOffset+=delta; +} +#if LOG_SPACE==1 +gl_FragColor=vec4(origDiffuse+log(diffuseSum/weightSum),0.0,0.0,1.0); +#else +gl_FragColor=vec4(diffuseSum/weightSum,0.0,0.0,1.0); +#endif +}`,age=`#include +varying vec2 vUv; +uniform sampler2D tColor; +uniform sampler2D tDepth; +uniform float maxblur; +uniform float aperture; +uniform float nearClip; +uniform float farClip; +uniform float focus; +uniform float aspect; +uniform float depthLeakThreshold; +#include +float getDepth(const in vec2 screenPosition){ +#if DEPTH_PACKING==1 +return unpackRGBAToDepth(texture2D(tDepth,screenPosition)); +#else +return texture2D(tDepth,screenPosition).x; +#endif +} +float getViewZ(const in float depth){ +#if PERSPECTIVE_CAMERA==1 +return perspectiveDepthToViewZ(depth,nearClip,farClip); +#else +return orthoDepthToViewZ(depth,nearClip,farClip); +#endif +} +vec4 blurSample(vec2 uvOffset,vec4 centerCol,float viewZCenter){ +float viewZ=-getViewZ(getDepth(vUv+uvOffset)); +float blurFactor=(viewZ>=viewZCenter)?1.0: +min(depthLeakThreshold*abs((focus-viewZ)/aperture),1.0); +return mix(centerCol,texture2D(tColor,vUv+uvOffset),blurFactor); +} +void main(){ +vec2 aspectcorrect=vec2(1.0,aspect); +float viewZ=-getViewZ(getDepth(vUv)); +float factor=abs(focus-viewZ); + +float dofblur=maxblur*min(factor/aperture,1.0); +float dofblur9=dofblur*0.9; +float dofblur7=dofblur*0.7; +float dofblur4=dofblur*0.4; +vec4 centerCol=texture2D(tColor,vUv); +vec4 col=centerCol; +col+=blurSample((vec2( 0.0,0.4 )*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.15,0.37)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.29,0.29)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.37,0.15)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.40,0.0 )*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.37,-0.15)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.29,-0.29)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.15,-0.37)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.0,-0.4 )*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.15,0.37)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.29,0.29)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.37,0.15)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.4,0.0 )*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.37,-0.15)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2(-0.29,-0.29)*aspectcorrect)*dofblur,centerCol,viewZ); +col+=blurSample((vec2( 0.15,-0.37)*aspectcorrect)*dofblur,centerCol,viewZ); + +col+=blurSample((vec2( 0.15,0.37)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2(-0.37,0.15)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2( 0.37,-0.15)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2(-0.15,-0.37)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2(-0.15,0.37)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2( 0.37,0.15)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2(-0.37,-0.15)*aspectcorrect)*dofblur9,centerCol,viewZ); +col+=blurSample((vec2( 0.15,-0.37)*aspectcorrect)*dofblur9,centerCol,viewZ); + +col+=blurSample((vec2( 0.29,0.29)*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2( 0.40,0.0 )*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2( 0.29,-0.29)*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2( 0.0,-0.4 )*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2(-0.29,0.29)*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2(-0.4,0.0 )*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2(-0.29,-0.29)*aspectcorrect)*dofblur7,centerCol,viewZ); +col+=blurSample((vec2( 0.0,0.4 )*aspectcorrect)*dofblur7,centerCol,viewZ); + +col+=blurSample((vec2( 0.29,0.29)*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2( 0.4,0.0 )*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2( 0.29,-0.29)*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2( 0.0,-0.4 )*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2(-0.29,0.29)*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2(-0.4,0.0 )*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2(-0.29,-0.29)*aspectcorrect)*dofblur4,centerCol,viewZ); +col+=blurSample((vec2( 0.0,0.4 )*aspectcorrect)*dofblur4,centerCol,viewZ); +gl_FragColor=col/41.0; +gl_FragColor.a=centerCol.a; +}`,sge=` +uniform sampler2D tDiffuse; +uniform float brightness; +uniform float contrast; +varying vec2 vUv; +void main(){ +vec4 texel=texture2D(tDiffuse,vUv); +texel.rgb+=brightness; +if (contrast>0.0) +texel.rgb=(texel.rgb-0.5)/(1.0-contrast)+0.5; +else +texel.rgb=(texel.rgb-0.5)*(1.0+contrast)+0.5; +gl_FragColor=texel; +}`,lge=`uniform sampler2D tDiffuse; +uniform float opacity; +varying vec2 vUv; +void main(){ +vec4 texel=(texture2D(tDiffuse,vUv)); +gl_FragColor=opacity*texel; +}`,cge=`#include +uniform samplerCube tCube; +uniform vec2 texelSize; +varying vec2 vUv; +void main(){ +gl_FragColor=textureCube(tCube,octUVToCubeVec(gl_FragCoord.xy*texelSize,texelSize)); +}`,uge=` +precision highp float; +uniform sampler2D tDiffuse; +uniform vec2 resolution; +in vec2 vUv; +#define FXAA_QUALITY_PS 5 +#define FXAA_QUALITY_P0 1.0 +#define FXAA_QUALITY_P1 1.5 +#define FXAA_QUALITY_P2 2.0 +#define FXAA_QUALITY_P3 4.0 +#define FXAA_QUALITY_P4 12.0 +#define FxaaTexTop(t,p)textureLod(t,p,0.0) +#define FxaaTexOff(t,p,o,r)textureLodOffset(t,p,0.0,o) +float FxaaLuma(vec4 rgba){return rgba.y;} +vec4 FxaaPixelShader(vec2 pos,sampler2D tex,vec2 fxaaQualityRcpFrame,float fxaaQualitySubpix,float fxaaQualityEdgeThreshold,float fxaaQualityEdgeThresholdMin +){ +vec2 posM; +posM.x=pos.x; +posM.y=pos.y; +vec4 rgbyM=FxaaTexTop(tex,posM); +#define lumaM rgbyM.y +float lumaS=FxaaLuma(FxaaTexOff(tex,posM,ivec2(0,1),fxaaQualityRcpFrame.xy)); +float lumaE=FxaaLuma(FxaaTexOff(tex,posM,ivec2(1,0),fxaaQualityRcpFrame.xy)); +float lumaN=FxaaLuma(FxaaTexOff(tex,posM,ivec2(0,-1),fxaaQualityRcpFrame.xy)); +float lumaW=FxaaLuma(FxaaTexOff(tex,posM,ivec2(-1,0),fxaaQualityRcpFrame.xy)); +float maxSM=max(lumaS,lumaM); +float minSM=min(lumaS,lumaM); +float maxESM=max(lumaE,maxSM); +float minESM=min(lumaE,minSM); +float maxWN=max(lumaN,lumaW); +float minWN=min(lumaN,lumaW); +float rangeMax=max(maxWN,maxESM); +float rangeMin=min(minWN,minESM); +float rangeMaxScaled=rangeMax*fxaaQualityEdgeThreshold; +float range=rangeMax-rangeMin; +float rangeMaxClamped=max(fxaaQualityEdgeThresholdMin,rangeMaxScaled); +bool earlyExit=range=edgeVert; +float subpixA=subpixNSWE*2.0+subpixNWSWNESE; +if (!horzSpan)lumaN=lumaW; +if (!horzSpan)lumaS=lumaE; +if (horzSpan)lengthSign=fxaaQualityRcpFrame.y; +float subpixB=(subpixA*(1.0/12.0))-lumaM; +float gradientN=lumaN-lumaM; +float gradientS=lumaS-lumaM; +float lumaNN=lumaN+lumaM; +float lumaSS=lumaS+lumaM; +bool pairN=abs(gradientN)>=abs(gradientS); +float gradient=max(abs(gradientN),abs(gradientS)); +if (pairN)lengthSign=-lengthSign; +float subpixC=clamp(abs(subpixB)*subpixRcpRange,0.0,1.0); +vec2 posB; +posB.x=posM.x; +posB.y=posM.y; +vec2 offNP; +offNP.x=(!horzSpan)?0.0:fxaaQualityRcpFrame.x; +offNP.y=(horzSpan)?0.0:fxaaQualityRcpFrame.y; +if (!horzSpan)posB.x+=lengthSign*0.5; +if (horzSpan)posB.y+=lengthSign*0.5; +vec2 posN; +posN.x=posB.x-offNP.x*FXAA_QUALITY_P0; +posN.y=posB.y-offNP.y*FXAA_QUALITY_P0; +vec2 posP; +posP.x=posB.x+offNP.x*FXAA_QUALITY_P0; +posP.y=posB.y+offNP.y*FXAA_QUALITY_P0; +float subpixD=((-2.0)*subpixC)+3.0; +float lumaEndN=FxaaLuma(FxaaTexTop(tex,posN)); +float subpixE=subpixC*subpixC; +float lumaEndP=FxaaLuma(FxaaTexTop(tex,posP)); +if (!pairN)lumaNN=lumaSS; +float gradientScaled=gradient*1.0/4.0; +float lumaMM=lumaM-lumaNN*0.5; +float subpixF=subpixD*subpixE; +bool lumaMLTZero=lumaMM<0.0; +lumaEndN-=lumaNN*0.5; +lumaEndP-=lumaNN*0.5; +bool doneN=abs(lumaEndN)>=gradientScaled; +bool doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P1; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P1; +bool doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P1; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P1; +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P2; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P2; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P2; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P2; +#if (FXAA_QUALITY_PS>3) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P3; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P3; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P3; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P3; +#if (FXAA_QUALITY_PS>4) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P4; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P4; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P4; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P4; +#if (FXAA_QUALITY_PS>5) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P5; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P5; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P5; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P5; +#if (FXAA_QUALITY_PS>6) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P6; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P6; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P6; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P6; +#if (FXAA_QUALITY_PS>7) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P7; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P7; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P7; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P7; +#if (FXAA_QUALITY_PS>8) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P8; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P8; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P8; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P8; +#if (FXAA_QUALITY_PS>9) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P9; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P9; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P9; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P9; +#if (FXAA_QUALITY_PS>10) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P10; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P10; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P10; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P10; +#if (FXAA_QUALITY_PS>11) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P11; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P11; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P11; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P11; +#if (FXAA_QUALITY_PS>12) +if (doneNP){ +if (!doneN)lumaEndN=FxaaLuma(FxaaTexTop(tex,posN.xy)); +if (!doneP)lumaEndP=FxaaLuma(FxaaTexTop(tex,posP.xy)); +if (!doneN)lumaEndN=lumaEndN-lumaNN*0.5; +if (!doneP)lumaEndP=lumaEndP-lumaNN*0.5; +doneN=abs(lumaEndN)>=gradientScaled; +doneP=abs(lumaEndP)>=gradientScaled; +if (!doneN)posN.x-=offNP.x*FXAA_QUALITY_P12; +if (!doneN)posN.y-=offNP.y*FXAA_QUALITY_P12; +doneNP=(!doneN)||(!doneP); +if (!doneP)posP.x+=offNP.x*FXAA_QUALITY_P12; +if (!doneP)posP.y+=offNP.y*FXAA_QUALITY_P12; +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +#endif +} +float dstN=posM.x-posN.x; +float dstP=posP.x-posM.x; +if (!horzSpan)dstN=posM.y-posN.y; +if (!horzSpan)dstP=posP.y-posM.y; +bool goodSpanN=(lumaEndN<0.0)!= lumaMLTZero; +float spanLength=(dstP+dstN); +bool goodSpanP=(lumaEndP<0.0)!= lumaMLTZero; +float spanLengthRcp=1.0/spanLength; +bool directionN=dstN +const float SIGMA_SPATIAL=1.5; +const float SIGMA_INTENSITY=0.01; +float gaussianPdf(float x,float sigma){ +return 0.39894*exp(-0.5*x*x/(sigma*sigma))/sigma; +} +void main(){ +float weightSum=gaussianPdf(0.0,SIGMA_SPATIAL) +* gaussianPdf(0.0,SIGMA_INTENSITY); +vec4 diffSample=texture(tDiffuse,vUv); +vec4 gtaoDataSum=vec4(diffSample.r,unpackRGBToNormal(diffSample.gba))*weightSum; +vec3 normCenter=unpackRGBToNormal(texture(tNormal,vUv).xyz); +vec2 delta=direction/resolution; +vec2 offset=delta; +#pragma unroll_loop +for (int i=1;i<=BLUR_RADIUS_PX;i++){ +vec2 uvCoords0=vUv+offset; +vec2 uvCoords1=vUv-offset; +vec4 diffSample0=texture(tDiffuse,uvCoords0); +vec4 diffSample1=texture(tDiffuse,uvCoords1); +vec4 gtaoData0=vec4(diffSample0.r,unpackRGBToNormal(diffSample0.gba)); +vec4 gtaoData1=vec4(diffSample1.r,unpackRGBToNormal(diffSample1.gba)); +vec3 normSample0=unpackRGBToNormal(texture(tNormal,uvCoords0).xyz); +vec3 normSample1=unpackRGBToNormal(texture(tNormal,uvCoords1).xyz); +float weightSpatial=gaussianPdf(float(i),SIGMA_SPATIAL); +float weight0=weightSpatial*gaussianPdf(1.0-max(0.0,dot(normCenter,normSample0)),SIGMA_INTENSITY); +float weight1=weightSpatial*gaussianPdf(1.0-max(0.0,dot(normCenter,normSample1)),SIGMA_INTENSITY); +weightSum+=weight0+weight1; +gtaoDataSum+=weight0*gtaoData0+weight1*gtaoData1; +offset+=delta; +} +float visibility=gtaoDataSum.r/weightSum; +vec3 bentNormal=normalize(gtaoDataSum.gba); +gl_FragColor=vec4(visibility,packNormalToRGB(bentNormal)); +}`,hge=`uniform sampler2D tNormal; +uniform sampler2D tDepth; +uniform sampler2D tNoise; +uniform float occlDistance; +uniform float factor; +uniform float occlPrecision; +uniform mat4 mainCameraProjMat; +uniform vec2 resolution; +varying vec2 vUv; +#include +#include +const vec3 AXIS_Z=vec3(0.0,0.0,1.0); +const float NUM_SAMPLES_HALF_MIN=4.0; +const float NUM_SAMPLES_HALF_MAX=8.0; +const float NOISE_TEX_SIZE=32.0; +const float NEAR_FIELD_COEFF=0.5; +const float SELF_OCCL_BIAS=-1e-5; +const float NORMAL_RENDER_GEOM_MAX_DIFF_ANGLE=0.85*PI_HALF; +float integrateArc(vec2 horizonAngles,float normalAngle){ +vec2 visCoeffs=(-cos(2.0*horizonAngles-normalAngle)+cos(normalAngle) ++ 2.0*horizonAngles*sin(normalAngle))/4.0; +return visCoeffs.x+visCoeffs.y; +} +vec3 calcViewFromUVDepth(vec2 uv,float depth,float zBias){ +vec3 ndcCo=2.0*vec3(uv,depth)-1.0; +#if ORTHO_CAMERA==1 +float viewZ=(ndcCo.z-mainCameraProjMat[3][2])/mainCameraProjMat[2][2]+zBias; +vec2 _00_11=vec2(mainCameraProjMat[0][0],mainCameraProjMat[1][1]); +vec2 _30_31=vec2(mainCameraProjMat[3][0],mainCameraProjMat[3][1]); +return vec3((ndcCo.xy-_30_31)/_00_11,viewZ); +#else +float viewZ=-mainCameraProjMat[3][2]/(mainCameraProjMat[2][2]+ndcCo.z)+zBias; +vec2 _00_11=vec2(mainCameraProjMat[0][0],mainCameraProjMat[1][1]); +vec2 _20_21=vec2(mainCameraProjMat[2][0],mainCameraProjMat[2][1]); +return vec3(-viewZ*(ndcCo.xy+_20_21)/_00_11,viewZ); +#endif +} +vec2 calcSliceRadiusUV(float viewZ){ +vec4 distView=vec4(occlDistance,occlDistance,viewZ,1.0); +vec4 distClip=mainCameraProjMat*distView; +vec2 xyNDC=distClip.xy/distClip.w; +return clamp(0.5*xyNDC,0.0,0.5); +} +vec2 calcHorizonAngles(vec3 viewPos,vec3 viewVec,vec2 sliceDir,float offsetNoise){ +vec2 maxHorizonCos=vec2(-1.0); +vec2 sliceRadius=calcSliceRadiusUV(viewPos.z); +vec2 pxSize=1.0/resolution; +int NUM_SAMPLES_HALF=int(occlPrecision +* (NUM_SAMPLES_HALF_MAX-NUM_SAMPLES_HALF_MIN)+NUM_SAMPLES_HALF_MIN); +for (int i=0;i0.001)?visibleEdgeColor:hiddenEdgeColor; +gl_FragColor=edgeColor*vec4(d); +}`,mge=`#include +varying vec2 vUv; +uniform sampler2D colorTexture; +uniform vec2 texSize; +uniform vec2 direction; +uniform float kernelRadius; +float gaussianPdf(in float x,in float sigma){ +return 0.39894*exp(-0.5*x*x/(sigma*sigma))/sigma; +} +void main(){ +vec2 invSize=1.0/texSize; +float weightSum=gaussianPdf(0.0,kernelRadius); +vec4 diffuseSum=texture2D(colorTexture,vUv); +#if defined(LOG_SPACE) +diffuseSum=exp(diffuseSum); +#endif +diffuseSum*=weightSum; +vec2 delta=direction*invSize*kernelRadius/float(MAX_RADIUS); +vec2 uvOffset=delta; +for (int i=1;i<=MAX_RADIUS;i++){ +float w=gaussianPdf(uvOffset.x,kernelRadius); +vec4 sample1=texture2D(colorTexture,vUv+uvOffset); +vec4 sample2=texture2D(colorTexture,vUv-uvOffset); +#if defined(LOG_SPACE) +sample1=exp(sample1); +sample2=exp(sample2); +#endif +diffuseSum+=((sample1+sample2)*w); +weightSum+=(2.0*w); +uvOffset+=delta; +} +vec4 finalCol=diffuseSum/weightSum; +#if defined(LOG_SPACE) +finalCol=log(finalCol); +#endif +gl_FragColor=finalCol; +}`,gge=`varying vec2 vUv; +uniform sampler2D maskTexture; +uniform sampler2D edgeTexture1; +uniform sampler2D edgeTexture2; +uniform sampler2D patternTexture; +uniform float edgeStrength; +uniform float edgeGlow; +uniform bool usePatternTexture; +void main(){ +vec4 edgeValue1=texture2D(edgeTexture1,vUv); +vec4 edgeValue2=texture2D(edgeTexture2,vUv); +vec4 maskColor=texture2D(maskTexture,vUv); +vec4 patternColor=texture2D(patternTexture,6.0*vUv); +float visibilityFactor=1.0-maskColor.g>0.0?1.0:0.5; +vec4 edgeValue=edgeValue1+edgeValue2*edgeGlow; +vec4 finalColor=edgeStrength*maskColor.r*edgeValue; +if (usePatternTexture) +finalColor+=+ visibilityFactor*(1.0-maskColor.r)*(1.0-patternColor.r); +float maxChannel=max(finalColor.r,max(finalColor.g,finalColor.b)); +if (maxChannel != 0.0){ +finalColor.rgb/=maxChannel; +} +gl_FragColor=finalColor; +}`,_ge=`#include +uniform sampler2D tDiffuse; +varying vec2 vUv; +void main(){ +vec4 texel=texture2D(tDiffuse,vUv); +float alpha=clamp(texel.a,0.0,1.0); +gl_FragColor=texel; +gl_FragColor.rgb/=alpha; +#include +gl_FragColor=LinearTosRGB(gl_FragColor); +gl_FragColor.rgb*=alpha; +}`;const vge=`precision highp float; +attribute vec3 position; +attribute vec3 previous; +attribute vec3 next; +attribute float side; +attribute float width; +attribute vec2 uv; +attribute float counters; +uniform mat4 projectionMatrix; +uniform mat4 modelViewMatrix; +uniform vec2 resolution; +uniform float lineWidth; +uniform float sizeAttenuation; +varying float vCounters; +varying vec2 vUV; +const float EQ_EPS=0.000001; +vec2 fix(vec4 i,float aspect){ +vec2 res=i.xy/i.w; +res.x*=aspect; +return res; +} +bool posEqual(vec2 pos0,vec2 pos1){ +return length(pos0-pos1) +void main(){ +vec4 c=vec4(color,opacity); +if (useMap==1.0){ +c*=texture2D(map,vUV*repeat); +} +if (useAlphaMap==1.0){ +c.a*=texture2D(alphaMap,vUV*repeat).a; +} +if (c.a0?t:e).get(A));const y=n.xr,b=y.getSession&&y.getSession();b&&b.environmentBlendMode==="additive"&&(A=null),A===null?p(s,u):A&&A.isColor&&(p(A,1),_=!0),(n.autoClear||_)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),A&&(A.isCubeTexture||A.mapping===306)?(c===void 0&&(c=new Mt(new nc(1,1,1),new Dn({type:"BackgroundCubeMaterial",uniforms:Ou(Tt.backgroundCube.uniforms),vertexShader:Tt.backgroundCube.vertexShader,fragmentShader:Tt.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(E,x,w){const L=w.far;this.matrixWorld.makeScale(L,L,L),this.matrixWorld.copyPosition(w.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),o.update(c)),c.material.uniforms.envMap.value=A,c.material.uniforms.flipEnvMap.value=A.isCubeTexture&&A.isRenderTargetTexture===!1?-1:1,c.material.uniforms.backgroundBlurriness.value=g.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,c.material.toneMapped=g.backgroundToneMapped,d===A&&f===A.version&&h===n.toneMapping||(c.material.needsUpdate=!0,d=A,f=A.version,h=n.toneMapping),c.layers.enableAll(),m.unshift(c,c.geometry,c.material,0,0,null)):A&&A.isTexture&&(l===void 0&&(l=new Mt(new ms(2,2),new Dn({type:"BackgroundMaterial",uniforms:Ou(Tt.background.uniforms),vertexShader:Tt.background.vertexShader,fragmentShader:Tt.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),o.update(l)),l.material.uniforms.t2D.value=A,l.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,l.material.toneMapped=g.backgroundToneMapped,A.matrixAutoUpdate===!0&&A.updateMatrix(),l.material.uniforms.uvTransform.value.copy(A.matrix),d===A&&f===A.version&&h===n.toneMapping||(l.material.needsUpdate=!0,d=A,f=A.version,h=n.toneMapping),l.layers.enableAll(),m.unshift(l,l.geometry,l.material,0,0,null))}}}function bge(n,e,t,r){const o=n.getParameter(34921),i=r.isWebGL2?null:e.get("OES_vertex_array_object"),a=r.isWebGL2||i!==null,s={},l=h(null);let c=l,u=!1;function d(E){return r.isWebGL2?n.bindVertexArray(E):i.bindVertexArrayOES(E)}function f(E){return r.isWebGL2?n.deleteVertexArray(E):i.deleteVertexArrayOES(E)}function h(E){const x=[],w=[],L=[];for(let C=0;C=0){const O=ee[R];let W=ie[R];if(W===void 0&&(R==="instanceMatrix"&&Q.instanceMatrix&&(W=Q.instanceMatrix),R==="instanceColor"&&Q.instanceColor&&(W=Q.instanceColor)),O===void 0||O.attribute!==W||W&&O.data!==W.data)return!0;H++}return c.attributesNum!==H||c.index!==se})(E,L,w,C),P&&(function(Q,re,G,se){const ee={},ie=re.attributes;let H=0;const T=G.getAttributes();for(const R in T)if(T[R].location>=0){let O=ie[R];O===void 0&&(R==="instanceMatrix"&&Q.instanceMatrix&&(O=Q.instanceMatrix),R==="instanceColor"&&Q.instanceColor&&(O=Q.instanceColor));const W={};W.attribute=O,O&&O.data&&(W.data=O.data),ee[R]=W,H++}c.attributes=ee,c.attributesNum=H,c.index=se})(E,L,w,C)}else{const D=x.wireframe===!0;c.geometry===L.id&&c.program===w.id&&c.wireframe===D||(c.geometry=L.id,c.program=w.id,c.wireframe=D,P=!0)}C!==null&&t.update(C,34963),(P||u)&&(u=!1,(function(D,Q,re,G){if(r.isWebGL2===!1&&(D.isInstancedMesh||G.isInstancedBufferGeometry)&&e.get("ANGLE_instanced_arrays")===null)return;p();const se=G.attributes,ee=re.getAttributes(),ie=Q.defaultAttributeValues;for(const H in ee){const T=ee[H];if(T.location>=0){let R=se[H];if(R===void 0&&(H==="instanceMatrix"&&D.instanceMatrix&&(R=D.instanceMatrix),H==="instanceColor"&&D.instanceColor&&(R=D.instanceColor)),R!==void 0){const O=R.normalized,W=R.itemSize,ae=t.get(R);if(ae===void 0)continue;const ne=ae.buffer,oe=ae.type,F=ae.bytesPerElement,k=r.isWebGL2===!0&&(oe===5124||oe===5125||R.gpuType===1013);if(R.isInstancedBufferAttribute){for(let q=0;q0&&n.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";b="mediump"}return b==="mediump"&&n.getShaderPrecisionFormat(35633,36337).precision>0&&n.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const i=typeof WebGL2RenderingContext<"u"&&n instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<"u"&&n instanceof WebGL2ComputeRenderingContext;let a=t.precision!==void 0?t.precision:"highp";const s=o(a);s!==a&&(console.warn("v3d.WebGLRenderer:",a,"not supported, using",s,"instead."),a=s);const l=i||e.has("WEBGL_draw_buffers"),c=t.logarithmicDepthBuffer===!0,u=n.getParameter(34930),d=n.getParameter(35660),f=n.getParameter(3379),h=n.getParameter(34076),p=n.getParameter(34921),m=n.getParameter(36347),g=n.getParameter(36348),_=n.getParameter(36349),A=d>0,y=i||e.has("OES_texture_float");return{isWebGL2:i,drawBuffers:l,getMaxAnisotropy:function(){if(r!==void 0)return r;if(e.has("EXT_texture_filter_anisotropic")===!0){const b=e.get("EXT_texture_filter_anisotropic");r=n.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:o,precision:a,logarithmicDepthBuffer:c,maxTextures:u,maxVertexTextures:d,maxTextureSize:f,maxCubemapSize:h,maxAttributes:p,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:A,floatFragmentTextures:y,floatVertexTextures:A&&y,maxSamples:i?n.getParameter(36183):0}}function Cge(n){const e=this;let t=null,r=0,o=!1,i=!1;const a=new Vo,s=new ao,l={value:null,needsUpdate:!1};function c(){l.value!==t&&(l.value=t,l.needsUpdate=r>0),e.numPlanes=r,e.numIntersection=0}function u(d,f,h,p){const m=d!==null?d.length:0;let g=null;if(m!==0){if(g=l.value,p!==!0||g===null){const _=h+4*m,A=f.matrixWorldInverse;s.getNormalMatrix(A),(g===null||g.length<_)&&(g=new Float32Array(_));for(let y=0,b=h;y!==m;++y,b+=4)a.copy(d[y]).applyMatrix4(A,s),a.normal.toArray(g,b),g[b+3]=a.constant}l.value=g,l.needsUpdate=!0}return e.numPlanes=m,e.numIntersection=0,g}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,f,h){const p=d.length!==0||f||r!==0||o;return o=f,t=u(d,h,0),r=d.length,p},this.beginShadows=function(){i=!0,u(null)},this.endShadows=function(){i=!1,c()},this.setState=function(d,f,h){const p=d.clippingPlanes,m=d.clipIntersection,g=d.clipShadows,_=n.get(d);if(!o||p===null||p.length===0||i&&!g)i?u(null):c();else{const A=i?0:r,y=4*A;let b=_.clippingState||null;l.value=b,b=u(p,f,y,h);for(let E=0;E!==y;++E)b[E]=t[E];_.clippingState=b,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=A}}}function Sge(n){let e=new WeakMap;function t(o,i){return i===303?o.mapping=301:i===304&&(o.mapping=302),o}function r(o){const i=o.target;i.removeEventListener("dispose",r);const a=e.get(i);a!==void 0&&(e.delete(i),a.dispose())}return{get:function(o){if(o&&o.isTexture&&o.isRenderTargetTexture===!1){const i=o.mapping;if(i===303||i===304){if(e.has(o))return t(e.get(o).texture,o.mapping);{const a=o.image;if(a&&a.height>0){const s=new hh(a.height/2);return s.fromEquirectangularTexture(n,o),e.set(o,s),o.addEventListener("dispose",r),t(s.texture,o.mapping)}return null}}}return o},dispose:function(){e=new WeakMap}}}class ya extends fh{constructor(e=-1,t=1,r=1,o=-1,i=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=r,this.bottom=o,this.near=i,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,r,o,i,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=r,this.view.offsetY=o,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),r=(this.right+this.left)/2,o=(this.top+this.bottom)/2;let i=r-e,a=r+e,s=o+t,l=o-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;i+=c*this.view.offsetX,a=i+c*this.view.width,s-=u*this.view.offsetY,l=s-u*this.view.height}this.projectionMatrix.makeOrthographic(i,a,s,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}}class mh extends Dn{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}let u0=256;const Fu=[{relSize:1,sigma:0,origin:[0,0]},{relSize:.5,sigma:.025,origin:[0,2/3]},{relSize:1/4,sigma:.07,origin:[.5,2/3]},{relSize:1/8,sigma:.18,origin:[.75,2/3]},{relSize:1/16,sigma:.24,origin:[.875,2/3]},{relSize:1/16,sigma:.3,origin:[.875,17/24]},{relSize:1/16,sigma:.36,origin:[.875,.75]},{relSize:1/16,sigma:.42,origin:[.875,19/24]},{relSize:1/16,sigma:.48,origin:[.875,20/24]},{relSize:1/16,sigma:.54,origin:[.875,.875]},{relSize:1/16,sigma:.6,origin:[.875,22/24]}];function ul(n){return Fu[n].relSize*u0}function wge(n){return Fu[n].origin.map((function(e){return e*u0*3}))}const d0=new ya,Vu=Mge(),rL=new Ge;let R2=null;const rc=(1+Math.sqrt(5))/2,Uu=1/rc,oL=[new N(1,1,1),new N(-1,1,1),new N(1,1,-1),new N(-1,1,-1),new N(0,rc,Uu),new N(0,rc,-Uu),new N(Uu,0,rc),new N(-Uu,0,rc),new N(rc,Uu,0),new N(-rc,Uu,0)];class gh{constructor(e,t){this._renderer=e,this._pingPongRenderTarget=null,this._equirectShader=null,this._cubemapShader=null,this.flipCubemapX=!1,Object.defineProperties(this,{maxTileSize:{get:function(){return u0},set:function(r){u0=r}}}),t!==void 0&&(this.maxTileSize=t),this._blurMaterial=Tge(20,this.maxTileSize),this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,r=.1,o=100){R2=this._renderer.getRenderTarget();const i=this._allocateTargets();return this._sceneToCubeUV(e,r,o,i),t>0&&this._blur(i,0,0,t),this._applyPMREM(i),this._cleanup(i),i}fromEquirectangular(e){return e.magFilter=1006,e.minFilter=1006,e.generateMipmaps=!1,this.fromCubemap(e)}fromCubemap(e){R2=this._renderer.getRenderTarget();const t=this._allocateTargets(e);return this._textureToCubeUV(e,t,this.flipCubemapX),this._applyPMREM(t),this._cleanup(t),t}fromCubeRenderTarget(e,t){const r=this._allocateTargets(e.texture,t);return this._cubeRTToCubeUV(e,r,this.flipCubemapX),this._applyPMREM(r),this._cleanup(r),r}compileCubemapShader(){this._cubemapShader===null&&(this._cubemapShader=L2(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){this._equirectShader===null&&(this._equirectShader=aL(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose(),this._cubemapShader!==null&&this._cubemapShader.dispose(),this._equirectShader!==null&&this._equirectShader.dispose();for(let e=0;e2?g:0,g,g),l.setRenderTarget(o),l.render(e,i)}l.toneMapping=u,l.toneMappingExposure=d,l.outputEncoding=c,l.setClearColor(rL,f),e.scale.z*=-1}_textureToCubeUV(e,t,r){const o=this._renderer,i=new jr;e.isCubeTexture?this._cubemapShader===null&&(this._cubemapShader=L2()):this._equirectShader===null&&(this._equirectShader=aL());const a=e.isCubeTexture?this._cubemapShader:this._equirectShader;i.add(new Mt(Vu[0],a));const s=a.uniforms;s.envMap.value=e,e.isCubeTexture?s.flipCubemapX.value=r||!1:s.texelSize.value.set(1/e.image.width,1/e.image.height);const l=ul(0);f0(t,0,0,3*l,2*l),o.setRenderTarget(t),o.render(i,d0)}_applyPMREM(e){const t=this._renderer,r=t.autoClear;t.autoClear=!1;for(let o=1;o20&&(m=20,p=19/3,h=i/p);const g=[];let _=0;for(let E=0;E<20;++E){const x=E/p,w=Math.exp(-x*x/2);g.push(w),E===0?_+=w:E2?0:-1,h=[d,f,0,d+2/3,f,0,d+2/3,f+1,0,d,f,0,d+2/3,f+1,0,d,f+1,0];a.set(h,18*u),s.set(i,12*u);const p=[u,u,u,u,u,u];l.set(p,6*u)}const c=new At;return c.setAttribute("position",new Xe(a,3)),c.setAttribute("uv",new Xe(s,2)),c.setAttribute("faceIndex",new Xe(l,1)),c}))}function iL(n){const e=ul(0),t=new nn(3*e,3*e,n);return t.texture.mapping=306,t.texture.name="PMREM.cubeUV",t.scissorTest=!0,t}function f0(n,e,t,r,o){n.viewport.set(e,t,r,o),n.scissor.set(e,t,r,o)}function Tge(n,e){const t=new Float32Array(n),r=new N(0,1,0),o=new mh({defines:{n,cubeUV_maxTileSize:Js(e)},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:t},latitudinal:{value:!1},dTheta:{value:0},lodIdx:{value:0},poleAxis:{value:r}},vertexShader:Qe.pmrem_common_vert,fragmentShader:Qe.pmrem_blur_frag,blending:0,depthTest:!1,depthWrite:!1});return o.type="SphericalGaussianBlur",o}function aL(){const n=new be(1,1),e=new mh({uniforms:{envMap:{value:null},texelSize:{value:n}},vertexShader:Qe.pmrem_common_vert,fragmentShader:Qe.pmrem_equirect_frag,blending:0,depthTest:!1,depthWrite:!1});return e.type="EquirectangularToCubeUV",e}function L2(){const n=new mh({uniforms:{envMap:{value:null},flipCubemapX:{value:!1}},vertexShader:Qe.pmrem_common_vert,fragmentShader:Qe.pmrem_cubemap_frag,blending:0,depthTest:!1,depthWrite:!1});return n.type="CubemapToCubeUV",n}function Ige(n){let e=new WeakMap,t=null;function r(o){const i=o.target;i.removeEventListener("dispose",r);const a=e.get(i);a!==void 0&&(e.delete(i),a.dispose())}return{get:function(o){if(o&&o.isTexture){const i=o.mapping,a=i===303||i===304,s=i===301||i===302;if(a||s){if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let l=e.get(o);return t===null&&(t=new gh(n)),l=a?t.fromEquirectangular(o,l):t.fromCubemap(o,l),e.set(o,l),l.texture}if(e.has(o))return e.get(o).texture;{const l=o.image;if(a&&l&&l.height>0||s&&l&&(function(c){let u=0;const d=6;for(let f=0;f0&&(r.alphaTest.value=o.alphaTest);const i=e.get(o).envMap;let a,s;i&&(r.envMap.value=i,r.flipEnvMap.value=i.isCubeTexture&&i.isRenderTargetTexture===!1?-1:1,r.reflectivity.value=o.reflectivity,r.ior.value=o.ior,r.refractionRatio.value=o.refractionRatio),o.lightMap&&(r.lightMap.value=o.lightMap,r.lightMapIntensity.value=o.lightMapIntensity),o.aoMap&&(r.aoMap.value=o.aoMap,r.aoMapIntensity.value=o.aoMapIntensity),o.map?a=o.map:o.specularMap?a=o.specularMap:o.displacementMap?a=o.displacementMap:o.normalMap?a=o.normalMap:o.bumpMap?a=o.bumpMap:o.roughnessMap?a=o.roughnessMap:o.metalnessMap?a=o.metalnessMap:o.alphaMap?a=o.alphaMap:o.emissiveMap?a=o.emissiveMap:o.clearcoatMap?a=o.clearcoatMap:o.clearcoatNormalMap?a=o.clearcoatNormalMap:o.clearcoatRoughnessMap?a=o.clearcoatRoughnessMap:o.specularIntensityMap?a=o.specularIntensityMap:o.specularColorMap?a=o.specularColorMap:o.transmissionMap?a=o.transmissionMap:o.thicknessMap&&(a=o.thicknessMap),a!==void 0&&(a.matrixAutoUpdate===!0&&a.updateMatrix(),r.uvTransform.value.copy(a.matrix)),o.aoMap?s=o.aoMap:o.lightMap&&(s=o.lightMap),s!==void 0&&(s.matrixAutoUpdate===!0&&s.updateMatrix(),r.uv2Transform.value.copy(s.matrix))}return{refreshFogUniforms:function(r,o){o.color.getRGB(r.fogColor.value,tL(n)),o.isFog?(r.fogNear.value=o.near,r.fogFar.value=o.far):o.isFogExp2&&(r.fogDensity.value=o.density)},refreshMaterialUniforms:function(r,o,i,a,s){o.ssrParams&&(function(l,c){l.invProjectionMatrix.value=c.ssrParams.invProjectionMatrix,l.ssrSourceBuffer.value=c.ssrParams.sourceBuffer.texture,l.ssrDepthBuffer.value=c.ssrParams.depthBuffer.texture,l.ssrBackfaceDepthBuffer.value=c.ssrParams.backfaceDepthBuffer.texture,l.ssrResolution.value.set(c.ssrParams.sourceBuffer.width,c.ssrParams.sourceBuffer.height),l.ssrStride.value=c.ssrParams.stride,l.ssrThickness.value=c.ssrParams.thickness,l.ssrMaxDistance.value=c.ssrParams.maxDistance,l.ssrJitter.value=c.ssrParams.jitter})(r,o),o.isMeshBasicMaterial||o.isMeshLambertMaterial?t(r,o):o.isMeshStandardMaterial?(t(r,o),(function(l,c){l.roughness.value=c.roughness,l.metalness.value=c.metalness,c.roughnessMap&&(l.roughnessMap.value=c.roughnessMap),c.metalnessMap&&(l.metalnessMap.value=c.metalnessMap),e.get(c).envMap&&(l.envMapIntensity.value=c.envMapIntensity,l.envMapParallaxType.value=c.envMapParallaxType,l.envMapParallaxMatrix.value.copy(c.envMapParallaxMatrix),l.envMapParallaxMatrixInv.value.copy(c.envMapParallaxMatrixInv))})(r,o),o.isMeshPhysicalMaterial&&(function(l,c,u){l.ior.value=c.ior,c.clearcoat>0&&(l.clearcoat.value=c.clearcoat,l.clearcoatRoughness.value=c.clearcoatRoughness,c.clearcoatMap&&(l.clearcoatMap.value=c.clearcoatMap),c.clearcoatRoughnessMap&&(l.clearcoatRoughnessMap.value=c.clearcoatRoughnessMap),c.clearcoatNormalMap&&(l.clearcoatNormalScale.value.copy(c.clearcoatNormalScale),l.clearcoatNormalMap.value=c.clearcoatNormalMap,c.side===1&&l.clearcoatNormalScale.value.negate())),c.transmission>0&&(l.transmission.value=c.transmission,l.transmissionSamplerMap.value=u.texture,l.transmissionSamplerSize.value.set(u.width,u.height),c.transmissionMap&&(l.transmissionMap.value=c.transmissionMap),l.thickness.value=c.thickness,c.thicknessMap&&(l.thicknessMap.value=c.thicknessMap),l.attenuationDistance.value=c.attenuationDistance,l.attenuationColor.value.copy(c.attenuationColor)),l.specularIntensity.value=c.specularIntensity,l.specularColor.value.copy(c.specularColor),c.specularIntensityMap&&(l.specularIntensityMap.value=c.specularIntensityMap),c.specularColorMap&&(l.specularColorMap.value=c.specularColorMap)})(r,o,s)):o.isMeshDepthMaterial?(t(r,o),(function(l,c){l.slopeScaledBias.value=c.slopeScaledBias})(r,o)):o.isMeshDistanceMaterial?(t(r,o),(function(l,c){l.referencePosition.value.copy(c.referencePosition),l.nearDistance.value=c.nearDistance,l.farDistance.value=c.farDistance,l.slopeScaledBias.value=c.slopeScaledBias})(r,o)):o.isMeshNormalMaterial?t(r,o):o.isLineBasicMaterial?((function(l,c){l.diffuse.value.copy(c.color),l.opacity.value=c.opacity})(r,o),o.isLineDashedMaterial&&(function(l,c){l.dashSize.value=c.dashSize,l.totalSize.value=c.dashSize+c.gapSize,l.scale.value=c.scale})(r,o)):o.isPointsMaterial?(function(l,c,u,d){l.diffuse.value.copy(c.color),l.opacity.value=c.opacity,l.size.value=c.size*u,l.scale.value=.5*d,c.map&&(l.map.value=c.map),c.alphaMap&&(l.alphaMap.value=c.alphaMap),c.alphaTest>0&&(l.alphaTest.value=c.alphaTest);let f;c.map?f=c.map:c.alphaMap&&(f=c.alphaMap),f!==void 0&&(f.matrixAutoUpdate===!0&&f.updateMatrix(),l.uvTransform.value.copy(f.matrix))})(r,o,i,a):o.isSpriteMaterial?(function(l,c){l.diffuse.value.copy(c.color),l.opacity.value=c.opacity,l.rotation.value=c.rotation,c.map&&(l.map.value=c.map),c.alphaMap&&(l.alphaMap.value=c.alphaMap),c.alphaTest>0&&(l.alphaTest.value=c.alphaTest);let u;c.map?u=c.map:c.alphaMap&&(u=c.alphaMap),u!==void 0&&(u.matrixAutoUpdate===!0&&u.updateMatrix(),l.uvTransform.value.copy(u.matrix))})(r,o):o.isShadowMaterial?(r.color.value.copy(o.color),r.opacity.value=o.opacity):o.isMeshMaskMaterial?(t(r,o),(function(l,c){c.cameraNearFar&&(l.cameraNearFar.value=c.cameraNearFar),l.depthTexture.value=c.depthTexture,c.textureMatrix&&(l.textureMatrix.value=c.textureMatrix)})(r,o)):o.isMeshNodeMaterial?(function(l,c){c.alphaTest>0&&(l.alphaTest.value=c.alphaTest);for(let d=0;de.maxTextureSize&&(P=Math.ceil(C/e.maxTextureSize),C=e.maxTextureSize);const D=new Float32Array(C*P*4*p),Q=new $g(D,C,P,p);Q.type=1015,Q.needsUpdate=!0;const re=4*L;for(let G=0;G0&&(this.renderTargetMRTMSAA=new c2(this.resolution.x,this.resolution.y,2,{samples:r}),this.renderTargetMRTMSAA.texture[0].name="wboit_rgba",this.renderTargetMRTMSAA.texture[0].format=1023,this.renderTargetMRTMSAA.texture[0].type=t,this.renderTargetMRTMSAA.texture[1].name="wboit_r",this.renderTargetMRTMSAA.texture[1].format=1028,this.renderTargetMRTMSAA.texture[1].type=t),this.fsQuadSolver=new Xi(new Dn({defines:Object.assign({},this.shader.defines),uniforms:_o.clone(this.shader.uniforms),vertexShader:this.shader.vertexShader,fragmentShader:this.shader.fragmentShader,depthTest:!1,depthWrite:!1,blending:5,blendEquation:100,blendSrc:204,blendDst:205,blendEquationAlpha:100,blendSrcAlpha:201,blendDstAlpha:205})),this._layerMasks={},this._matSettings={},this._savedCameraLayers=new Iu}dispose(){super.dispose(),this.renderTargetMRT.dispose(),this.renderTargetMRTMSAA&&this.renderTargetMRTMSAA.dispose()}setSize(e,t){super.setSize(e,t),this.renderTargetMRT.setSize(e,t),this.renderTargetMRTMSAA&&this.renderTargetMRTMSAA.setSize(e,t)}render(e,t,r,o,i){if(this.mute)return;this._ensureProperBuffersClearing(e);const a=e.getRenderTarget();if(a.isWebGLCubeRenderTarget)return void t(r,o,i);const s=o.overrideMaterial;if(s&&!this.isSupportedMaterial(s))return void t(r,o,i);if(this.resolution.x!==a.width&&this.resolution.y!==a.height)return console.warn("v3d.WebGLOITRenderer: render target size mismatch in v3d.WebGLOITWeighted."),void t(r,o,i);this.scene=o,this.camera=i,this._savedCameraLayers.mask=this.camera.layers.mask;const l=e.getClearColor(Vge),c=e.getClearAlpha(),u=e.autoClear,d=e.useOIT,f=e.sortObjects;e.setClearColor(0),e.setClearAlpha(0),e.autoClear=!1,e.sortObjects=!1,e.useOIT=!1;const h=this.renderTargetMRTMSAA&&this.renderTargetMRTMSAA.samples==a.samples;if(s){const p=[{object:o,material:s}];this._accumulationPass(e,t,h,r,p);const m=s.colorWrite;s.colorWrite=!1,s.needsUpdate=!0,e.setRenderTarget(a),t(r,o,i),s.colorWrite=m,s.needsUpdate=!0}else this._saveLayers(r),this._setupLayers(r),i.layers.disableAll(),i.layers.enable(2),t(r,o,i),i.layers.disableAll(),i.layers.enable(1),this._accumulationPass(e,t,h,r),e.setRenderTarget(a),this._renderOnlyDepth(e,t,r,o,i),this._restoreLayers(r);e.setRenderTarget(a),this._solverPass(e,h),e.setClearColor(l),e.setClearAlpha(c),e.sortObjects=f,e.autoClear=u,e.useOIT=d}isSupportedMaterial(e){return!(!e||!e.isMeshStandardMaterial&&!e.isMeshNodeMaterial)}_accumulationPass(e,t,r,o,i){i||(i=o);const a=e.getContext(),s=e.getRenderTarget(),l=e.getClearAlpha();if(this._saveMatSettings(i),this._setupMatSettings(i),e.setClearAlpha(1),s)if(r){e.setRenderTarget(this.renderTargetMRTMSAA),e.clear();const c=e.properties.get(this.renderTargetMRTMSAA).__webglDepthRenderbuffer,u=e.properties.get(s).__webglDepthRenderbuffer;if(u&&(a.framebufferRenderbuffer(36160,36096,36161,u),a.checkFramebufferStatus(36160)!==36053)||(t(o,this.scene,this.camera),e.getTextureUtils().updateMultisampleRenderTarget(this.renderTargetMRTMSAA),u&&(a.framebufferRenderbuffer(36160,36096,36161,c||null),a.checkFramebufferStatus(36160)!==36053)))return void console.error("v3d.WebGLOITRenderer: incomplete framebuffer in v3d.WebGLOITWeighted.")}else if(s.samples>0){e.setRenderTarget(this.renderTargetMRT),e.clear();const c=e.properties.get(this.renderTargetMRT).__webglFramebuffer,u=e.properties.get(s).__webglMultisampledFramebuffer;if(u&&(a.bindFramebuffer(36008,u),a.bindFramebuffer(36009,c),a.blitFramebuffer(0,0,this.resolution.x,this.resolution.y,0,0,this.resolution.x,this.resolution.y,256,9728),a.bindFramebuffer(36160,c),a.checkFramebufferStatus(36160)!==36053))return void console.error("v3d.WebGLOITRenderer: incomplete framebuffer in v3d.WebGLOITWeighted. Can not blit depth buffer from multisample render target.");t(o,this.scene,this.camera)}else{e.setRenderTarget(this.renderTargetMRT),e.clear();const c=e.properties.get(this.renderTargetMRT),u=c.__webglDepthRenderbuffer||c.__webglDepthbuffer,d=e.properties.get(s),f=d.__webglDepthRenderbuffer||d.__webglDepthbuffer;if(f){if(a.framebufferRenderbuffer(36160,36096,36161,f),a.checkFramebufferStatus(36160)!==36053)return void console.error("v3d.WebGLOITRenderer: incomplete framebuffer in v3d.WebGLOITWeighted.")}else if(s.depthTexture){const h=e.properties.get(s.depthTexture).__webglTexture;a.framebufferTexture2D(36160,36096,3553,h,0)}if(t(o,this.scene,this.camera),f){if(a.framebufferRenderbuffer(36160,36096,36161,u||null),a.checkFramebufferStatus(36160)!==36053)return void console.error("v3d.WebGLOITRenderer: incomplete framebuffer in v3d.WebGLOITWeighted.")}else if(s.depthTexture&&(a.framebufferRenderbuffer(36160,36096,36161,u||null),a.checkFramebufferStatus(36160)!==36053))return void console.error("v3d.WebGLOITRenderer: incomplete framebuffer in v3d.WebGLOITWeighted.")}else console.error("v3d.WebGLOITRenderer: undefined render target in v3d.WebGLOITWeighted.");this._restoreMatSettings(i),e.setClearAlpha(l),e.setRenderTarget(s)}_solverPass(e,t){const r=t?this.renderTargetMRTMSAA:this.renderTargetMRT;this.fsQuadSolver.material.uniforms.tRGBABuffer.value=r.texture[0],this.fsQuadSolver.material.uniforms.tFloatBuffer.value=r.texture[1],this.fsQuadSolver.render(e)}_testInitialLayersWithInitialCameraLayers(e){const t=this._layerMasks[e.id];return sL.mask=t!==void 0?t:e.layers.mask,this._savedCameraLayers.test(sL)}_saveLayers(e){this._layerMasks[this.camera.id]=this.camera.layers.mask;for(let t=0,r=e.length;t0)return n;const o=e*t;let i=fL[o];if(i===void 0&&(i=new Float32Array(o),fL[o]=i),e!==0){r.toArray(i,0);for(let a=1,s=0;a!==e;++a)s+=t,n[a].toArray(i,s)}return i}function wr(n,e){if(n.length!==e.length)return!1;for(let t=0,r=n.length;t":" "} ${s}: ${t[a]}`)}return r.join(` +`)}function O0e(n){switch(n){case 3e3:return["Linear","(value)"];case 3001:return["sRGB","(value)"];default:return console.warn("v3d.WebGLProgram: Unsupported encoding:",n),["Linear","(value)"]}}function AL(n,e,t){const r=n.getShaderParameter(e,35713),o=n.getShaderInfoLog(e).trim();if(r&&o==="")return"";const i=/ERROR: 0:(\d+)/.exec(o);if(i){const a=parseInt(i[1]);return t.toUpperCase()+` + +`+o+` + +`+N0e(n.getShaderSource(e),a)}return o}function k0e(n,e){const t=O0e(e);return"vec4 "+n+"(vec4 value) { return LinearTo"+t[0]+t[1]+"; }"}function F0e(n,e){let t;switch(e){case 1:t="Linear";break;case 2:t="Reinhard";break;case 3:t="OptimizedCineon";break;case 4:t="ACESFilmic";break;case 5:t="Custom";break;case 6:t="LogarithmicMax";break;case 7:t="PhysicalMax";break;case 8:t="FilmicBlender";break;case 9:t="AgX";break;case 10:t="PbrNeutral";break;default:console.warn("v3d.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"(vec3 color) { return "+t+"ToneMapping(color); }"}function V0e(n){let e="TONE_MAPPING_LOOK_NONE";return n===1&&(e="TONE_MAPPING_LOOK_AGX_PUNCHY"),e}function U0e(n){return[n.extensionDerivatives||n.bumpMap||n.tangentSpaceNormalMap||n.clearcoatNormalMap||n.flatShading||n.shaderID==="physical"||n.shaderID==="node"||n.useSlopeScaledBias?"#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(_h).join(` +`)}function yL(n,e){const t=[];for(const r in n){const o=n[r];o===!1||e&&e.has(r)||t.push("#define "+r+" "+o)}return t.join(` +`)}function z0e(n,e){const t={},r=n.getProgramParameter(e,35721);for(let o=0;o`,r+e[t])}return n}const H0e=/^[ \t]*#include +<([\w\d./]+)>/gm;function B2(n){return n.replace(H0e,W0e)}function W0e(n,e){const t=Qe[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return B2((typeof __V3D_DEVTOOLS__<"u"?`// included: "${e}" +`:"")+t)}function SL(n){const e=new RegExp("#pragma unroll_loop[\\s]+?for \\(int (\\w+) ?\\= ?(\\d+)\\; ?(\\w+) ?<(=?) ?(\\w+)\\; ?(\\w+)\\+\\+\\) ?\\{"),t=new RegExp("\\{|\\}","g");let r;for(;r=e.exec(n);){let o,i;o=i=t.lastIndex=r.index+r[0].length;let a,s=1;do(a=t.exec(n))&&(a[0]=="{"?s++:a[0]=="}"&&s--,i=a.index);while(a&&s>0);if(s==0){const l=n.substring(r.index,t.lastIndex),c=n.substring(o,i),u=new RegExp(`\\[${r[1]}\\]`,"g"),d=new RegExp(`\\(${r[1]}\\)`,"g");let f="";const h=parseInt(r[2]),p=parseInt(r[5])+(r[4]==="="?1:0);for(let m=h;m0&&(A+=` +`),y=[h,p].filter(_h).join(` +`),y.length>0&&(y+=` +`)):(A=[wL(t),"#define SHADER_NAME "+t.shaderName,m,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.supportsVertexTextures?"#define VERTEX_TEXTURES":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.displacementMap&&t.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",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?"#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.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",t.planeReflProbe?"#define USE_PLANE_REFLECTION":"",` + 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_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)) + #if MORPHTARGETS_COUNT > 0 + attribute vec3 morphTarget0; + #endif + #if MORPHTARGETS_COUNT > 1 + attribute vec3 morphTarget1; + #endif + #if MORPHTARGETS_COUNT > 2 + attribute vec3 morphTarget2; + #endif + #if MORPHTARGETS_COUNT > 3 + attribute vec3 morphTarget3; + #endif + #if MORPHTARGETS_COUNT > 4 + attribute vec3 morphTarget4; + #endif + #if MORPHTARGETS_COUNT > 5 + attribute vec3 morphTarget5; + #endif + + #ifdef USE_MORPHNORMALS + #if MORPHTARGETS_COUNT > 0 + attribute vec3 morphNormal0; + #endif + #if MORPHTARGETS_COUNT > 1 + attribute vec3 morphNormal1; + #endif + #if MORPHTARGETS_COUNT > 2 + attribute vec3 morphNormal2; + #endif + #if MORPHTARGETS_COUNT > 3 + attribute vec3 morphNormal3; + #endif + #if MORPHTARGETS_COUNT > 4 + attribute vec3 morphNormal4; + #endif + #if MORPHTARGETS_COUNT > 5 + attribute vec3 morphNormal5; + #endif + #else + #if MORPHTARGETS_COUNT > 6 + attribute vec3 morphTarget6; + #endif + #if MORPHTARGETS_COUNT > 7 + attribute vec3 morphTarget7; + #endif + #if MORPHTARGETS_COUNT > 8 + attribute vec3 morphTarget8; + #endif + #if MORPHTARGETS_COUNT > 9 + attribute vec3 morphTarget9; + #endif + #if MORPHTARGETS_COUNT > 10 + attribute vec3 morphTarget10; + #endif + #if MORPHTARGETS_COUNT > 11 + attribute vec3 morphTarget11; + #endif + #endif + #endif + + #ifdef USE_SKINNING + attribute vec4 skinIndex; + attribute vec4 skinWeight; + #endif + `].filter(_h).join(` +`),y=[h,wL(t),"#define SHADER_NAME "+t.shaderName,p,G0e(t.materialProfile),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 "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+d:"",t.envMapCubeUVTileSize!==0?`#define cubeUV_maxTileSize ${Js(t.envMapCubeUVTileSize)}`:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",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.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(t.extensionShaderTextureLOD||t.envMap)&&t.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","#define UNITS_SCALE_FACTOR "+f,"uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==0?"#define TONE_MAPPING":"",t.toneMapping!==0?"#define TONE_MAPPING_LOOK "+V0e(t.toneMappingLook):"",t.toneMapping!==0?Qe.tonemapping_pars_fragment:"",t.toneMapping!==0?F0e("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque&&!t.alphaToCoverage?"#define OPAQUE":"",Qe.encodings_pars_fragment,k0e("linearToOutputTexel",t.outputEncoding),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",t.distancePacking?"#define DISTANCE_PACKING "+t.distancePacking:"",t.useSlopeScaledBias?"#define USE_SLOPE_SCALED_BIAS":"",`#define ESM_DISTANCE_SCALE ${Js(t.esmDistanceScale)}`,t.planeReflProbe?"#define USE_PLANE_REFLECTION":"",t.useGTAO?"#define USE_GTAO":"",n.compatSettings.gtaoDisableBkgFix?"#define GTAO_DISABLE_BKG_FIX":"",t.dirLightShadowsCSMLUT&&t.isWebGL2?`#define LUT_DIR_LIGHT_SHADOWS_CSM int[](${t.dirLightShadowsCSMLUT})`:"",` +`].filter(_h).join(` +`)),t.isWebGL2||t.isRawShaderMaterial===!0||(a=`#include +`+a,s=`#include +`+s),t.isMeshNodeMaterial&&(a=CL(a,t.nodeChunks),s=CL(s,t.nodeChunks)),a=B2(a),a=bL(a,t),a=xL(a,t),t.customPrepTokens&&(a=EL(a,t.customPrepTokens)),s=B2(s),s=bL(s,t),s=xL(s,t),t.customPrepTokens&&(s=EL(s,t.customPrepTokens)),a=SL(a),s=SL(s),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(b=`#version 300 es +`,A=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+A,y=["#define varying in",t.glslVersion===Jy?"":"layout(location = 0) out highp vec4 outFragColor;",t.glslVersion===Jy?"":"#define gl_FragColor outFragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DGradEXT textureGrad"].join(` +`)+` +`+y);let E=b+A+a,x=b+y+s;if(n.debug.disableCompiledShaderCache){const re=x.lastIndexOf("}");x=x.substr(0,re)+" gl_FragColor += vec4("+.001*Math.random()+`); +`+x.substr(re)}const w=vL(o,35633,E),L=vL(o,35632,x);typeof __V3D_DEVTOOLS__<"u"&&__V3D_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:{shaderName:t.shaderName,materialName:t.materialName,vertex:E,fragment:x}})),o.attachShader(g,w),o.attachShader(g,L),t.index0AttributeName!==void 0?o.bindAttribLocation(g,0,t.index0AttributeName):t.morphTargets===!0&&o.bindAttribLocation(g,0,"position"),o.linkProgram(g);let C,P,D=!0;function Q(){if(D=!1,n.debug.checkShaderErrors){const re=o.getProgramInfoLog(g).trim(),G=o.getShaderInfoLog(w).trim(),se=o.getShaderInfoLog(L).trim();let ee=!0,ie=!0;if(o.getProgramParameter(g,35714)===!1){ee=!1;const H=AL(o,w,"vertex"),T=AL(o,L,"fragment");console.error("v3d.WebGLProgram: shader error: ",o.getError(),"35715",o.getProgramParameter(g,35715),"gl.getProgramInfoLog",re,H,T)}else re!==""?console.warn("v3d.WebGLProgram: gl.getProgramInfoLog()",re):G!==""&&se!==""||(ie=!1);ie&&(_.diagnostics={runnable:ee,programLog:re,vertexShader:{log:G,prefix:A},fragmentShader:{log:se,prefix:y}})}o.deleteShader(w),o.deleteShader(L)}return this.getUniforms=function(){return C===void 0&&(D&&Q(),C=new m0(o,g)),C},this.getAttributes=function(){return P===void 0&&(D&&Q(),P=z0e(o,g)),P},this.destroy=function(){r.releaseStatesOfProgram(this),o.deleteProgram(g),this.program=void 0},this.name=t.shaderName,this.id=B0e++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=w,this.fragmentShader=L,this.profile={calcRenderTime:!1,renderTime:0,timerQueries:[],materials:new Set},this.getTexUniformCount=function(){return this.getUniforms().seq.reduce((function(re,G){if(G.info)switch(G.info.type){case 35678:case 35679:case 35680:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:re+=G.info.size}return re}),0)},this.beginTimerQuery=function(re,G){if(!this.profile.calcRenderTime)return;const se=re.getExtension(G?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query");if(!se)return;let ee;G?(ee=re.createQuery(),re.beginQuery(se.TIME_ELAPSED_EXT,ee)):(ee=se.createQueryEXT(),se.beginQueryEXT(se.TIME_ELAPSED_EXT,ee)),this.profile.timerQueries.push(ee)},this.endTimerQuery=function(re,G){if(!this.profile.calcRenderTime)return;const se=re.getExtension(G?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query");if(!se)return;G?re.endQuery(se.TIME_ELAPSED_EXT):se.endQueryEXT(se.TIME_ELAPSED_EXT);const ee=this.profile.timerQueries;for(let ie=ee.length-1;ie>=0;ie--){const H=ee[ie],T=G?re.getQueryParameter(H,34919):se.getQueryObjectEXT(H,se.QUERY_RESULT_AVAILABLE_EXT),R=re.getParameter(se.GPU_DISJOINT_EXT);if(T&&!R){const O=G?re.getQueryParameter(H,34918):se.getQueryObjectEXT(H,se.QUERY_RESULT_EXT);this.profile.renderTime+=O/1e6,ee.splice(ie,1)}}},this}let q0e=0;class K0e{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,r=e.fragmentShader,o=this._getShaderStage(t),i=this._getShaderStage(r),a=this._getShaderCacheForMaterial(e);return a.has(o)===!1&&(a.add(o),o.usedTimes++),a.has(i)===!1&&(a.add(i),i.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const r of t)r.usedTimes--,r.usedTimes===0&&this.shaderCache.delete(r.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 r=t.get(e);return r===void 0&&(r=new Set,t.set(e,r)),r}_getShaderStage(e){const t=this.shaderCache;let r=t.get(e);return r===void 0&&(r=new Z0e(e),t.set(e,r)),r}}class Z0e{constructor(e){this.id=q0e++,this.code=e,this.usedTimes=0}}function J0e(n,e,t,r,o,i,a){const s=new Iu,l=new K0e,c=[],u=o.isWebGL2,d=o.logarithmicDepthBuffer,f=o.vertexTextures;let h=o.precision,p=0;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite",MeshMaskMaterial:"mask",MeshNodeMaterial:"node"};return{getParameters:function(g,_,A,y,b,E){const x=y.fog,w=b.geometry,L=g.isMeshNodeMaterial||g.isMeshStandardMaterial?y.environment:null,C=(g.isMeshNodeMaterial||g.isMeshStandardMaterial?t:e).get(g.envMap||L),P=m[g.type];g.precision!==null&&(h=o.getMaxPrecision(g.precision),h!==g.precision&&console.warn("v3d.WebGLProgram.getParameters:",g.precision,"not supported, using",h,"instead."));const D=w.morphAttributes.position||w.morphAttributes.normal||w.morphAttributes.color,Q=D!==void 0?D.length:0;let re,G,se,ee,ie=0;if(w.morphAttributes.position!==void 0&&(ie=1),w.morphAttributes.normal!==void 0&&(ie=2),w.morphAttributes.color!==void 0&&(ie=3),P){const O=Tt[P];re=O.vertexShader,G=O.fragmentShader}else re=g.vertexShader,G=g.fragmentShader,l.update(g),se=l.getVertexShaderID(g),ee=l.getFragmentShaderID(g);const H=n.getRenderTarget(),T=g.alphaTest>0,R=g.clearcoat>0;return{isWebGL2:u,shaderID:P,shaderName:g.type,vertexShader:re,fragmentShader:G,defines:g.defines,customVertexShaderID:se,customFragmentShaderID:ee,isRawShaderMaterial:g.isRawShaderMaterial===!0,glslVersion:g.glslVersion,precision:h,instancing:b.isInstancedMesh===!0,instancingColor:b.isInstancedMesh===!0&&b.instanceColor!==null,supportsVertexTextures:f,outputEncoding:H===null?n.outputEncoding:H.isXRRenderTarget===!0?H.texture.encoding:3e3,map:!!g.map,envMap:!!C,envMapMode:C&&C.mapping,lightMap:!!g.lightMap,aoMap:!!g.aoMap,emissiveMap:!!g.emissiveMap,bumpMap:!!g.bumpMap,normalMap:!!g.normalMap,objectSpaceNormalMap:g.normalMapType===1,tangentSpaceNormalMap:g.normalMapType===0,decodeVideoTexture:!!g.map&&g.map.isVideoTexture===!0&&g.map.encoding===3001,clearcoat:R,clearcoatMap:R&&!!g.clearcoatMap,clearcoatRoughnessMap:R&&!!g.clearcoatRoughnessMap,clearcoatNormalMap:R&&!!g.clearcoatNormalMap,displacementMap:!!g.displacementMap,roughnessMap:!!g.roughnessMap,metalnessMap:!!g.metalnessMap,specularMap:!!g.specularMap,specularIntensityMap:!!g.specularIntensityMap,specularColorMap:!!g.specularColorMap,opaque:g.transparent===!1&&g.blending===1,alphaMap:!!g.alphaMap,alphaTest:T,transmission:g.transmission>0,transmissionMap:!!g.transmissionMap,thicknessMap:!!g.thicknessMap,combine:g.combine,vertexTangents:!!g.normalMap&&!!w.attributes.tangent,vertexColors:g.vertexColors,vertexAlphas:g.vertexColors===!0&&!!w.attributes.color&&w.attributes.color.itemSize===4,vertexUvs:!!(g.map||g.bumpMap||g.normalMap||g.specularMap||g.alphaMap||g.emissiveMap||g.roughnessMap||g.metalnessMap||g.clearcoatMap||g.clearcoatRoughnessMap||g.clearcoatNormalMap||g.displacementMap||g.transmissionMap||g.thicknessMap||g.specularIntensityMap||g.specularColorMap),uvsVertexOnly:!(g.map||g.bumpMap||g.normalMap||g.specularMap||g.alphaMap||g.emissiveMap||g.roughnessMap||g.metalnessMap||g.clearcoatNormalMap||g.transmission>0||g.transmissionMap||g.thicknessMap||g.specularIntensityMap||g.specularColorMap||!g.displacementMap),fog:!!x,useFog:g.fog===!0,fogExp2:x&&x.isFogExp2,flatShading:!!g.flatShading,sizeAttenuation:g.sizeAttenuation,logarithmicDepthBuffer:d,skinning:b.isSkinnedMesh===!0,morphTargets:w.morphAttributes.position!==void 0,morphNormals:w.morphAttributes.normal!==void 0,morphColors:w.morphAttributes.color!==void 0,morphTargetsCount:Q,morphTextureStride:ie,numDirLights:_.directional.length,numPointLights:_.point.length,numSpotLights:_.spot.length,numRectAreaLights:_.rectArea.length,numHemiLights:_.hemi.length,numPointLightShadows:_.pointShadowMap.length,numSpotLightShadows:_.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:g.dithering,shadowMapEnabled:n.shadowMap.enabled&&A.length>0,shadowMapType:n.shadowMap.type,toneMapping:g.toneMapped?n.toneMapping:0,toneMappingLook:g.toneMapped?n.toneMappingLook:0,premultipliedAlpha:g.premultipliedAlpha,doubleSided:g.side===2,flipSided:g.side===1,useDepthPacking:!!g.depthPacking,depthPacking:g.depthPacking||0,envMapCubeUVTileSize:C&&C.mapping===306&&C.image!==void 0?C.image.width/3:0,distancePacking:g.distancePacking!==void 0&&g.distancePacking,useSlopeScaledBias:g.useSlopeScaledBias!==void 0&&g.useSlopeScaledBias,esmDistanceScale:n.shadowMap.esmDistanceScale,numRectAreaLightShadows:_.rectAreaShadowMap.length,numDirLightShadowsCSM:_.directionalShadowCSM.length,numDirLightShadowCSMCascades:_.directionalShadowCSMCascade.length,numDirLightShadowsCSMWithFade:_.numDirectionalShadowsCSMWithFade,dirLightShadowsCSMLUT:_.directionalShadowCSMLUT,planeReflProbe:!!E,materialName:g.name,materialProfile:g.profile,unitsScaleFactor:n.unitsScaleFactor,alphaToCoverage:!!g.alphaToCoverage,customPrepTokens:g.customPrepTokens,definesFragOnly:g.definesFragOnly,isMeshNodeMaterial:g.isMeshNodeMaterial,nodeChunks:g.nodeChunks,nodeChunksHash:g.nodeChunksHash,useGTAO:n.canUseGTAO()&&g.isMeshNodeMaterial&&g.canUseGTAO(),index0AttributeName:g.index0AttributeName,extensionDerivatives:g.extensions&&g.extensions.derivatives,extensionFragDepth:g.extensions&&g.extensions.fragDepth,extensionDrawBuffers:g.extensions&&g.extensions.drawBuffers,extensionShaderTextureLOD:g.extensions&&g.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||r.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||r.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||r.has("EXT_shader_texture_lod"),customProgramCacheKey:g.customProgramCacheKey()}},getProgramCacheKey:function(g){const _=[];g.shaderID?_.push(g.shaderID):(_.push(g.customVertexShaderID),_.push(g.customFragmentShaderID));for(const A in g.defines)_.push(A),_.push(g.defines[A]);if(g.customPrepTokens!==void 0)for(const A in g.customPrepTokens)_.push(A),_.push(g.customPrepTokens[A]);return g.isRawShaderMaterial===!1&&((function(A,y){A.push(y.precision),A.push(y.outputEncoding),A.push(y.envMapMode),A.push(y.combine),A.push(y.vertexUvs),A.push(y.fogExp2),A.push(y.sizeAttenuation),A.push(y.morphTargetsCount),A.push(y.morphAttributeCount),A.push(y.numDirLights),A.push(y.numPointLights),A.push(y.numSpotLights),A.push(y.numHemiLights),A.push(y.numRectAreaLights),A.push(y.numPointLightShadows),A.push(y.numSpotLightShadows),A.push(y.shadowMapType),A.push(y.toneMapping),A.push(y.toneMappingLook),A.push(y.numClippingPlanes),A.push(y.numClipIntersection),A.push(y.depthPacking),A.push(y.envMapCubeUVTileSize),A.push(y.unitsScaleFactor),A.push(y.esmDistanceScale),A.push(y.numRectAreaLightShadows),A.push(y.numDirLightShadowsCSM),A.push(y.numDirLightShadowCSMCascades),A.push(y.numDirLightShadowsCSMWithFade),A.push(y.dirLightShadowsCSMLUT)})(_,g),(function(A,y){s.disableAll(),y.isWebGL2&&s.enable(0),y.supportsVertexTextures&&s.enable(1),y.instancing&&s.enable(2),y.instancingColor&&s.enable(3),y.map&&s.enable(4),y.envMap&&s.enable(5),y.lightMap&&s.enable(6),y.aoMap&&s.enable(7),y.emissiveMap&&s.enable(8),y.bumpMap&&s.enable(9),y.normalMap&&s.enable(10),y.objectSpaceNormalMap&&s.enable(11),y.tangentSpaceNormalMap&&s.enable(12),y.clearcoat&&s.enable(13),y.clearcoatMap&&s.enable(14),y.clearcoatRoughnessMap&&s.enable(15),y.clearcoatNormalMap&&s.enable(16),y.displacementMap&&s.enable(17),y.specularMap&&s.enable(18),y.roughnessMap&&s.enable(19),y.metalnessMap&&s.enable(20),y.alphaMap&&s.enable(21),y.alphaTest&&s.enable(22),y.vertexColors&&s.enable(23),y.vertexAlphas&&s.enable(24),y.vertexUvs&&s.enable(25),y.vertexTangents&&s.enable(26),y.uvsVertexOnly&&s.enable(27),A.push(s.mask),s.disableAll(),y.fog&&s.enable(0),y.useFog&&s.enable(1),y.flatShading&&s.enable(2),y.logarithmicDepthBuffer&&s.enable(3),y.skinning&&s.enable(4),y.morphTargets&&s.enable(5),y.morphNormals&&s.enable(6),y.morphColors&&s.enable(7),y.premultipliedAlpha&&s.enable(8),y.shadowMapEnabled&&s.enable(9),y.doubleSided&&s.enable(10),y.flipSided&&s.enable(11),y.useDepthPacking&&s.enable(12),y.dithering&&s.enable(13),y.specularIntensityMap&&s.enable(14),y.specularColorMap&&s.enable(15),y.transmission&&s.enable(16),y.transmissionMap&&s.enable(17),y.thicknessMap&&s.enable(18),y.decodeVideoTexture&&s.enable(19),y.opaque&&s.enable(20),y.distancePacking&&s.enable(21),y.useSlopeScaledBias&&s.enable(22),y.useGTAO&&s.enable(23),y.planeReflProbe&&s.enable(24),y.alphaToCoverage&&s.enable(25),A.push(s.mask)})(_,g),_.push(n.outputEncoding)),_.push(g.customProgramCacheKey),g.nodeChunksHash!==void 0&&_.push(g.nodeChunksHash),_.join()},getUniforms:function(g){const _=m[g.type];let A;if(_){const y=Tt[_];A=_o.clone(y.uniforms)}else A=g.uniforms;return A},acquireProgram:function(g,_){let A;for(let b=0,E=c.length;b0?r.push(f):l.transparent===!0?o.push(f):t.push(f)},unshift:function(a,s,l,c,u,d){const f=i(a,s,l,c,u,d);l.transmission>0?r.unshift(f):l.transparent===!0?o.unshift(f):t.unshift(f)},finish:function(){for(let a=e,s=n.length;a1&&t.sort(a||t1e),r.length>1&&r.sort(s||ML),o.length>1&&o.sort(s||ML)}}}function n1e(){let n=new WeakMap;return{get:function(e,t){const r=n.get(e);let o;return r===void 0?(o=new TL,n.set(e,[o])):t>=r.length?(o=new TL,r.push(o)):o=r[t],o},dispose:function(){n=new WeakMap}}}function r1e(){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 N,color:new Ge};break;case"SpotLight":t={position:new N,direction:new N,color:new Ge,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new N,color:new Ge,distance:0,decay:0};break;case"HemisphereLight":t={direction:new N,skyColor:new Ge,groundColor:new Ge};break;case"RectAreaLight":t={color:new Ge,position:new N,halfWidth:new N,halfHeight:new N}}return n[e.id]=t,t}}}function o1e(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={cascadeIdxEnd:1,cameraNear:1,shadowFar:0,fade:.25};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new be,shadow:0,shadowCameraNear:1,shadowCameraFar:1e3,expBias:1};break;case"PointLight":case"RectAreaLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new be,shadowCameraNear:1,shadowCameraFar:1e3,expBias:1}}return n[e.id]=t,t}}}let i1e=0;function a1e(n,e){const t=n.shadow,r=e.shadow;let o=0;return t&&t.isDirectionalLightShadowCSM&&r&&r.isDirectionalLightShadowCSM&&(o+=(r.fade!=0?1:0)-(t.fade!=0?1:0)),(e.castShadow?4:0)-(n.castShadow?4:0)+(e.map?2:0)-(n.map?2:0)+o}function s1e(n,e){const t=new r1e,r=o1e(),o={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numPointShadows:-1,numSpotShadows:-1,numRectAreaShadows:-1,numDirectionalShadowsCSM:-1,numDirectionalShadowsCSMCascade:-1,numDirectionalShadowsCSMWithFade:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],rectAreaShadow:[],rectAreaShadowMap:[],rectAreaShadowMatrix:[],directionalShadowCSM:[],directionalShadowCSMMap:[],directionalShadowCSMMatrix:[],directionalShadowCSMCascade:[],directionalShadowCSMLUT:[],numDirectionalShadowsCSMWithFade:0};for(let l=0;l<9;l++)o.probe.push(new N);const i=new N,a=new Ue,s=new Ue;return{setup:function(l){let c=0,u=0,d=0;for(let L=0;L<9;L++)o.probe[L].set(0,0,0);let f=0,h=0,p=0,m=0,g=0,_=0,A=0,y=0,b=0,E=0,x=0;l.sort(a1e);for(let L=0,C=l.length;L0&&(e.isWebGL2||n.has("OES_texture_float_linear")===!0?(o.rectAreaLTC1=qe.LTC_FLOAT_1,o.rectAreaLTC2=qe.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(o.rectAreaLTC1=qe.LTC_HALF_1,o.rectAreaLTC2=qe.LTC_HALF_2):console.error("v3d.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),o.ambient[0]=c,o.ambient[1]=u,o.ambient[2]=d;const w=o.hash;w.directionalLength===f&&w.pointLength===h&&w.spotLength===p&&w.rectAreaLength===m&&w.hemiLength===g&&w.numPointShadows===_&&w.numSpotShadows===A&&w.numRectAreaShadows===y&&w.numDirectionalShadowsCSM===b&&w.numDirectionalShadowsCSMCascade===x&&w.numDirectionalShadowsCSMWithFade===E||(o.directional.length=f,o.spot.length=p,o.rectArea.length=m,o.point.length=h,o.hemi.length=g,o.pointShadow.length=_,o.pointShadowMap.length=_,o.spotShadow.length=A,o.spotShadowMap.length=A,o.pointShadowMatrix.length=_,o.spotShadowMatrix.length=A,w.directionalLength=f,w.pointLength=h,w.spotLength=p,w.rectAreaLength=m,w.hemiLength=g,w.numPointShadows=_,w.numSpotShadows=A,o.rectAreaShadow.length=y,o.rectAreaShadowMap.length=y,o.rectAreaShadowMatrix.length=y,o.directionalShadowCSM.length=b,o.directionalShadowCSMMap.length=x,o.directionalShadowCSMMatrix.length=x,o.directionalShadowCSMCascade.length=x,o.directionalShadowCSMLUT.length=x,o.numDirectionalShadowsCSMWithFade=E,w.numRectAreaShadows=y,w.numDirectionalShadowsCSM=b,w.numDirectionalShadowsCSMCascade=x,w.numDirectionalShadowsCSMWithFade=E,o.version=i1e++)},setupView:function(l,c){let u=0,d=0,f=0,h=0,p=0,m=0;const g=c.matrixWorldInverse;for(let _=0,A=l.length;_s.influenceDistance-l.influenceDistance))},pushPlaneReflProbe:function(s){a.push(s)}}}function l1e(n,e){let t=new WeakMap;return{get:function(r,o=0){const i=t.get(r);let a;return i===void 0?(a=new N2(n,e),t.set(r,[a])):o>=i.length?(a=new N2(n,e),i.push(a)):a=i[o],a},dispose:function(){t=new WeakMap}}}class Gu extends Nr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.useSlopeScaledBias=!1,this.slopeScaledBias=0,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.useSlopeScaledBias=e.useSlopeScaledBias,this.slopeScaledBias=e.slopeScaledBias,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 IL extends Nr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new N,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.defines={DISTANCE_SCALE:"1.0"},this.distancePacking=3301,this.useSlopeScaledBias=!1,this.slopeScaledBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.distancePacking=e.distancePacking,this.useSlopeScaledBias=e.useSlopeScaledBias,this.slopeScaledBias=e.slopeScaledBias,this}}const O2=new Ue,RL=new N,LL=new N;class g0{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.mapSize=new be(512,512),this.map=null,this.matrix=new Ue,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new ph,this._frameExtents=new be(1,1),this._viewportCount=1,this._viewports=[new pt(0,0,1,1)],this.expBias=1,this.slopeScaledBias=0,this._additionalMap2D=null,this._additionalMapCube=null,this.isLightShadow=!0}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,r=this.matrix;RL.setFromMatrixPosition(e.matrixWorld),t.position.copy(RL),LL.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(LL),t.updateMatrixWorld(),O2.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(O2),r.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),r.multiply(O2)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this._additionalMap2D!==null&&this._additionalMap2D.dispose(),this._additionalMapCube!==null&&this._additionalMapCube.dispose()}removeMaps(){this.map=null,this._additionalMap2D=null,this._additionalMapCube=null}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this.expBias=e.expBias,this.slopeScaledBias=e.slopeScaledBias,this}clone(){return new this.constructor().copy(this)}}const c1e=Math.PI/4,PL=new Ue,vh=new N,k2=new N;class u1e extends g0{constructor(){super(new gr(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.useOmniMaps=!1,this.useMinFov90=!1,this._frameExtentsOmni=new be(4,2),this._viewportCountOmni=6,this._viewportsOmni=[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 N(1,0,0),new N(-1,0,0),new N(0,0,1),new N(0,0,-1),new N(0,1,0),new N(0,-1,0)],this._cubeUps=[new N(0,1,0),new N(0,1,0),new N(0,1,0),new N(0,1,0),new N(0,0,1),new N(0,0,-1)]}updateMatrices(e,t=0){if(this.useOmniMaps){const r=this.camera,o=this.matrix;vh.setFromMatrixPosition(e.matrixWorld),r.position.copy(vh),k2.copy(r.position),k2.add(this._cubeDirections[t]),r.up.copy(this._cubeUps[t]),r.lookAt(k2),r.updateMatrixWorld(),o.makeTranslation(-vh.x,-vh.y,-vh.z),PL.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),this._frustum.setFromProjectionMatrix(PL)}else{const r=this.camera,o=2*xu*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,a=e.distance||r.far;o===r.fov&&i===r.aspect&&a===r.far||(r.fov=o,r.aspect=i,r.far=a,r.updateProjectionMatrix()),super.updateMatrices(e)}}getViewportCount(){return this.useOmniMaps?this._viewportCountOmni:super.getViewportCount()}getViewport(e){return this.useOmniMaps?this._viewportsOmni[e]:super.getViewport(e)}getFrameExtents(){return this.useOmniMaps?this._frameExtentsOmni:super.getFrameExtents()}calcUseOmniMaps(e){return this.useOmniMaps=e>c1e,this.useOmniMaps}copy(e){return super.copy(e),this.focus=e.focus,this.useOmniMaps=e.useOmniMaps,this.useMinFov90=e.useMinFov90,this}}function d1e(n,e,t){let r=new ph;const o=new be,i=new be,a=new pt,s=new Gu({depthPacking:3201}),l=new IL,c={},u=t.maxTextureSize,d=t.isWebGL2,f={0:1,1:0,2:2},h=new Ue;new Ue;const p=new be(u,u),m=new N,g=new N;new N;const _=[new N(1,0,0),new N(-1,0,0),new N(0,1,0),new N(0,-1,0),new N(0,0,1),new N(0,0,-1)],A=[new N(0,1,0),new N(0,1,0),new N(0,0,1),new N(0,0,-1),new N(0,1,0),new N(0,1,0)];new pt,new pt,new pt,new pt,new pt,new pt,new ni,new N,new N,new N,new N,new N,new N,new N,new N;const y=new Mt(new ms(1,1,1,1));y.name="esmFarPlane",y.castShadow=!0,y.material.shadowSide=0;const b=new ya(-1,1,1,-1,0,10),E=new Mt(new ms(2,2)),x=new Dn({type:"ShadowCubeOctahedral",defines:Object.assign({},Tt.cubeOctahedral.defines),uniforms:_o.clone(Tt.cubeOctahedral.uniforms),vertexShader:Tt.cubeOctahedral.vertexShader,fragmentShader:Tt.cubeOctahedral.fragmentShader}),w={},L={},C=this;function P(ie,H,T,R,O,W,ae,ne,oe){let F=null;const k=ne||ae===3?ie.customDistanceMaterial:ie.customDepthMaterial;if(F=k!==void 0?k:ne||ae===3?l:s,n.localClippingEnabled&&T.clipShadows===!0&&Array.isArray(T.clippingPlanes)&&T.clippingPlanes.length!==0||T.displacementMap&&T.displacementScale!==0||T.alphaMap&&T.alphaTest>0||T.map&&T.alphaTest>0){const q=F.uuid,j=T.uuid;let U=c[q];U===void 0&&(U={},c[q]=U);let z=U[j];z===void 0&&(z=F.clone(),U[j]=z),F=z}switch(F.visible=T.visible,F.wireframe=T.wireframe,F.side=T.shadowSide!==null?T.shadowSide:f[T.side],F.alphaMap=T.alphaMap,F.alphaTest=T.alphaTest,F.map=T.map,F.clipShadows=T.clipShadows,F.clippingPlanes=T.clippingPlanes,F.clipIntersection=T.clipIntersection,F.displacementMap=T.displacementMap,F.displacementScale=T.displacementScale,F.displacementBias=T.displacementBias,F.wireframeLinewidth=T.wireframeLinewidth,F.linewidth=T.linewidth,!ne&&ae!==3||F.isMeshDistanceMaterial!==!0||(F.referencePosition.copy(oe),F.nearDistance=O,F.farDistance=W,F.distancePacking=ae===3?3302:3301),ae===3&&(F.defines.DISTANCE_SCALE=Js(C.esmDistanceScale)),R.shadow.isDirectionalLightShadowCascade&&R.shadow.pancakeDepth&&(F.defines.PANCAKE_DEPTH="",F.defines.CAM_WIDTH=Js(R.shadow.camera.right),F.defines.CAM_HEIGHT=Js(R.shadow.camera.top)),ae){case 0:case 1:case 2:F.useSlopeScaledBias=!0,F.slopeScaledBias=R.shadow.slopeScaledBias;break;case 3:F.useSlopeScaledBias=!0,F.slopeScaledBias=.5}return F}function D(ie,H,T,R,O,W){if(ie.visible===!1)return;if((H.ignoreShadowLayers||ie.layers.test(H.layers))&&(ie.isMesh||ie.isLine||ie.isPoints)&&ie.castShadow&&(!ie.frustumCulled||r.intersectsObject(ie))){ie.modelViewMatrix.multiplyMatrices(T.matrixWorldInverse,ie.matrixWorld);const ne=e.update(ie),oe=ie.material;if(Array.isArray(oe)){const F=ne.groups;for(let k=0,q=F.length;ku||o.y>u)&&(o.x>u&&(i.x=Math.floor(u/ae.x),o.x=i.x*ae.x,O.mapSize.x=i.x),o.y>u&&(i.y=Math.floor(u/ae.y),o.y=i.y*ae.y,O.mapSize.y=i.y)),T.isSpotLight&&O.map&&O.map.width/O.map.height!==2){const F=O.map;O.map=O._additionalMap2D,O._additionalMap2D=F}const ne=T.isPointLight||T.isRectAreaLight||T.isSpotLight&&O.useOmniMaps;if(ne?T.isSpotLight&&(W.fov=90,W.updateProjectionMatrix()):T.isSpotLight&&O.useMinFov90&&(W.fov=90,W.updateProjectionMatrix()),O.map===null){const F={minFilter:1003,magFilter:1003,format:1023};O.map=new nn(o.x,o.y,F),O.map.texture.name=T.name+".shadowMap",W.updateProjectionMatrix()}n.state.buffers.color.setClear(1,1,1,1),n.setRenderTarget(O.map),n.clear();const oe=O.getViewportCount();for(let F=0;F=1):se.indexOf("OpenGL ES")!==-1&&(G=parseFloat(/^OpenGL ES (\d)/.exec(se)[1]),re=G>=2);let ee=null,ie={};const H=n.getParameter(3088),T=n.getParameter(2978),R=new pt().fromArray(H),O=new pt().fromArray(T);function W(v,M,S){const I=new Uint8Array(4),J=n.createTexture();n.bindTexture(v,J),n.texParameteri(v,10241,9728),n.texParameteri(v,10240,9728);for(let $=0;$j||F.height>j)&&(U=j/Math.max(F.width,F.height)),U<1||k===!0){if(typeof HTMLImageElement<"u"&&F instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&F instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&F instanceof ImageBitmap){const z=k?Vg:Math.floor,v=z(U*F.width),M=z(U*F.height);m===void 0&&(m=A(v,M));const S=q?A(v,M):m;return S.width=v,S.height=M,S.getContext("2d").drawImage(F,0,0,v,M),console.warn("v3d.WebGLRenderer: Texture has been resized from ("+F.width+"x"+F.height+") to ("+v+"x"+M+")."),S}return"data"in F&&console.warn("v3d.WebGLRenderer: Image in DataTexture is too big ("+F.width+"x"+F.height+")."),F}return F}function b(F){return n2(F.width)&&n2(F.height)}function E(F,k){return F.generateMipmaps&&k&&F.minFilter!==1003&&F.minFilter!==1006}function x(F){n.generateMipmap(F)}function w(F,k,q,j,U=!1){if(s===!1)return k;if(F!==null){if(n[F]!==void 0)return n[F];console.warn("v3d.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+F+"'")}let z=k;return k===6403&&(q===5126&&(z=33326),q===5131&&(z=33325),q===5121&&(z=33321)),k===36244&&(q===5121&&(z=33330),q===5123&&(z=33332),q===5125&&(z=33334),q===5120&&(z=33329),q===5122&&(z=33331),q===5124&&(z=33333)),k===33319&&(q===5126&&(z=33328),q===5131&&(z=33327),q===5121&&(z=33323)),k===33320&&(q===5121&&(z=33336),q===5123&&(z=33338),q===5125&&(z=33340),q===5120&&(z=33335),q===5122&&(z=33337),q===5124&&(z=33339)),k===36248&&(q===5121&&(z=36221),q===5123&&(z=36215),q===5125&&(z=36209),q===5120&&(z=36239),q===5122&&(z=36233),q===5124&&(z=36227)),k===36249&&(q===5121&&(z=36220),q===5123&&(z=36214),q===5125&&(z=36208),q===5120&&(z=36238),q===5122&&(z=36232),q===5124&&(z=36226)),k===6407&&q===35902&&(z=35901),k===6408&&(q===5126&&(z=34836),q===5131&&(z=34842),q===5121&&(z=j===3001&&U===!1?35907:32856),q===32819&&(z=32854),q===32820&&(z=32855)),z!==33325&&z!==33326&&z!==33327&&z!==33328&&z!==34842&&z!==34836||e.get("EXT_color_buffer_float"),z}function L(F,k,q){return E(F,q)===!0||F.isFramebufferTexture&&F.minFilter!==1003&&F.minFilter!==1006?Math.log2(Math.max(k.width,k.height))+1:F.mipmaps!==void 0&&F.mipmaps.length>0?F.mipmaps.length:F.isCompressedTexture&&Array.isArray(F.image)?k.mipmaps.length:1}function C(F){return F===1003||F===1004||F===1005?9728:9729}function P(F){const k=F.target;k.removeEventListener("dispose",P),(function(q){const j=r.get(q);if(j.__webglInit===void 0)return;const U=q.source,z=g.get(U);if(z){const v=z[j.__cacheKey];v.usedTimes--,v.usedTimes===0&&Q(q),Object.keys(z).length===0&&g.delete(U)}r.remove(q)})(k),k.isVideoTexture&&p.delete(k)}function D(F){const k=F.target;k.removeEventListener("dispose",D),(function(q){const j=q.texture,U=r.get(q),z=r.get(j);if(z.__webglTexture!==void 0&&(n.deleteTexture(z.__webglTexture),a.memory.textures--),q.depthTexture&&q.depthTexture.dispose(),q.isWebGLCubeRenderTarget)for(let v=0;v<6;v++)n.deleteFramebuffer(U.__webglFramebuffer[v]),U.__webglDepthbuffer&&n.deleteRenderbuffer(U.__webglDepthbuffer[v]);else{if(n.deleteFramebuffer(U.__webglFramebuffer),U.__webglDepthbuffer&&n.deleteRenderbuffer(U.__webglDepthbuffer),U.__webglMultisampledFramebuffer&&n.deleteFramebuffer(U.__webglMultisampledFramebuffer),U.__webglColorRenderbuffer)for(let v=0;v0&&q.__version!==F.version){const j=F.image;if(j===null)console.warn("v3d.WebGLRenderer: Texture marked for update but no image data found.");else{if(j.complete!==!1)return void T(q,F,k);console.warn("v3d.WebGLRenderer: Texture marked for update but image is incomplete")}}t.bindTexture(3553,q.__webglTexture,33984+k)}const se={[cR]:10497,[uR]:33071,[dR]:33648},ee={[fR]:9728,[hR]:9984,[pR]:9986,[mR]:9729,[gR]:9985,[_R]:9987};function ie(F,k,q){if(q?(n.texParameteri(F,10242,se[k.wrapS]),n.texParameteri(F,10243,se[k.wrapT]),F!==32879&&F!==35866||n.texParameteri(F,32882,se[k.wrapR]),n.texParameteri(F,10240,ee[k.magFilter]),n.texParameteri(F,10241,ee[k.minFilter])):(n.texParameteri(F,10242,33071),n.texParameteri(F,10243,33071),F!==32879&&F!==35866||n.texParameteri(F,32882,33071),k.wrapS===1001&&k.wrapT===1001||console.warn("v3d.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to v3d.ClampToEdgeWrapping."),n.texParameteri(F,10240,C(k.magFilter)),n.texParameteri(F,10241,C(k.minFilter)),k.minFilter!==1003&&k.minFilter!==1006&&console.warn("v3d.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to v3d.NearestFilter or v3d.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){const j=e.get("EXT_texture_filter_anisotropic");if(k.magFilter===1003||k.minFilter!==1005&&k.minFilter!==1008||k.type===1015&&e.has("OES_texture_float_linear")===!1||s===!1&&k.type===1016&&e.has("OES_texture_half_float_linear")===!1)return;(k.anisotropy>1||r.get(k).__currentAnisotropy)&&(n.texParameterf(F,j.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(k.anisotropy,o.getMaxAnisotropy())),r.get(k).__currentAnisotropy=k.anisotropy)}}function H(F,k){let q=!1;F.__webglInit===void 0&&(F.__webglInit=!0,k.addEventListener("dispose",P));const j=k.source;let U=g.get(j);U===void 0&&(U={},g.set(j,U));const z=(function(v){const M=[];return M.push(v.wrapS),M.push(v.wrapT),M.push(v.wrapR||0),M.push(v.magFilter),M.push(v.minFilter),M.push(v.anisotropy),M.push(v.internalFormat),M.push(v.format),M.push(v.type),M.push(v.generateMipmaps),M.push(v.premultiplyAlpha),M.push(v.flipY),M.push(v.unpackAlignment),M.push(v.encoding),M.join()})(k);if(z!==F.__cacheKey){U[z]===void 0&&(U[z]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,a.addTextureSpec(k),q=!0),U[z].usedTimes++;const v=U[F.__cacheKey];v!==void 0&&(U[F.__cacheKey].usedTimes--,v.usedTimes===0&&Q(k)),F.__cacheKey=z,F.__webglTexture=U[z].texture}return q}function T(F,k,q){let j=3553;(k.isDataArrayTexture||k.isCompressedArrayTexture)&&(j=35866),k.isData3DTexture&&(j=32879);const U=H(F,k),z=k.source;t.bindTexture(j,F.__webglTexture,33984+q);const v=r.get(z);if(z.version!==v.__version||U===!0){t.activeTexture(33984+q),n.pixelStorei(37440,k.flipY),n.pixelStorei(37441,k.premultiplyAlpha),n.pixelStorei(3317,k.unpackAlignment),n.pixelStorei(37443,0);const M=(function(te){return!s&&(te.wrapS!==1001||te.wrapT!==1001||te.minFilter!==1003&&te.minFilter!==1006)})(k)&&b(k.image)===!1;let S=y(k.image,M,!1,u);S=oe(k,S);const I=b(S)||s,J=i.convert(k.format,k.encoding);let $,B=i.convert(k.type),V=w(k.internalFormat,J,B,k.encoding,k.isVideoTexture);ie(j,k,I);const Y=k.mipmaps,le=s&&k.isVideoTexture!==!0,me=v.__version===void 0||U===!0,fe=L(k,S,I);if(k.isDepthTexture)V=6402,s?V=k.type===1015?36012:k.type===1014?33190:k.type===1020?35056:33189:k.type===1015&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),k.format===1026&&V===6402&&k.type!==1012&&k.type!==1014&&(console.warn("v3d.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),k.type=1014,B=i.convert(k.type)),k.format===1027&&V===6402&&(V=34041,k.type!==1020&&(console.warn("v3d.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),k.type=1020,B=i.convert(k.type))),me&&(le?t.texStorage2D(3553,1,V,S.width,S.height):t.texImage2D(3553,0,V,S.width,S.height,0,J,B,null));else if(k.isDataTexture)if(Y.length>0&&I){le&&me&&t.texStorage2D(3553,fe,V,Y[0].width,Y[0].height);for(let te=0,de=Y.length;te>=1,de>>=1}}else if(Y.length>0&&I){le&&me&&t.texStorage2D(3553,fe,V,Y[0].width,Y[0].height);for(let te=0,de=Y.length;te=34069&&U<=34074)&&n.framebufferTexture2D(36160,j,U,r.get(q).__webglTexture,0),t.bindFramebuffer(36160,null)}function O(F,k,q){if(n.bindRenderbuffer(36161,F),k.depthBuffer&&!k.stencilBuffer){let j=33189;if(s&&(j=33190),q||ne(k)){const U=k.depthTexture;U&&U.isDepthTexture&&(U.type===1015?j=36012:U.type===1014&&(j=33190));const z=ae(k);ne(k)?f.renderbufferStorageMultisampleEXT(36161,z,j,k.width,k.height):n.renderbufferStorageMultisample(36161,z,j,k.width,k.height)}else n.renderbufferStorage(36161,j,k.width,k.height);n.framebufferRenderbuffer(36160,36096,36161,F)}else if(k.depthBuffer&&k.stencilBuffer){const j=ae(k);q&&ne(k)===!1?n.renderbufferStorageMultisample(36161,j,35056,k.width,k.height):ne(k)?f.renderbufferStorageMultisampleEXT(36161,j,35056,k.width,k.height):n.renderbufferStorage(36161,34041,k.width,k.height),n.framebufferRenderbuffer(36160,33306,36161,F)}else{const j=k.isWebGLMultipleRenderTargets===!0?k.texture:[k.texture];for(let U=0;U0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&k.__useRenderToTexture!==!1}function oe(F,k){const q=F.encoding,j=F.format,U=F.type;return F.isCompressedTexture===!0||F.isVideoTexture===!0||F.format===1035||q!==3e3&&(q===3001?s===!1?e.has("EXT_sRGB")===!0&&j===1023?(F.format=1035,F.minFilter=1006,F.generateMipmaps=!1):k=zR.sRGBToLinear(k):j===1023&&U===1009||console.warn("v3d.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType. Perhaps you've set sRGB color space for an HDR image?"):console.error("v3d.WebGLTextures: Unsupported texture encoding:",q)),k}this.allocateTextureUnit=function(){const F=re;return F>=l&&console.warn("v3d.WebGLTextures: Trying to use "+F+" texture units while this GPU supports only "+l),re+=1,F},this.resetTextureUnits=function(){re=0},this.setTexture2D=G,this.setTexture2DArray=function(F,k){const q=r.get(F);F.version>0&&q.__version!==F.version?T(q,F,k):t.bindTexture(35866,q.__webglTexture,33984+k)},this.setTexture3D=function(F,k){const q=r.get(F);F.version>0&&q.__version!==F.version?T(q,F,k):t.bindTexture(32879,q.__webglTexture,33984+k)},this.setTextureCube=function(F,k){const q=r.get(F);F.version>0&&q.__version!==F.version?(function(j,U,z){if(U.image.length!==6)return;const v=H(j,U),M=U.source;t.bindTexture(34067,j.__webglTexture,33984+z);const S=r.get(M);if(M.version!==S.__version||v===!0){t.activeTexture(33984+z),n.pixelStorei(37440,U.flipY),n.pixelStorei(37441,U.premultiplyAlpha),n.pixelStorei(3317,U.unpackAlignment),n.pixelStorei(37443,0);const I=U.isCompressedTexture||U.image[0].isCompressedTexture,J=U.image[0]&&U.image[0].isDataTexture,$=[];for(let Ie=0;Ie<6;Ie++)$[Ie]=I||J?J?U.image[Ie].image:U.image[Ie]:y(U.image[Ie],!1,!0,c),$[Ie]=oe(U,$[Ie]);const B=$[0],V=b(B)||s,Y=i.convert(U.format,U.encoding),le=i.convert(U.type),me=w(U.internalFormat,Y,le,U.encoding),fe=s&&U.isVideoTexture!==!0,te=S.__version===void 0||v===!0;let de,we=L(U,B,V);if(ie(34067,U,V),I){fe&&te&&t.texStorage2D(34067,we,me,B.width,B.height);for(let Ie=0;Ie<6;Ie++){de=$[Ie].mipmaps;for(let Ne=0;Ne0&&we++,t.texStorage2D(34067,we,me,$[0].width,$[0].height));for(let Ie=0;Ie<6;Ie++)if(J){fe?t.texSubImage2D(34069+Ie,0,0,0,$[Ie].width,$[Ie].height,Y,le,$[Ie].data):t.texImage2D(34069+Ie,0,me,$[Ie].width,$[Ie].height,0,Y,le,$[Ie].data);for(let Ne=0;Ne0&&ne(F)===!1){const M=z?k:[k];q.__webglMultisampledFramebuffer=n.createFramebuffer(),q.__webglColorRenderbuffer=[],t.bindFramebuffer(36160,q.__webglMultisampledFramebuffer);for(let S=0;S0&&ne(F)===!1){const k=F.isWebGLMultipleRenderTargets?F.texture:[F.texture],q=F.width,j=F.height;let U=16384;const z=[],v=F.stencilBuffer?33306:36096,M=r.get(F),S=F.isWebGLMultipleRenderTargets===!0;if(S)for(let I=0;I0&&(b=A%y,b!==0&&y-b-L.boundary<0&&(A+=y-b,w.__offset=A)),A+=L.storage}b=A%y,b>0&&(A+=y-b),g.__size=A,g.__cache={}})(d),h=(function(g){const _=(function(){for(let E=0;Eh+p?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&f<=h-p&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(i=t.getPose(e.gripSpace,r),i!==null&&(l.matrix.fromArray(i.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),i.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(i.linearVelocity)):l.hasLinearVelocity=!1,i.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(i.angularVelocity)):l.hasAngularVelocity=!1));s!==null&&(o=t.getPose(e.targetRaySpace,r),o===null&&i!==null&&(o=i),o!==null&&(s.matrix.fromArray(o.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),o.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(o.linearVelocity)):s.hasLinearVelocity=!1,o.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(o.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(m1e)))}return s!==null&&(s.visible=o!==null),l!==null&&(l.visible=i!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const r=new qi;r.matrixAutoUpdate=!1,r.visible=!1,e.joints[t.jointName]=r,e.add(r)}return e.joints[t.jointName]}}class _0{constructor(e,t,r=0,o=1/0){this.ray=new Tu(e,t),this.near=r,this.far=o,this.camera=null,this.layers=new Iu,this.params={Mesh:{omitGeometry:!1},Line:{threshold:.1},LOD:{},Points:{threshold:.1},Sprite:{},checkVisibility:!0},this.layers.enable(3),this.layers.enable(4),this.layers.enable(5),this.layers.enable(6),this.layers.enable(7)}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("v3d.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,r=[]){return V2(e,this,r,t,this.params.checkVisibility),r.sort(NL),r}intersectObjects(e,t=!0,r=[]){for(let o=0,i=e.length;o=0&&(A[v]=null,_[v].disconnect(z))}for(let U=0;U=A.length){A.push(z),v=S;break}if(A[S]===null){A[S]=z,v=S;break}}if(v===-1)break}const M=_[v];M&&M.connect(z)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(j){let U=_[j];return U===void 0&&(U=new F2,_[j]=U),U.getTargetRaySpace(j)},this.getControllerGrip=function(j){let U=_[j];return U===void 0&&(U=new F2,_[j]=U),U.getGripSpace()},this.getHand=function(j){let U=_[j];return U===void 0&&(U=new F2,_[j]=U),U.getHandSpace()},this.setFramebufferScaleFactor=function(j){i=j,r.isPresenting===!0&&console.warn("v3d.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(j){s=j,r.isPresenting===!0&&console.warn("v3d.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(j){l=j},this.getBaseLayer=function(){return d!==null?d:f},this.getBinding=function(){return u},this.getFrame=function(){return h},this.getSession=function(){return o},this.setSession=async function(j){if(o=j,o!==null){if(m=e.getRenderTarget(),o.addEventListener("select",R),o.addEventListener("selectstart",R),o.addEventListener("selectend",R),o.addEventListener("squeeze",R),o.addEventListener("squeezestart",R),o.addEventListener("squeezeend",R),o.addEventListener("end",O),o.addEventListener("inputsourceschange",W),p.xrCompatible!==!0&&await t.makeXRCompatible(),x=e.getPixelRatio(),e.getSize(E),o.renderState.layers===void 0||e.capabilities.isWebGL2===!1){const U={antialias:o.renderState.layers!==void 0||p.antialias,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:i};f=new XRWebGLLayer(o,t,U),o.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),g=new nn(f.framebufferWidth,f.framebufferHeight,{format:1023,type:1009,encoding:e.outputEncoding,stencilBuffer:p.stencil})}else{let U=null,z=null,v=null;p.depth&&(v=p.stencil?35056:33190,U=p.stencil?1027:1026,z=p.stencil?1020:1014);const M={colorFormat:32856,depthFormat:v,scaleFactor:i};u=new XRWebGLBinding(o,t),d=u.createProjectionLayer(M),o.updateRenderState({layers:[d]}),e.setPixelRatio(1),e.setSize(d.textureWidth,d.textureHeight,!1),g=new nn(d.textureWidth,d.textureHeight,{format:1023,type:1009,depthTexture:new P2(d.textureWidth,d.textureHeight,z,void 0,void 0,void 0,void 0,void 0,void 0,U),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0}),e.properties.get(g).__ignoreDepthValues=d.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),l=null,a=await o.requestReferenceSpace(s),k.setContext(o),k.start(),r.isPresenting=!0,r.dispatchEvent({type:"sessionstart"})}};const ae=new N,ne=new N;function oe(j,U){if(U===null)j.matrixWorld.copy(j.matrix),ee.identity(),l=null;else{j.matrixWorld.copy(j.matrix),ee.copy(U.matrixWorld).invert().decompose(ie,T,H);var z=new XRRigidTransform({x:ie.x,y:ie.y,z:ie.z},{x:T.x,y:T.y,z:T.z,w:T.w});l=a.getOffsetReferenceSpace(z)}j.matrixWorldInverse.copy(j.matrixWorld).invert()}this.updateCamera=function(j){if(o===null)return;P.near=L.near=w.near=j.near,P.far=L.far=w.far=j.far,D===P.near&&Q===P.far||(o.updateRenderState({depthNear:P.near,depthFar:P.far}),D=P.near,Q=P.far);const U=j.parent,z=P.cameras;oe(P,U);for(let S=0;SM&&(b.set(v,v.lastChangedTime),r.dispatchEvent({type:"planechanged",data:v}))}else y.add(v),b.set(v,U.lastChangedTime),r.dispatchEvent({type:"planeadded",data:v})}h=null})),this.setAnimationLoop=function(j){F=j},this.dispose=function(){},this.arHitTest=function(j,U,z,v){if(!o||!XRSession.prototype.requestHitTestSource)return;G=z||function(){},se=v||function(){},this.raycaster=this.raycaster||new _0,this.raycaster.setFromCamera({x:j,y:U},C[0]);const M=this.raycaster.ray;new XRRay(M.origin,M.direction),o.requestReferenceSpace("viewer").then((function(S){const I={space:S};o.requestHitTestSource(I).then((function(J){re=J}))}))}}}function _1e(){const n=lh("canvas");return n.style.display="block",n}function U2(n={}){this.isWebGLRenderer=!0;const e=n.canvas!==void 0?n.canvas:_1e(),t=n.context!==void 0?n.context:null,r=n.depth===void 0||n.depth,o=n.stencil===void 0||n.stencil,i=n.antialias!==void 0&&n.antialias,a=n.premultipliedAlpha===void 0||n.premultipliedAlpha,s=n.preserveDrawingBuffer!==void 0&&n.preserveDrawingBuffer,l=n.powerPreference!==void 0?n.powerPreference:"default",c=n.failIfMajorPerformanceCaveat!==void 0&&n.failIfMajorPerformanceCaveat;let u;u=t!==null?t.getContextAttributes().alpha:n.alpha!==void 0&&n.alpha;const d=new Uint32Array(4),f=new Int32Array(4);let h=null,p=null;const m=[],g=[];this.domElement=e,this.debug={checkShaderErrors:!0,disableCompiledShaderCache:!1},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=3e3,this.unitsScaleFactor=1,this.toneMapping=0,this.toneMappingLook=0,this.toneMappingExposure=1,this.gtaoMap=null,this.gtaoMapEnabled=!1,this.compatSettings={gtaoDisableBkgFix:!1};const _=this;let A=!1,y=0,b=0,E=null,x=-1,w=null;const L=new pt,C=new pt;let P=null,D=e.width,Q=e.height,re=1,G=null,se=null;const ee=new pt(0,0,D,Q),ie=new pt(0,0,D,Q);let H=!1;const T=new ph;let R=!1,O=!1,W=null;const ae=new Ue,ne=new be,oe=new N,F=new jr,k=new Ue,q=new Ue,j=new pt,U=new Ue;new Tn;let z=!1;function v(){return E===null?re:1}this.oitRenderer=new Gge(new be(D,Q));let M,S,I,J,$,B,V,Y,le,me,fe,te,de,we,Ie,Ne,He,je,ct,Vt,En,Rt,pe,Te,Ce=t;function Zt(ce,Se){for(let Me=0;Meue.influenceGroup===null?ue.intersectsMesh(on):on.groupNames.includes(ue.influenceGroup)^ue.influenceGroupInv))||hi.worldEnvMapProbe;if(X){et.envMap=((Z=X.renderTarget)==null?void 0:Z.texture)||null;const ue=X.parallaxDistance;et.envMapParallaxMatrix.copy(X.matrixWorldInverse).premultiply(U.makeScale(1/ue,1/ue,1/ue)),et.envMapParallaxMatrixInv.copy(X.matrixWorld).multiply(U.makeScale(ue,ue,ue)),et.envMapParallaxType=X.parallaxType}}const Rs=(et.isMeshNodeMaterial||et.isMeshStandardMaterial?Y:V).get(et.envMap||Ba),Co=et.vertexColors===!0&&!!Cn.attributes.color&&Cn.attributes.color.itemSize===4,up=!!et.normalMap&&!!Cn.attributes.tangent,El=!!Cn.morphAttributes.position,dp=!!Cn.morphAttributes.normal,t_=!!Cn.morphAttributes.color,cx=et.toneMapped?_.toneMapping:0,Cd=Cn.morphAttributes.position||Cn.morphAttributes.normal||Cn.morphAttributes.color,ux=Cd!==void 0?Cd.length:0,n_=et.side===1,Jt=$.get(et),Sd=p.state.lights;if(R===!0&&(O===!0||ln!==w)){const X=ln===w&&et.id===x;Ne.setState(et,ln,X)}const fp=Bt(on,et,p),r_=_.canUseGTAO()&&et.isMeshNodeMaterial&&et.canUseGTAO();let pi=!1,wd=!1;et.version===Jt.__version?Jt.needsLights&&Jt.lightsStateVersion!==Sd.state.version||Jt.outputEncoding!==lx||on.isInstancedMesh&&Jt.instancing===!1?pi=!0:on.isInstancedMesh||Jt.instancing!==!0?on.isSkinnedMesh&&Jt.skinning===!1?pi=!0:on.isSkinnedMesh||Jt.skinning!==!0?Jt.envMap!==Rs?(pi=!0,wd=!0):et.fog===!0&&Jt.fog!==ur?pi=!0:Jt.numClippingPlanes===void 0||Jt.numClippingPlanes===Ne.numPlanes&&Jt.numIntersection===Ne.numIntersection?(Jt.vertexAlphas!==Co||Jt.vertexTangents!==up||Jt.morphTargets!==El||Jt.morphNormals!==dp||Jt.morphColors!==t_||Jt.toneMapping!==cx||S.isWebGL2===!0&&Jt.morphTargetsCount!==ux||Jt.planeReflProbe!==fp||et.isMeshNormalMaterial&&Jt.flipSided!==n_||Jt.useGTAO!==r_)&&(pi=!0):pi=!0:pi=!0:pi=!0:pi=!0;let Tr=Jt.currentProgram;pi===!0&&(Tr=Ts(et,hi,on,p));let jo=!1,Ln=!1,So=!1;const St=Tr.getUniforms(),Bi=Jt.uniforms;if(I.useProgram(Tr.program)&&(jo=!0,Ln=!0,So=!0),et.id!==x&&(x=et.id,Ln=!0),wd&&(Ln=!0),jo||w!==ln){if(St.setValue(Ce,"projectionMatrix",ln.projectionMatrix),S.logarithmicDepthBuffer&&St.setValue(Ce,"logDepthBufFC",2/(Math.log(ln.far+1)/Math.LN2)),w!==ln&&(w=ln,Ln=!0,So=!0),et.isMeshNodeMaterial||et.isShaderMaterial||et.isMeshStandardMaterial||et.envMap){const X=St.map.cameraPosition;X!==void 0&&X.setValue(Ce,oe.setFromMatrixPosition(ln.matrixWorld))}(et.isMeshNodeMaterial||et.isMeshLambertMaterial||et.isMeshBasicMaterial||et.isMeshStandardMaterial||et.isShaderMaterial)&&St.setValue(Ce,"isOrthographic",ln.isOrthographicCamera===!0),(et.isMeshNodeMaterial||et.isMeshLambertMaterial||et.isMeshBasicMaterial||et.isMeshStandardMaterial||et.isShaderMaterial||et.isShadowMaterial||on.isSkinnedMesh)&&St.setValue(Ce,"viewMatrix",ln.matrixWorldInverse),(et.isMeshNodeMaterial||et.isMeshLambertMaterial||et.isMeshStandardMaterial||et.isShadowMaterial)&&St.setValue(Ce,"invViewMatrix",ln.matrixWorld)}if(on.isSkinnedMesh){St.setOptional(Ce,on,"bindMatrix"),St.setOptional(Ce,on,"bindMatrixInverse");const X=on.skeleton;X&&(S.floatVertexTextures?(X.boneTexture===null&&X.computeBoneTexture(),St.setValue(Ce,"boneTexture",X.boneTexture,B),St.setValue(Ce,"boneTextureSize",X.boneTextureSize)):console.warn("v3d.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const Md=Cn.morphAttributes;if((Md.position!==void 0||Md.normal!==void 0||Md.color!==void 0&&S.isWebGL2===!0)&&ct.update(on,Cn,et,Tr),(Ln||Jt.receiveShadow!==on.receiveShadow)&&(Jt.receiveShadow=on.receiveShadow,St.setValue(Ce,"receiveShadow",on.receiveShadow)),Ln){if(St.setValue(Ce,"toneMappingExposure",_.toneMappingExposure),_.toneMapping==6?(St.setValue(Ce,"toneMappingBrightness",_.toneMappingBrightness),St.setValue(Ce,"toneMappingContrast",_.toneMappingContrast),St.setValue(Ce,"toneMappingMidTones",_.toneMappingMidTones),St.setValue(Ce,"toneMappingPhysicalScale",_.toneMappingPhysicalScale),St.setValue(Ce,"toneMappingChromaticAdaptation",_.toneMappingChromaticAdaptation),St.setValue(Ce,"toneMappingWhiteColor",_.toneMappingWhiteColor),St.setValue(Ce,"toneMappingColorDifferentiation",_.toneMappingColorDifferentiation),St.setValue(Ce,"toneMappingExteriorDaylight",_.toneMappingExteriorDaylight)):_.toneMapping==7&&(St.setValue(Ce,"toneMappingResolution",ne.set(D,Q)),St.setValue(Ce,"toneMappingWhiteBalance",_.toneMappingWhiteBalance),St.setValue(Ce,"toneMappingHighlights",_.toneMappingHighlights),St.setValue(Ce,"toneMappingMidTones",_.toneMappingMidTones),St.setValue(Ce,"toneMappingShadows",_.toneMappingShadows),St.setValue(Ce,"toneMappingSaturation",_.toneMappingSaturation),St.setValue(Ce,"toneMappingPhysicalScale",_.toneMappingPhysicalScale),St.setValue(Ce,"toneMappingAperture",_.toneMappingAperture),St.setValue(Ce,"toneMappingShutter",_.toneMappingShutter),St.setValue(Ce,"toneMappingISO",_.toneMappingISO),St.setValue(Ce,"toneMappingVignetting",_.toneMappingVignetting)),Jt.needsLights&&(co=So,(wo=Bi).ambientLightColor.needsUpdate=co,wo.lightProbe.needsUpdate=co,wo.directionalLights.needsUpdate=co,wo.directionalLightShadowsCSM.needsUpdate=co,wo.directionalLightShadowsCSMCascade.needsUpdate=co,wo.pointLights.needsUpdate=co,wo.pointLightShadows.needsUpdate=co,wo.spotLights.needsUpdate=co,wo.spotLightShadows.needsUpdate=co,wo.rectAreaLights.needsUpdate=co,wo.rectAreaLightShadows.needsUpdate=co,wo.hemisphereLights.needsUpdate=co),ur&&et.fog===!0&&de.refreshFogUniforms(Bi,ur),Jt.useGTAO){const X=(E==null?void 0:E.width)??D,ue=(E==null?void 0:E.height)??Q;St.setValue(Ce,"currResolution",ne.set(X,ue)),de.refreshGTAOUniforms(Bi,_.gtaoMap)}if(de.refreshMaterialUniforms(Bi,et,re,Q,W),fp&&de.refreshPlaneReflProbeUniforms(Bi,fp),et.isMeshNodeMaterial)for(const X in et.nodeTextures)St.setValue(Ce,X,et.nodeTextures[X],B);et.isMeshLineMaterial&&St.setValue(Ce,"resolution",ne.set(D,Q)),m0.upload(Ce,fi(Jt),Bi,B)}var wo,co;if(et.isShaderMaterial&&et.uniformsNeedUpdate===!0&&(m0.upload(Ce,fi(Jt),Bi,B),et.uniformsNeedUpdate=!1),et.isSpriteMaterial&&St.setValue(Ce,"center",on.center),et.isMeshNodeMaterial){et.needsBoundingBox&&(Cn.boundingBox===null&&Cn.computeBoundingBox(),St.setValue(Ce,"boundingBoxMin",Cn.boundingBox.min),St.setValue(Ce,"boundingBoxMax",Cn.boundingBox.max)),St.setValue(Ce,"viewWidthHeight",ne.set(L.z-L.x,L.w-L.y));const X=St.map.invModelMatrix;(X||et.nodeTexCoordObject.includes(null))&&(k.copy(on.matrixWorld).invert(),X&&X.setValue(Ce,k)),et.nodeTexCoordObject.forEach((function(ge,Oe){(ge===null?k:q.copy(ge.matrixWorld).invert()).toArray(Jt.nodeTexCoordObjectMatrices,16*Oe)})),St.setValue(Ce,"nodeTexCoordObjectMatrices",Jt.nodeTexCoordObjectMatrices),St.setValue(Ce,"objectIndex",on.objectIndex);const ue=on.objectColor;St.setValue(Ce,"objectColor",j.set(ue.r,ue.g,ue.b,on.objectAlpha)),St.setValue(Ce,"objectRandom",Eu(on.uuid)/Math.pow(2,32))}if(St.setValue(Ce,"modelViewMatrix",on.modelViewMatrix),St.setValue(Ce,"normalMatrix",on.normalMatrix),St.setValue(Ce,"modelMatrix",on.matrixWorld),et.isShaderMaterial||et.isRawShaderMaterial){const X=et.uniformsGroups;for(let ue=0,ge=X.length;ue{Re.isLight?(Me.pushLight(Re),Re.castShadow&&Me.pushShadow(Re)):Re.isCubeReflectionProbe?Me.pushEnvMapProbe(Re):Re.isPlaneReflectionProbe&&Me.pushPlaneReflProbe(Re)})),Me.setupLights(),Me.sortEnvMapProbes();let Fe=null;return ce.worldEnvMapProbe&&ce.worldEnvMapProbe.renderTarget!==null&&(Fe=ce.worldEnvMapProbe.renderTarget.texture),ce.traverse((Re=>{Re.material&&(Array.isArray(Re.material)?Re.material:[Re.material]).forEach((ke=>{(ke.isMeshNodeMaterial||ke.isMeshStandardMaterial)&&(Re.material.envMap=Fe,Re.material.needsUpdate=!0)}))})),Me},this.compile=function(ce,Se){this.gtaoMapEnabled=!0;const Me=Ie.get(ce,g.length);this._compilePrepareRenderState(ce,Se,Me);const Fe={};ce.traverse((function(Re){const ke=Re.material;if(ke)if(Array.isArray(ke))for(let ut=0;ut0&&(function(dt,ft,yt){const Ze=S.isWebGL2;W===null&&(W=new nn(1,1,{generateMipmaps:!0,type:M.has("EXT_color_buffer_half_float")?1016:1009,minFilter:1008,samples:Ze&&i===!0?4:0})),_.getDrawingBufferSize(ne),Ze?W.setSize(ne.x,ne.y):W.setSize(Vg(ne.x),Vg(ne.y));const Rn=_.getRenderTarget();_.setRenderTarget(W),_.clear();const $t=_.toneMapping;_.toneMapping=0,oa(dt,ft,yt),_.toneMapping=$t,B.updateMultisampleRenderTarget(W),B.updateRenderTargetMipmap(W),_.setRenderTarget(Rn)})(Re,Se,Me),Fe&&I.viewport(L.copy(Fe)),Re.length>0&&oa(Re,Se,Me),ke.length>0&&oa(ke,Se,Me),ut.length>0&&(z&&_.oitRenderer.method!==0?_.oitRenderer.render(_,oa,ut,Se,Me):oa(ut,Se,Me)),I.buffers.depth.setTest(!0),I.buffers.depth.setMask(!0),I.buffers.color.setMask(!0),I.setPolygonOffset(!1)}function oa(ce,Se,Me){const Fe=Se.isScene===!0?Se.overrideMaterial:null;for(let Re=0,ke=ce.length;ReFe.intersectsMesh(ce)))||null}Vr.setAnimationLoop((function(ce){xl&&xl(ce)})),typeof self<"u"&&Vr.setContext(self),this.setAnimationLoop=function(ce){xl=ce,rn.setAnimationLoop(ce),ce===null?Vr.stop():Vr.start()},rn.addEventListener("sessionstart",Sc),rn.addEventListener("sessionend",wc),this.render=function(ce,Se){if(Se!==void 0&&Se.isCamera!==!0)return void console.error("v3d.WebGLRenderer.render: camera is not an instance of v3d.Camera.");if(A===!0)return;ce.matrixWorldAutoUpdate===!0&&ce.updateMatrixWorld(),Se.parent===null&&Se.matrixWorldAutoUpdate===!0&&Se.updateMatrixWorld(),rn.enabled===!0&&rn.isPresenting===!0&&(rn.cameraAutoUpdate===!0&&rn.updateCamera(Se),Se=rn.getCamera()),ce.isScene===!0&&ce.onBeforeRender(_,ce,Se,E),p=Ie.get(ce,g.length),p.init(),g.push(p),ae.multiplyMatrices(Se.projectionMatrix,Se.matrixWorldInverse),T.setFromProjectionMatrix(ae),O=this.localClippingEnabled,R=Ne.init(this.clippingPlanes,O,Se),h=we.get(ce,m.length),h.init(),m.push(h),Ms(ce,Se,0,_.sortObjects),h.finish(),_.sortObjects===!0&&h.sort(G,se),R===!0&&Ne.beginShadows();const Me=p.state.shadowsArray;if(He.render(Me,ce,Se),R===!0&&Ne.endShadows(),this.info.render.frame++,je.render(h,ce),p.setupLights(),p.sortEnvMapProbes(),Se.isArrayCamera){const Fe=Se.cameras;for(let Re=0,ke=Fe.length;Re0?g[g.length-1]:null,m.pop(),h=m.length>0?m[m.length-1]:null},this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return b},this.getRenderTarget=function(){return E},this.setRenderTargetTextures=function(ce,Se,Me){$.get(ce.texture).__webglTexture=Se,$.get(ce.depthTexture).__webglTexture=Me;const Fe=$.get(ce);Fe.__hasExternalTextures=!0,Fe.__hasExternalTextures&&(Fe.__autoAllocateDepthBuffer=Me===void 0,Fe.__autoAllocateDepthBuffer||M.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("v3d.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),Fe.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(ce,Se){const Me=$.get(ce);Me.__webglFramebuffer=Se,Me.__useDefaultFramebuffer=Se===void 0},this.setRenderTarget=function(ce,Se=0,Me=0){E=ce,y=Se,b=Me;let Fe=!0,Re=null,ke=!1,ut=!1;if(ce){const dt=$.get(ce);dt.__useDefaultFramebuffer!==void 0?(I.bindFramebuffer(36160,null),Fe=!1):dt.__webglFramebuffer===void 0?B.setupRenderTarget(ce):dt.__hasExternalTextures&&B.rebindTextures(ce,$.get(ce.texture).__webglTexture,$.get(ce.depthTexture).__webglTexture);const ft=ce.texture;(ft.isData3DTexture||ft.isDataArrayTexture||ft.isCompressedArrayTexture)&&(ut=!0);const yt=$.get(ce).__webglFramebuffer;ce.isWebGLCubeRenderTarget?(Re=yt[Se],ke=!0):Re=S.isWebGL2&&ce.samples>0&&B.useMultisampledRTT(ce)===!1?$.get(ce).__webglMultisampledFramebuffer:yt,L.copy(ce.viewport),C.copy(ce.scissor),P=ce.scissorTest}else L.copy(ee).multiplyScalar(re).floor(),C.copy(ie).multiplyScalar(re).floor(),P=H;if(I.bindFramebuffer(36160,Re)&&S.drawBuffers&&Fe&&I.drawBuffers(ce,Re),I.viewport(L),I.scissor(C),I.setScissorTest(P),ke){const dt=$.get(ce.texture);Ce.framebufferTexture2D(36160,36064,34069+Se,dt.__webglTexture,Me)}else if(ut){const dt=$.get(ce.texture),ft=Se||0;Ce.framebufferTextureLayer(36160,36064,dt.__webglTexture,Me||0,ft)}x=-1},this.readRenderTargetPixels=function(ce,Se,Me,Fe,Re,ke,ut){if(!ce||!ce.isWebGLRenderTarget)return void console.error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not v3d.WebGLRenderTarget.");let dt=$.get(ce).__webglFramebuffer;if(ce.isWebGLCubeRenderTarget&&ut!==void 0&&(dt=dt[ut]),dt){I.bindFramebuffer(36160,dt);try{const ft=ce.texture,yt=ft.format,Ze=ft.type;if(yt!==1023&&Rt.convert(yt)!==Ce.getParameter(35739))return void console.error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const Rn=Ze===1016&&(M.has("EXT_color_buffer_half_float")||S.isWebGL2&&M.has("EXT_color_buffer_float"));if(!(Ze===1009||Rt.convert(Ze)===Ce.getParameter(35738)||Ze===1015&&(S.isWebGL2||M.has("OES_texture_float")||M.has("WEBGL_color_buffer_float"))||Rn))return void console.error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");Se>=0&&Se<=ce.width-Fe&&Me>=0&&Me<=ce.height-Re&&Ce.readPixels(Se,Me,Fe,Re,Rt.convert(yt),Rt.convert(Ze),ke)}finally{const ft=E!==null?$.get(E).__webglFramebuffer:null;I.bindFramebuffer(36160,ft)}}},this.readRenderTargetPixelsAsync=async function(ce,Se,Me,Fe,Re,ke,ut){if(!ce||!ce.isWebGLRenderTarget)throw new Error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not v3d.WebGLRenderTarget.");let dt=$.get(ce).__webglFramebuffer;if(ce.isWebGLCubeRenderTarget&&ut!==void 0&&(dt=dt[ut]),dt){if(Se>=0&&Se<=ce.width-Fe&&Me>=0&&Me<=ce.height-Re){I.bindFramebuffer(36160,dt);const ft=ce.texture,yt=ft.format,Ze=ft.type;if(yt!==1023&&Rt.convert(yt)!==Ce.getParameter(35739))return void console.error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const Rn=Ze===1016&&(M.has("EXT_color_buffer_half_float")||S.isWebGL2&&M.has("EXT_color_buffer_float"));if(!(Ze===1009||Rt.convert(Ze)===Ce.getParameter(35738)||Ze===1015&&(S.isWebGL2||M.has("OES_texture_float")||M.has("WEBGL_color_buffer_float"))||Rn))return void console.error("v3d.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");const $t=Ce.createBuffer();Ce.bindBuffer(35051,$t),Ce.bufferData(35051,ke.byteLength,35041),Ce.readPixels(Se,Me,Fe,Re,Rt.convert(yt),Rt.convert(Ze),0);const at=E!==null?$.get(E).__webglFramebuffer:null;I.bindFramebuffer(36160,at);const zt=Ce.fenceSync(37143,0);return Ce.flush(),await Xse(Ce,zt,4),Ce.bindBuffer(35051,$t),Ce.getBufferSubData(35051,0,ke),Ce.deleteBuffer($t),Ce.deleteSync(zt),ke}throw new Error("v3d.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(ce,Se,Me=0){const Fe=Math.pow(2,-Me),Re=Math.floor(Se.image.width*Fe),ke=Math.floor(Se.image.height*Fe);B.setTexture2D(Se,0),Ce.copyTexSubImage2D(3553,Me,0,0,ce.x,ce.y,Re,ke),I.unbindTexture()},this.copyTextureToTexture=function(ce,Se,Me,Fe=0){const Re=Se.image.width,ke=Se.image.height,ut=Rt.convert(Me.format),dt=Rt.convert(Me.type);B.setTexture2D(Me,0),Ce.pixelStorei(37440,Me.flipY),Ce.pixelStorei(37441,Me.premultiplyAlpha),Ce.pixelStorei(3317,Me.unpackAlignment),Se.isDataTexture?Ce.texSubImage2D(3553,Fe,ce.x,ce.y,Re,ke,ut,dt,Se.image.data):Se.isCompressedTexture?Ce.compressedTexSubImage2D(3553,Fe,ce.x,ce.y,Se.mipmaps[0].width,Se.mipmaps[0].height,ut,Se.mipmaps[0].data):Ce.texSubImage2D(3553,Fe,ce.x,ce.y,ut,dt,Se.image),Fe===0&&Me.generateMipmaps&&Ce.generateMipmap(3553),I.unbindTexture()},this.copyTextureToTexture3D=function(ce,Se,Me,Fe,Re=0){if(!S.isWebGL2)return void console.warn("v3d.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const ke=ce.max.x-ce.min.x+1,ut=ce.max.y-ce.min.y+1,dt=ce.max.z-ce.min.z+1,ft=Rt.convert(Fe.format),yt=Rt.convert(Fe.type);let Ze;if(Fe.isData3DTexture)B.setTexture3D(Fe,0),Ze=32879;else{if(!Fe.isDataArrayTexture)return void console.warn("v3d.WebGLRenderer.copyTextureToTexture3D: only supports v3d.DataTexture3D and v3d.DataTexture2DArray.");B.setTexture2DArray(Fe,0),Ze=35866}Ce.pixelStorei(37440,Fe.flipY),Ce.pixelStorei(37441,Fe.premultiplyAlpha),Ce.pixelStorei(3317,Fe.unpackAlignment);const Rn=Ce.getParameter(3314),$t=Ce.getParameter(32878),at=Ce.getParameter(3316),zt=Ce.getParameter(3315),Is=Ce.getParameter(32877),sn=Me.isCompressedTexture?Me.mipmaps[0]:Me.image;Ce.pixelStorei(3314,sn.width),Ce.pixelStorei(32878,sn.height),Ce.pixelStorei(3316,ce.min.x),Ce.pixelStorei(3315,ce.min.y),Ce.pixelStorei(32877,ce.min.z),Me.isDataTexture||Me.isData3DTexture?Ce.texSubImage3D(Ze,Re,Se.x,Se.y,Se.z,ke,ut,dt,ft,yt,sn.data):Me.isCompressedArrayTexture?(console.warn("v3d.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Ce.compressedTexSubImage3D(Ze,Re,Se.x,Se.y,Se.z,ke,ut,dt,ft,sn.data)):Ce.texSubImage3D(Ze,Re,Se.x,Se.y,Se.z,ke,ut,dt,ft,yt,sn),Ce.pixelStorei(3314,Rn),Ce.pixelStorei(32878,$t),Ce.pixelStorei(3316,at),Ce.pixelStorei(3315,zt),Ce.pixelStorei(32877,Is),Re===0&&Fe.generateMipmaps&&Ce.generateMipmap(Ze),I.unbindTexture()},this.initTexture=function(ce){ce.isCubeTexture?B.setTextureCube(ce,0):ce.isData3DTexture?B.setTexture3D(ce,0):ce.isDataArrayTexture||ce.isCompressedArrayTexture?B.setTexture2DArray(ce,0):B.setTexture2D(ce,0),I.unbindTexture()},this.resetState=function(){y=0,b=0,E=null,I.reset(),pe.reset()},typeof __V3D_DEVTOOLS__<"u"&&__V3D_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this})),this.updateGeometry=function(ce){return fe.update(ce)},this.setOIT=function(ce,Se){this.oitRenderer.setSize(D,Q),this.oitRenderer.texType=Rt.convert(1016)!==null?1016:1009;let Me=Se||(i===!0?4:0);this.oitRenderer.isMethodCompatible(ce,S)?this.oitRenderer.setMethod(ce,Me):console.log("v3d.WebGLRenderer: the OIT method is not compatible.")},this.getOIT=function(){return this.oitRenderer.method},Object.defineProperty(this,"useOIT",{get:function(){return z},set:function(ce){this.setTransparentSort(ce?function(){}:null),z=ce}})}class z2{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Ge(e),this.density=t}clone(){return new z2(this.color,this.density)}}class G2{constructor(e,t=1,r=1e3){this.isFog=!0,this.name="",this.color=new Ge(e),this.near=t,this.far=r}clone(){return new G2(this.color,this.near,this.far)}}class H2 extends Nr{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new Ge(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let Hu;const Ah=new N,Wu=new N,ju=new N,Qu=new be,yh=new be,OL=new Ue,v0=new N,bh=new N,A0=new N,kL=new be,W2=new be,FL=new be;class VL extends kt{constructor(e){if(super(),this.isSprite=!0,this.type="Sprite",Hu===void 0){Hu=new At;const t=new Float32Array([-.5,-.5,0,.5,-.5,0,.5,.5,0,-.5,.5,0]),r=new Float32Array([0,0,1,0,1,1,0,1]);Hu.setIndex([0,1,2,0,2,3]),Hu.setAttribute("position",new Xe(t,3)),Hu.setAttribute("uv",new Xe(r,2))}this.geometry=Hu,this.material=e!==void 0?e:new H2,this.center=new be(.5,.5)}raycast(e,t){if(e.camera===null)return void console.error('v3d.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.');Wu.setFromMatrixScale(this.matrixWorld),OL.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),ju.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&Wu.multiplyScalar(-ju.z);const r=this.material.rotation;let o,i;r!==0&&(i=Math.cos(r),o=Math.sin(r));const a=this.center;y0(v0.set(-.5,-.5,0),ju,a,Wu,o,i),y0(bh.set(.5,-.5,0),ju,a,Wu,o,i),y0(A0.set(.5,.5,0),ju,a,Wu,o,i),kL.set(0,0),W2.set(1,0),FL.set(1,1);let s=e.ray.intersectTriangle(v0,bh,A0,!1,Ah);if(s===null&&(y0(bh.set(-.5,.5,0),ju,a,Wu,o,i),W2.set(0,1),s=e.ray.intersectTriangle(v0,A0,bh,!1,Ah),s===null))return;const l=e.ray.origin.distanceTo(Ah);le.far||t.push({distance:l,point:Ah.clone(),uv:Br.getInterpolation(Ah,v0,bh,A0,kL,W2,FL,new be),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function y0(n,e,t,r,o,i){Qu.subVectors(n,t).addScalar(.5).multiply(r),o!==void 0?(yh.x=i*Qu.x-o*Qu.y,yh.y=o*Qu.x+i*Qu.y):yh.copy(Qu),n.copy(e),n.x+=yh.x,n.y+=yh.y,n.applyMatrix4(OL)}const b0=new N,UL=new N;class v1e extends kt{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let r=0,o=t.length;r0){let r,o;for(r=1,o=t.length;r0){b0.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(b0);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){b0.setFromMatrixPosition(e.matrixWorld),UL.setFromMatrixPosition(this.matrixWorld);const r=b0.distanceTo(UL)/e.zoom;let o,i;for(t[0].object.visible=!0,o=1,i=t.length;o=a))break;t[o-1].object.visible=!1,t[o].object.visible=!0}for(this._currentLevel=o-1;ol)continue;f.applyMatrix4(this.matrixWorld);const b=e.ray.origin.distanceTo(f);be.far||t.push({distance:b,point:d.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}else for(let g=Math.max(0,a.start),_=Math.min(m.count,a.start+a.count)-1;g<_;g+=h){if(c.fromBufferAttribute(m,g),u.fromBufferAttribute(m,g+1),Q2.distanceSqToSegment(c,u,f,d)>l)continue;f.applyMatrix4(this.matrixWorld);const A=e.ray.origin.distanceTo(f);Ae.far||t.push({distance:A,point:d.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const r=e[t[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,i=r.length;o0){const r=e[t[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,i=r.length;oo.far)return;i.push({distance:c,distanceToRay:Math.sqrt(s),point:l,index:e,face:null,object:a})}}class E1e extends $n{constructor(e,t,r,o,i,a,s,l,c){super(e,t,r,o,i,a,s,l,c),this.isVideoTexture=!0,this.minFilter=a!==void 0?a:1006,this.magFilter=i!==void 0?i:1006,this.generateMipmaps=!1;const u=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback((function d(){u.needsUpdate=!0,e.requestVideoFrameCallback(d)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;!("requestVideoFrameCallback"in e)&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class C1e extends $n{constructor(e,t,r){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=r,this.magFilter=1003,this.minFilter=1003,this.generateMipmaps=!1,this.needsUpdate=!0}}class dl extends $n{constructor(e,t,r,o,i,a,s,l,c,u,d,f){super(null,a,s,l,c,u,o,i,d,f),this.isCompressedTexture=!0,this.image={width:t,height:r},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class S1e extends dl{constructor(e,t,r,o,i,a){super(e,t,r,i,a),this.isCompressedArrayTexture=!0,this.image.depth=o,this.wrapR=1001}}class oP extends $n{constructor(e,t,r,o,i,a,s,l,c){super(e,t,r,o,i,a,s,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Zi{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("v3d.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const r=this.getUtoTmapping(e);return this.getPoint(r,t)}getPoints(e=5){const t=[];for(let r=0;r<=e;r++)t.push(this.getPoint(r/e));return t}getSpacedPoints(e=5){const t=[];for(let r=0;r<=e;r++)t.push(this.getPointAt(r/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let r,o=this.getPoint(0),i=0;t.push(0);for(let a=1;a<=e;a++)r=this.getPoint(a/e),i+=r.distanceTo(o),t.push(i),o=r;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const r=this.getLengths();let o=0;const i=r.length;let a;a=t||e*r[i-1];let s,l=0,c=i-1;for(;l<=c;)if(o=Math.floor(l+(c-l)/2),s=r[o]-a,s<0)l=o+1;else{if(!(s>0)){c=o;break}c=o-1}if(o=c,r[o]===a)return o/(i-1);const u=r[o];return(o+(a-u)/(r[o+1]-u))/(i-1)}getTangent(e,t){let o=e-1e-4,i=e+1e-4;o<0&&(o=0),i>1&&(i=1);const a=this.getPoint(o),s=this.getPoint(i),l=t||(a.isVector2?new be:new N);return l.copy(s).sub(a).normalize(),l}getTangentAt(e,t){const r=this.getUtoTmapping(e);return this.getTangent(r,t)}computeFrenetFrames(e,t){const r=new N,o=[],i=[],a=[],s=new N,l=new Ue;for(let h=0;h<=e;h++){const p=h/e;o[h]=this.getTangentAt(p,new N)}i[0]=new N,a[0]=new N;let c=Number.MAX_VALUE;const u=Math.abs(o[0].x),d=Math.abs(o[0].y),f=Math.abs(o[0].z);u<=c&&(c=u,r.set(1,0,0)),d<=c&&(c=d,r.set(0,1,0)),f<=c&&r.set(0,0,1),s.crossVectors(o[0],r).normalize(),i[0].crossVectors(o[0],s),a[0].crossVectors(o[0],i[0]);for(let h=1;h<=e;h++){if(i[h]=i[h-1].clone(),a[h]=a[h-1].clone(),s.crossVectors(o[h-1],o[h]),s.length()>Number.EPSILON){s.normalize();const p=Math.acos(Ht(o[h-1].dot(o[h]),-1,1));i[h].applyMatrix4(l.makeRotationAxis(s,p))}a[h].crossVectors(o[h],i[h])}if(t===!0){let h=Math.acos(Ht(i[0].dot(i[e]),-1,1));h/=e,o[0].dot(s.crossVectors(i[0],i[e]))>0&&(h=-h);for(let p=1;p<=e;p++)i[p].applyMatrix4(l.makeRotationAxis(o[p],h*p)),a[p].crossVectors(o[p],i[p])}return{tangents:o,normals:i,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class X2 extends Zi{constructor(e=0,t=0,r=1,o=1,i=0,a=2*Math.PI,s=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=r,this.yRadius=o,this.aStartAngle=i,this.aEndAngle=a,this.aClockwise=s,this.aRotation=l}getPoint(e,t){const r=t||new be,o=2*Math.PI;let i=this.aEndAngle-this.aStartAngle;const a=Math.abs(i)o;)i-=o;i0?0:(Math.floor(Math.abs(c)/i)+1)*i:u===0&&c===i-1&&(c=i-2,u=1),this.closed||c>0?s=o[(c-1)%i]:(T0.subVectors(o[0],o[1]).add(o[0]),s=T0);const d=o[c%i],f=o[(c+1)%i];if(this.closed||c+2o.length-2?o.length-1:a+1],d=o[a>o.length-3?o.length-1:a+2];return r.set(iP(s,l.x,c.x,u.x,d.x),iP(s,l.y,c.y,u.y,d.y)),r}copy(e){super.copy(e),this.points=[];for(let t=0,r=e.points.length;t=r){const a=o[i]-r,s=this.curves[i],l=s.getLength(),c=l===0?0:1-a/l;return s.getPointAt(c,t)}i++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let r=0,o=this.curves.length;r1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,r=e.curves.length;t0){const d=c.getPoint(0);d.equals(this.currentPoint)||this.lineTo(d.x,d.y)}this.curves.push(c);const u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}}class dP extends At{constructor(e=[new be(0,-.5),new be(.5,0),new be(0,.5)],t=12,r=0,o=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:r,phiLength:o},t=Math.floor(t),o=Ht(o,0,2*Math.PI);const i=[],a=[],s=[],l=[],c=[],u=1/t,d=new N,f=new be,h=new N,p=new N,m=new N;let g=0,_=0;for(let A=0;A<=e.length-1;A++)switch(A){case 0:g=e[A+1].x-e[A].x,_=e[A+1].y-e[A].y,h.x=1*_,h.y=-g,h.z=0*_,m.copy(h),h.normalize(),l.push(h.x,h.y,h.z);break;case e.length-1:l.push(m.x,m.y,m.z);break;default:g=e[A+1].x-e[A].x,_=e[A+1].y-e[A].y,h.x=1*_,h.y=-g,h.z=0*_,p.copy(h),h.x+=m.x,h.y+=m.y,h.z+=m.z,h.normalize(),l.push(h.x,h.y,h.z),m.copy(p)}for(let A=0;A<=t;A++){const y=r+A*u*o,b=Math.sin(y),E=Math.cos(y);for(let x=0;x<=e.length-1;x++){d.x=e[x].x*b,d.y=e[x].y,d.z=e[x].x*E,a.push(d.x,d.y,d.z),f.x=A/t,f.y=x/(e.length-1),s.push(f.x,f.y);const w=l[3*x+0]*b,L=l[3*x+1],C=l[3*x+0]*E;c.push(w,L,C)}}for(let A=0;A0&&A(!0),t>0&&A(!1)),this.setIndex(u),this.setAttribute("position",new mt(d,3)),this.setAttribute("normal",new mt(f,3)),this.setAttribute("uv",new mt(h,2))}}class V1e extends tb{constructor(e=1,t=1,r=32,o=1,i=!1,a=0,s=2*Math.PI){super(0,e,t,r,o,i,a,s),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:r,heightSegments:o,openEnded:i,thetaStart:a,thetaLength:s}}}class Sh extends At{constructor(e=[],t=[],r=1,o=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:r,detail:o};const i=[],a=[];function s(f,h,p,m){const g=m+1,_=[];for(let A=0;A<=g;A++){_[A]=[];const y=f.clone().lerp(p,A/g),b=h.clone().lerp(p,A/g),E=g-A;for(let x=0;x<=E;x++)_[A][x]=x===0&&A===g?y:y.clone().lerp(b,x/E)}for(let A=0;A.9&&y<.1&&(m<.2&&(a[p+0]+=1),g<.2&&(a[p+2]+=1),_<.2&&(a[p+4]+=1))}})()})(),this.setAttribute("position",new mt(i,3)),this.setAttribute("normal",new mt(i.slice(),3)),this.setAttribute("uv",new mt(a,2)),o===0?this.computeVertexNormals():this.normalizeNormals()}}class U1e extends Sh{constructor(e=1,t=0){const r=(1+Math.sqrt(5))/2,o=1/r;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-o,-r,0,-o,r,0,o,-r,0,o,r,-o,-r,0,-o,r,0,o,-r,0,o,r,0,-r,0,-o,r,0,-o,-r,0,o,r,0,o],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}}const R0=new N,L0=new N,nb=new N,P0=new Br;class z1e extends At{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},e!==null){const o=Math.pow(10,4),i=Math.cos(ss*t),a=e.getIndex(),s=e.getAttribute("position"),l=a?a.count:s.count,c=[0,0,0],u=["a","b","c"],d=new Array(3),f={},h=[];for(let p=0;p80*t){s=c=n[0],l=u=n[1];for(let p=t;pc&&(c=d),f>u&&(u=f);h=Math.max(c-s,u-l),h=h!==0?32767/h:0}return wh(i,a,t,s,l,h,0),a}};function fP(n,e,t,r,o){let i,a;if(o===o_e(n,e,t,r)>0)for(i=e;i=e;i-=r)a=mP(i,n[i],n[i+1],a);return a&&D0(a,a.next)&&(Th(a),a=a.next),a}function oc(n,e){if(!n)return n;e||(e=n);let t,r=n;do if(t=!1,r.steiner||!D0(r,r.next)&&qn(r.prev,r,r.next)!==0)r=r.next;else{if(Th(r),r=e=r.prev,r===r.next)break;t=!0}while(t||r!==e);return e}function wh(n,e,t,r,o,i,a){if(!n)return;!a&&i&&Z1e(n,r,o,i);let s,l,c=n;for(;n.prev!==n.next;)if(s=n.prev,l=n.next,i?W1e(n,r,o,i):H1e(n))e.push(s.i/t|0),e.push(n.i/t|0),e.push(l.i/t|0),Th(n),n=l.next,c=l.next;else if((n=l)===c){a?a===1?wh(n=j1e(oc(n),e,t),e,t,r,o,i,2):a===2&&Q1e(n,e,t,r,o,i):wh(oc(n),e,t,r,o,i,1);break}}function H1e(n){const e=n.prev,t=n,r=n.next;if(qn(e,t,r)>=0)return!1;const o=e.x,i=t.x,a=r.x,s=e.y,l=t.y,c=r.y,u=oi?o>a?o:a:i>a?i:a,h=s>l?s>c?s:c:l>c?l:c;let p=r.next;for(;p!==e;){if(p.x>=u&&p.x<=f&&p.y>=d&&p.y<=h&&Yu(o,s,i,l,a,c,p.x,p.y)&&qn(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function W1e(n,e,t,r){const o=n.prev,i=n,a=n.next;if(qn(o,i,a)>=0)return!1;const s=o.x,l=i.x,c=a.x,u=o.y,d=i.y,f=a.y,h=sl?s>c?s:c:l>c?l:c,g=u>d?u>f?u:f:d>f?d:f,_=rb(h,p,e,t,r),A=rb(m,g,e,t,r);let y=n.prevZ,b=n.nextZ;for(;y&&y.z>=_&&b&&b.z<=A;){if(y.x>=h&&y.x<=m&&y.y>=p&&y.y<=g&&y!==o&&y!==a&&Yu(s,u,l,d,c,f,y.x,y.y)&&qn(y.prev,y,y.next)>=0||(y=y.prevZ,b.x>=h&&b.x<=m&&b.y>=p&&b.y<=g&&b!==o&&b!==a&&Yu(s,u,l,d,c,f,b.x,b.y)&&qn(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;y&&y.z>=_;){if(y.x>=h&&y.x<=m&&y.y>=p&&y.y<=g&&y!==o&&y!==a&&Yu(s,u,l,d,c,f,y.x,y.y)&&qn(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;b&&b.z<=A;){if(b.x>=h&&b.x<=m&&b.y>=p&&b.y<=g&&b!==o&&b!==a&&Yu(s,u,l,d,c,f,b.x,b.y)&&qn(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function j1e(n,e,t){let r=n;do{const o=r.prev,i=r.next.next;!D0(o,i)&&hP(o,r,r.next,i)&&Mh(o,i)&&Mh(i,o)&&(e.push(o.i/t|0),e.push(r.i/t|0),e.push(i.i/t|0),Th(r),Th(r.next),r=n=i),r=r.next}while(r!==n);return oc(r)}function Q1e(n,e,t,r,o,i){let a=n;do{let s=a.next.next;for(;s!==a.prev;){if(a.i!==s.i&&t_e(a,s)){let l=pP(a,s);return a=oc(a,a.next),l=oc(l,l.next),wh(a,e,t,r,o,i,0),void wh(l,e,t,r,o,i,0)}s=s.next}a=a.next}while(a!==n)}function $1e(n,e,t,r){const o=[];let i,a,s,l,c;for(i=0,a=e.length;i=r.next.y&&r.next.y!==r.y){const f=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(f<=i&&f>o&&(o=f,t=r.x=r.x&&r.x>=l&&i!==r.x&&Yu(at.x||r.x===t.x&&K1e(t,r)))&&(t=r,d=u)),r=r.next;while(r!==s);return t}function K1e(n,e){return qn(n.prev,n,e.prev)<0&&qn(e.next,n,n.next)<0}function Z1e(n,e,t,r){let o=n;do o.z===0&&(o.z=rb(o.x,o.y,e,t,r)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==n);o.prevZ.nextZ=null,o.prevZ=null,J1e(o)}function J1e(n){let e,t,r,o,i,a,s,l,c=1;do{for(t=n,n=null,i=null,a=0;t;){for(a++,r=t,s=0,e=0;e0||l>0&&r;)s!==0&&(l===0||!r||t.z<=r.z)?(o=t,t=t.nextZ,s--):(o=r,r=r.nextZ,l--),i?i.nextZ=o:n=o,o.prevZ=i,i=o;t=r}i.nextZ=null,c*=2}while(a>1);return n}function rb(n,e,t,r,o){return(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=(n-t)*o|0)|n<<8))|n<<4))|n<<2))|n<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function e_e(n){let e=n,t=n;do(e.x=(n-a)*(i-s)&&(n-a)*(r-s)>=(t-a)*(e-s)&&(t-a)*(i-s)>=(o-a)*(r-s)}function t_e(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!n_e(n,e)&&(Mh(n,e)&&Mh(e,n)&&r_e(n,e)&&(qn(n.prev,n,e.prev)||qn(n,e.prev,e))||D0(n,e)&&qn(n.prev,n,n.next)>0&&qn(e.prev,e,e.next)>0)}function qn(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function D0(n,e){return n.x===e.x&&n.y===e.y}function hP(n,e,t,r){const o=N0(qn(n,e,t)),i=N0(qn(n,e,r)),a=N0(qn(t,r,n)),s=N0(qn(t,r,e));return o!==i&&a!==s||!(o!==0||!B0(n,t,e))||!(i!==0||!B0(n,r,e))||!(a!==0||!B0(t,n,r))||!(s!==0||!B0(t,e,r))}function B0(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function N0(n){return n>0?1:n<0?-1:0}function n_e(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&hP(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function Mh(n,e){return qn(n.prev,n,n.next)<0?qn(n,e,n.next)>=0&&qn(n,n.prev,e)>=0:qn(n,e,n.prev)<0||qn(n,n.next,e)<0}function r_e(n,e){let t=n,r=!1;const o=(n.x+e.x)/2,i=(n.y+e.y)/2;do t.y>i!=t.next.y>i&&t.next.y!==t.y&&o<(t.next.x-t.x)*(i-t.y)/(t.next.y-t.y)+t.x&&(r=!r),t=t.next;while(t!==n);return r}function pP(n,e){const t=new ob(n.i,n.x,n.y),r=new ob(e.i,e.x,e.y),o=n.next,i=e.prev;return n.next=e,e.prev=n,t.next=o,o.prev=t,r.next=t,t.prev=r,i.next=r,r.prev=i,r}function mP(n,e,t,r){const o=new ob(n,e,t);return r?(o.next=r.next,o.prev=r,r.next.prev=o,r.next=o):(o.prev=o,o.next=o),o}function Th(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function ob(n,e,t){this.i=n,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function o_e(n,e,t,r){let o=0;for(let i=e,a=t-r;i2&&n[e-1].equals(n[0])&&n.pop()}function _P(n,e){for(let t=0;tNumber.EPSILON){const le=Math.sqrt(V),me=Math.sqrt($*$+B*B),fe=U.x-J/le,te=U.y+I/le,de=((z.x-B/me-fe)*B-(z.y+$/me-te)*$)/(I*B-J*$);v=fe+I*de-j.x,M=te+J*de-j.y;const we=v*v+M*M;if(we<=2)return new be(v,M);S=Math.sqrt(we/2)}else{let le=!1;I>Number.EPSILON?$>Number.EPSILON&&(le=!0):I<-Number.EPSILON?$<-Number.EPSILON&&(le=!0):Math.sign(J)===Math.sign(B)&&(le=!0),le?(v=-J,M=I,S=Math.sqrt(V)):(v=I,M=J,S=Math.sqrt(V/2))}return new be(v/S,M/S)}const H=[];for(let j=0,U=re.length,z=U-1,v=j+1;j=0;j--){const U=j/g,z=h*Math.cos(U*Math.PI/2),v=p*Math.sin(U*Math.PI/2)+m;for(let M=0,S=re.length;M=0;){const v=z;let M=z-1;M<0&&(M=j.length-1);for(let S=0,I=u+2*g;S0)&&h.push(y,b,x),(_!==r-1||l!(m[3*$]===m[3*B]&&m[3*$+1]===m[3*B+1]&&m[3*$+2]===m[3*B+2]||m[3*$]===m[3*V]&&m[3*$+1]===m[3*V+1]&&m[3*$+2]===m[3*V+2]||m[3*B]===m[3*V]&&m[3*B+1]===m[3*V+1]&&m[3*B+2]===m[3*V+2]);for(let $=0;$<3;$++)L[$]=new Ue;const U=r?32:28,z=t+1;let v=0,M=0,S=0,I=0,J=0;for(let $=i?0:20;$=28){for(let B=0;B<3;B++){for(let V=0;V<4;V++)for(let Y=0;Y<4;Y++)y[4*Y+V]=c[3*l[16*$+4*V+Y]+B],a&&$>=20&&$<28&&B!==2&&(y[4*Y+V]*=1.077),s||B!==2||(y[4*Y+V]*=1.3);R.set(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8],y[9],y[10],y[11],y[12],y[13],y[14],y[15]),O.multiplyMatrices(R,A),L[B].multiplyMatrices(q,O)}for(let B=0;B<=t;B++){const V=B/t;for(let Y=0;Y<=t;Y++){const le=Y/t;for(ee=4,G=se=1;ee--;)b[ee]=G,E[ee]=se,G*=V,se*=le,ee===3?(x[ee]=w[ee]=0,ie=H=1):(x[ee]=ie*(3-ee),w[ee]=H*(3-ee),ie*=V,H*=le);W.fromArray(b),ae.fromArray(E),ne.fromArray(x),oe.fromArray(w);for(let me=0;me<3;me++)re=W.clone(),re.applyMatrix4(L[me]),C[me]=re.dot(ae),re=ne.clone(),re.applyMatrix4(L[me]),P[me]=re.dot(ae),re=W.clone(),re.applyMatrix4(L[me]),D[me]=re.dot(oe);F.fromArray(P),k.fromArray(D),Q.crossVectors(k,F),Q.normalize(),C[0]===0&&C[1]===0?T.set(0,C[2]>u?1:-1,0):T.set(Q.x,Q.z,-Q.y),m[M++]=d*C[0],m[M++]=d*(C[2]-u),m[M++]=-d*C[1],g[S++]=T.x,g[S++]=T.y,g[S++]=T.z,_[I++]=1-le,_[I++]=1-V}}for(let B=0;B0!=e>0&&this.version++,this._clearcoat=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.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.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 EP extends Nr{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new be(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),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.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class O0 extends Nr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Ge(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ge(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new be(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,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.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.flatShading=e.flatShading,this.fog=e.fog,this}}class p_e extends _r{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}class sb extends mh{constructor(e){super(),this.isMeshLineMaterial=!0,this.type="MeshLineMaterial",this.lineWidth=1,this.sizeAttenuation=1,this.color=new Ge(16777215),this.opacity=1,this.useMap=0,this.map=null,this.useAlphaMap=0,this.alphaMap=null,this.visibility=1,this.alphaTest=0,this.repeat=new be(1,1),this.uniforms={lineWidth:{value:1},sizeAttenuation:{value:1},color:{value:new Ge(16777215)},opacity:{value:1},useMap:{value:0},map:{value:null},alphaMap:{value:null},useAlphaMap:{value:0},visibility:{value:1},alphaTest:{value:0},repeat:{value:new be(1,1)}},this.vertexShader=Qe.raw_meshline_vert,this.fragmentShader=Qe.raw_meshline_frag,this.setValues(e)}copy(e){return super.copy(e),this.lineWidth=e.lineWidth,this.sizeAttenuation=e.sizeAttenuation,this.color.copy(e.color),this.opacity=e.opacity,this.useMap=e.useMap,this.map=e.map,this.useAlphaMap=e.useAlphaMap,this.alphaMap=e.alphaMap,this.visibility=e.visibility,this.alphaTest=e.alphaTest,this.repeat.copy(e.repeat),this}}class CP extends Nr{constructor(e){super(),this.isMeshMaskMaterial=!0,this.type="MeshMaskMaterial",this.side=2,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.lights=!1,this.cameraNearFar=null,this.depthTexture=null,this.textureMatrix=null,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,e.cameraNearFar&&(this.cameraNearFar=e.cameraNearFar.clone()),e.textureMatrix&&(this.textureMatrix=e.textureMatrix.clone()),e.depthTexture&&(this.depthTexture=e.depthTexture),this}}class qu{constructor(e,t,r,o){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=o!==void 0?o:new t.constructor(r),this.sampleValues=t,this.valueSize=r,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let r=this._cachedIndex,o=t[r],i=t[r-1];t:{e:{let a;n:{r:if(!(e=i)break t;{const s=t[1];e=i)break e}a=r,r=0}}for(;r>>1;en?r-1:r,l=a>n?a-1:a,c=this.edge(r,a).copy();c.v=s,c.w=l,t.addEdge(c)}}this.V--,this.adjList=t.adjList,this.nodeInfo.splice(n,1),this.edges=t.edges}},Fn.prototype.insert=function(n,e,t,r=i=>i,o=i=>i){const i=this.V,a=n.V;for(let s=0;s "+r[o]+";"}e+="}",console.log(e)};const si=function(n,e,t=0){this.v=n,this.w=e,this.weight=t};si.prototype.either=function(){return this.v},si.prototype.other=function(n){return n==this.v?this.w:this.v},si.prototype.from=function(){return this.v},si.prototype.to=function(){return this.w},si.prototype.copy=function(n=e=>e){const e=new si(0,0,0);for(const t in this)this.hasOwnProperty(t)&&(typeof this[t]=="object"?e[t]=n(this[t]):e[t]=this[t]);return e};const Ku=function(n){this.V=n,this.adjList=[],this.nodeInfo=[];for(let e=0;e-1){W.removedNodes.push(ae+T.len());const k=T.findInEdges(O),q=R.findOutEdges(ae);for(let j=0;j0&&Ke(T,T.len()-2,0,T.len()-1,0)}for(let oe=0;oe0&&(Ke(T,T.len()-1,0,T.len()-2,0),Ke(T,T.len()-1,1,T.len()-2,1))}for(let oe=0;oe-1}function g(T){return T.type.indexOf("varying")>-1}function _(T,R){return R=_e(R)?R:"color",t.nodeVCAliases[T]||R}function A(T,R,O,W){const ae=new gs(T,R,1,O,W,$n.DEFAULT_MAPPING,1001,1001,1006,1006);return ae.name="Node.parametric",ae.needsUpdate=!0,ae}function y(T){return T.isVideoTexture===!0&&T.encoding===3001?"1":!T.isDataTexture||T.encoding!==3001||T.type!=1015&&T.type!=1016?"0":"1"}function b(T,R,O,W,ae){let ne;return R==O?ne=T:R=="float"&&O=="vec3"?ne="vec3("+[T,T,T].join(",")+")":R=="float"&&O=="vec4"?ne="vec4("+[T,T,T,T].join(",")+")":R=="vec3"&&O=="float"||R=="vec4"&&O=="float"?ne="("+[T+"[0]",T+"[1]",T+"[2]"].join("+")+")/3.0":R=="vec3"&&O=="vec4"?ne="vec4("+T+", 1.0)":R=="vec4"&&O=="vec3"?ne="vec3("+[T+"[0]",T+"[1]",T+"[2]"].join(",")+")":R=="float"&&O=="int"?ne="int("+T+")":R=="int"&&O=="float"||R=="bool"&&O=="float"?ne="float("+T+")":console.error("MeshNodeMaterial: Missing type conversion: "+R+" -> "+O),(ae<1||ae!=1&&W=="normal")&&(ne="mix("+W+","+ne+","+H(ae)+")",W=="normal"&&(ne="normalize("+ne+")")),ne}function E(T,R,O,W,ae){let ne;const oe=[],F=ee(O),k=ee(W);for(let q=0;q0||pn(ne,M,ve[J].clearcoat))&&(t.defines.USE_CLEARCOAT=""),(I.inputs[ve[J].sheen]>0||pn(ne,M,ve[J].sheen))&&(t.defines.USE_SHEEN=""),S.inputFactors.length=0;break;case"TRIGO_AR":S.params.push(D(I.function)),S.params.push(D(I.units));break;case"TRIPLANAR_AR":S.params.push(D(I.coordSpace)),S.params.push(P(I.inputPerAxis)),S.params.push(P(I.flipOnOppositeDirection)),S.params.push(w(I.blendFactor));break;case"TRIPLANAR_UV_AR":S.params.push(P(I.flipOnOppositeDirection)),I.blendFactor!==void 0&&S.params.push(w(I.blendFactor)),I.projectionAxis!==void 0&&S.params.push(D(I.projectionAxis));break;case"TWO_SIDED_AR":S.params.push(D("faceDirection"));break;case"USER_DATA_COLOR_AR":$=_(I.colorLayer,""),$?(B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B)):S.params.push(D(ie("vec4",I.defaultColor)));break;case"UV_PROJECTION_AR":S.params.push(D(I.projectionType)),S.params.push(D(I.coordSpace));break;case"ATTRIBUTE_BL":case"VERTEX_COLOR_BL":$=_(I.colorLayer,""),$?(B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B)):S.params.push(D("vec4(0.0, 0.0, 0.0, 1.0)"));break;case"BSDF_METALLIC_BL":S.params.push(D("geometryNormal")),S.params.push(D("BSDF_METALLIC_"+I.distribution)),S.params.push(P(I.fresnelType==="PHYSICAL_CONDUCTOR"));break;case"BSDF_PRINCIPLED_BL":S.params.push(D("geometryNormal"));const Rt=ub(S);(I.inputs[ve[Rt].clearcoat]>0||pn(ne,M,ve[Rt].clearcoat))&&(t.defines.USE_CLEARCOAT=""),(I.inputs[ve[Rt].sheen]>0||pn(ne,M,ve[Rt].sheen))&&(t.defines.USE_SHEEN_BLENDER="");break;case"BSDF_REFRACTION_BL":S.params.push(D("geometryNormal")),S.params.push(D("BSDF_REFRACTION_"+I.distribution));break;case"BUMP_BL":S.params.push(w(I.invert));break;case"CAMERA_BL":S.params.push(D("vViewPosition")),a(ne,"OUTPUT_MATERIAL_BL")>0||a(ne,"OUTPUT_WORLD_BL")>0?S.params.push(P(!0)):S.params.push(P(!1));break;case"CLAMP_BL":S.params.push(D(I.clampType=="RANGE"));break;case"COMBINE_COLOR_BL":S.params.push(D("NODE_COMB_COL_"+I.mode));break;case"CURVE_FLOAT_BL":t.useFloatTex?(V=new Float32Array(1024),Y=1):(V=new Uint8Array(1024),Y=255);for(let De=0;De<256;De++){let Bt=Y*(I.curveData[De]/2+.5);V[4*De]=Ht(Bt,0,Y)}me=A(V,256,1023,t.useFloatTex?1015:1009),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++;break;case"CURVE_RGB_BL":case"CURVE_VEC_BL":t.useFloatTex?(V=new Float32Array(1024),Y=1):(V=new Uint8Array(1024),Y=255);for(let De=0;De<256;De++){let Bt,ce,Se,Me;de=I.curveData.length/256,de>3?(Bt=Y*I.curveData[de*De],ce=Y*I.curveData[de*De+1],Se=Y*I.curveData[de*De+2],Me=Y*I.curveData[de*De+3]):(Bt=Y*(I.curveData[de*De]/2+.5),ce=Y*(I.curveData[de*De+1]/2+.5),Se=Y*(I.curveData[de*De+2]/2+.5),Me=Y),V[4*De]=Ht(Bt,0,Y),V[4*De+1]=Ht(ce,0,Y),V[4*De+2]=Ht(Se,0,Y),V[4*De+3]=Ht(Me,0,Y)}me=A(V,256,1023,t.useFloatTex?1015:1009),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++;break;case"EEVEE_SPECULAR_BL":S.params.push(D("geometryNormal")),(I.inputs[ve[J].clearcoat]>0||pn(ne,M,ve[J].clearcoat))&&(t.defines.USE_CLEARCOAT="");break;case"FRESNEL_BL":case"LAYER_WEIGHT_BL":case"INCIDENT":case"POSITION":S.params.push(D("vViewPosition"));break;case"GRADIENT_MX":S.params.push(D(ie("float",I.color2Pos))),S.params.push(D(ie("int",I.gradientType))),$=I.uvIndex?"uv"+String(I.uvIndex+1):"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B),S.params.push(D("vViewPosition")),S.params.push(D("MAPPING_"+I.mapping)),S.params.push(D("AXIS_"+I.axis)),S.params.push(D(ie("ivec2",[re(I.clampToEdgeNoExtend[0]),re(I.clampToEdgeNoExtend[1])])));break;case"GRADIENT_RAMP_MX":t.useFloatTex?(V=new Float32Array(2048),Y=1):(V=new Uint8Array(2048),Y=255);for(let De=0;De<512;De++){let Bt,ce,Se,Me;Bt=Y*I.gradientData[3*De],ce=Y*I.gradientData[3*De+1],Se=Y*I.gradientData[3*De+2],Me=1,V[4*De]=Ht(Bt,0,Y),V[4*De+1]=Ht(ce,0,Y),V[4*De+2]=Ht(Se,0,Y),V[4*De+3]=Ht(Me,0,Y)}me=A(V,512,1023,t.useFloatTex?1015:1009),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++,S.params.push(D(ie("int",I.gradientType))),$=I.uvIndex?"uv"+String(I.uvIndex+1):"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B),S.params.push(D("geometryNormal")),S.params.push(D("vViewPosition")),["SPHERICAL_ENVIRONMENT","CYLINDRICAL_ENVIRONMENT","SHRINK_WRAP_ENVIRONMENT","SCREEN"].indexOf(I.mapping)>-1?S.params.push(D("MAPPING_EXPLICIT_MAP_CHANNEL")):S.params.push(D("MAPPING_"+I.mapping)),S.params.push(D("AXIS_"+I.axis)),S.params.push(D(ie("ivec2",[re(I.clampToEdgeNoExtend[0]),re(I.clampToEdgeNoExtend[1])])));break;case"MAPPING_BL":S.params.push(D("NODE_MAPPING_"+I.vectorType));break;case"MAP_RANGE_BL":_e(I.dataType)&&S.params.push(D("NODE_MAP_RANGE_TYPE_"+I.dataType)),S.params.push(D("NODE_MAP_RANGE_INTERP_"+I.interpolationType)),S.params.push(P(I.clamp));break;case"NEW_GEOMETRY_BL":S.params.push(D("faceDirection")),S.params.push(D("vViewPosition")),S.params.push(D("normal")),Ju(ne,M,it.NEW_GEOMETRY_BL.tangent)&&(t.needsBoundingBox=!0);break;case"NORMAL_MAP_BL":$="tangent",B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B),S.params.push(D("vNormal"));break;case"SEPARATE_COLOR_BL":S.params.push(D("NODE_SEP_COL_"+I.mode));break;case"TANGENT_BL":I.directionType==="RADIAL"?(S.params.push(D("TANGENT_AXIS_"+I.axis)),S.params.push(D("vViewPosition")),S.params.push(D("normal")),t.needsBoundingBox=!0):I.directionType==="UV_MAP"&&($="tangent",B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B));break;case"TEX_BRICK_BL":S.params.push(D(ie("float",I.offset))),S.params.push(D(ie("int",I.offsetFrequency))),S.params.push(D(ie("float",I.squash))),S.params.push(D(ie("int",I.squashFrequency)));break;case"TEX_COORD_BL":S.params.push(D(`nodeTexCoordObjectMatrices[${q}]`)),S.params.push(D("vViewPosition")),S.params.push(D("normal")),$="uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B),Ju(ne,M,it.TEX_COORD_BL.generated)&&(t.needsBoundingBox=!0),t.nodeTexCoordObject.push(null),t.nodeTexCoordObjectMap[I.name]=q,q++;break;case"TEX_ENVIRONMENT_BL":case"TEX_IMAGE_BL":if(me=I.texture,t.nodeTextures[so(J,oe)]=me,S.params.push(L(J,oe)),oe++,S.params.push(D(y(me))),J=="TEX_ENVIRONMENT_BL"){const De=I.projection;S.params.push(D("TEX_PROJ_"+De))}else if(J=="TEX_IMAGE_BL"){let De;switch(I.alphaMode||"STRAIGHT"){case"STRAIGHT":De=Ju(ne,M,1)?"TEX_ALPHA_CLEAR":"TEX_ALPHA_PREMUL";break;case"PREMUL":De=Ju(ne,M,1)?"TEX_ALPHA_UNPREMUL":"TEX_ALPHA_CLEAR";break;case"CHANNEL_PACKED":De="TEX_ALPHA_CLEAR";break;case"NONE":De="TEX_ALPHA_ONE";break;default:console.error("MeshNodeMaterial: incorrect TEX_IMAGE_BL alpha mode"),De="TEX_ALPHA_ONE"}S.params.push(D(De)),S.params.push(D("normal"));const Bt=I.projection;S.params.push(D("TEX_PROJ_"+Bt)),S.params.push(w(I.projectionBlend)),S.params.push(P(I.clampToEdgeNoExtend))}break;case"TEX_GABOR_BL":S.params.push(D("TEX_GABOR_"+I.gaborType));break;case"TEX_GRADIENT_BL":S.params.push(D("TEX_GRAD_"+I.gradientType));break;case"TEX_NOISE_BL":_e(I.noiseType)&&S.params.push(D("TEX_NOISE_"+I.noiseType)),S.params.push(D(ie("float",I.falloffFactor))),S.params.push(D(ie("float",I.dispersionFactor)));break;case"TEX_SKY_BL":if(Ie=new N().fromArray(I.sunDirection).angleTo(new N(0,0,1)),I.skyType=="PREETHAM")Ne=li.getDistParams(I.turbidity,0).concat([0,0,0,0]),He=li.getDistParams(I.turbidity,1).concat([0,0,0,0]),je=li.getDistParams(I.turbidity,2).concat([0,0,0,0]),ct=li.getZenithParams(I.turbidity,Ie,0),Vt=li.getZenithParams(I.turbidity,Ie,1),En=li.getZenithParams(I.turbidity,Ie,2);else if(I.skyType=="HOSEK_WILKIE"){const De=Math.max(Math.PI/2-Ie,0);Ne=Zu.getDistParams(I.turbidity,I.groundAlbedo,De,0),He=Zu.getDistParams(I.turbidity,I.groundAlbedo,De,1),je=Zu.getDistParams(I.turbidity,I.groundAlbedo,De,2),ct=Zu.getRadiance(I.turbidity,I.groundAlbedo,De,0),Vt=Zu.getRadiance(I.turbidity,I.groundAlbedo,De,1),En=Zu.getRadiance(I.turbidity,I.groundAlbedo,De,2)}else Ne=He=je=new Array(9).fill(0),ct=Vt=En=0;S.params.push(D("TEX_SKY_"+I.skyType)),S.params.push(w([Ne[0],He[0],je[0]])),S.params.push(w([Ne[1],He[1],je[1]])),S.params.push(w([Ne[2],He[2],je[2]])),S.params.push(w([Ne[3],He[3],je[3]])),S.params.push(w([Ne[4],He[4],je[4]])),S.params.push(w([Ne[5],He[5],je[5]])),S.params.push(w([Ne[6],He[6],je[6]])),S.params.push(w([Ne[7],He[7],je[7]])),S.params.push(w([Ne[8],He[8],je[8]])),S.params.push(w([ct,Vt,En])),S.params.push(w(I.sunDirection));break;case"TEX_VORONOI_BL":S.params.push(D("DISTANCE_"+I.distance)),S.params.push(D("FEATURE_"+I.feature));break;case"TEX_WAVE_BL":S.params.push(D("TEX_WAVE_TYPE_"+I.waveType)),S.params.push(D("TEX_WAVE_PROFILE_"+I.waveProfile)),S.params.push(D(`TEX_WAVE_BANDS_DIR_${I.bandsDirection}`)),S.params.push(D(`TEX_WAVE_RINGS_DIR_${I.ringsDirection}`));break;case"MATH_BL":S.outputs[0].clamp=I.useClamp;break;case"MIX_BL":switch(S.originData.blendType){case"HUE":case"SATURATION":case"VALUE":case"COLOR":t.defines.HSV_NODES=""}I.dataType=="RGBA"&&(S.outputs[0].clamp=I.clampResult);break;case"MIX_RGB_BL":switch(S.originData.blendType){case"HUE":case"SATURATION":case"VALUE":case"COLOR":t.defines.HSV_NODES=""}S.outputs[0].clamp=I.useClamp;break;case"MIX_SHADER_BL":let pe=-1;for(let De=1;De<3;De++){const Bt=xt(ne,M,De);Bt&&Bt.originData.type=="BSDF_TRANSPARENT_BL"&&(pe=De-1)}S.params.push(D(String(pe)));break;case"NORMAL_BL":S.params.push(w(I.outputs[0]));break;case"RGB_BL":case"RGB_MX":te=new pt().fromArray(I.outputs[0]),t.nodeRGB.push(te),t.nodeRGBMap[I.name]=k,S.params.push(D("nodeRGB["+k+"]")),k++;break;case"SUB_TRANSFORM_MX":case"SUB_TRANSFORM_MY":S.params.push(D(I.coordSpace));break;case"UVMAP_BL":U=I.uvLayer,$=t.nodeUVAliases[U]||"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B);break;case"VALUE_BL":case"VALUE_MX":case"ANIM_CURVE_TA_MY":case"ANIM_CURVE_TU_MY":case"VALUE":te=I.outputs[0],t.nodeValue.push(te),t.nodeValueMap[I.name]=j,S.params.push(D("nodeValue["+j+"]")),j++;break;case"VALTORGB_BL":we=I.curve;const Te=new(we.interpolation=="STEP"?lb:z0)(new Float32Array(we.input),new Float32Array(we.output),4);t.useFloatTex?(V=new Float32Array(1024),Y=1):(V=new Uint8Array(1024),Y=255);for(let De=0;De<256;De++){const Bt=Te.evaluate(De/255);V[4*De]=Y*Bt[0],V[4*De+1]=Y*Bt[1],V[4*De+2]=Y*Bt[2],V[4*De+3]=Y*Bt[3]}me=A(V,256,1023,t.useFloatTex?1015:1009),we.interpolation=="STEP"&&(me.minFilter=1003,me.magFilter=1003),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++;break;case"VECTOR_ROTATE_BL":S.params.push(D(ie("float",I.invert?-1:1)));break;case"VECT_TRANSFORM_BL":const Ce=I.vectorType,Zt=I.convertFrom,rt=I.convertTo;Ce=="NORMAL"&&(S.outputs[0].normalize=!0);let rn="";Zt==rt?rn="VEC_TRANS_NONE":(rn="VEC_TRANS_"+Zt[0]+"_"+rt[0],Ce!="VECTOR"&&Ce!="NORMAL"||(rn+="_DIR")),S.params.push(D(rn)),a(ne,"OUTPUT_MATERIAL_BL")>0||a(ne,"OUTPUT_WORLD_BL")>0?S.params.push(P(!0)):S.params.push(P(!1));break;case"BITMAP_MX":case"BITMAP_ENV_MX":case"REFLECT_REFRACT_MX":if(me=I.texture,t.nodeTextures[so(J,oe)]=me,S.params.push(L(J,oe)),oe++,J=="BITMAP_MX"){$=I.uvIndex?"uv"+String(I.uvIndex+1):"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B),S.params.push(D("MAPPING_"+I.mapping)),S.params.push(D("AXIS_"+I.axis));const De=ie("ivec2",[re(I.clampToEdgeNoExtend[0]),re(I.clampToEdgeNoExtend[1])]);S.params.push(D(De))}else S.params.push(D(I.reflectMode)),S.params.push(w(I.IOR));S.params.push(D(y(me))),J!="BITMAP_MX"&&J!="BITMAP_ENV_MX"||(S.params.push(P(I.alphaAsMono)),S.params.push(P(I.alphaAsRGB)),S.outputs.push({name:J.toLowerCase()+"_out1_n"+M,type:"float",clamp:!1,normalize:!1}));break;case"BLEND_MX":S.params.push(P(I.useCurve)),S.params.push(w(I.curveLower)),S.params.push(w(I.curveUpper));break;case"BUMP_MX":me=I.texture,t.nodeTextures[so(J,oe)]=me,S.params.push(L(J,oe)),oe++,S.params.push(D("-vViewPosition")),S.params.push(D("normal")),$=I.uvIndex?"uv"+String(I.uvIndex+1):"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B);break;case"COLOR_CORRECTION_MX":const Di=ie("ivec4",[I.rewireR,I.rewireG,I.rewireB,I.rewireA]);S.params.push(D(Di)),I.gainPivotGammaLift&&(S.params.push(w(I.gainPivotGammaLift)),S.params.push(P(I.enableR)),S.params.push(P(I.enableG)),S.params.push(P(I.enableB)),S.params.push(C(I.exposureMode)),S.params.push(w(I.printerLights)));break;case"COMPOSITE_LAYER_MX":S.params.push(D(ie("int",I.blendMode)));const xo=pn(ne,M,1)?I.opacity:0;S.params.push(w(xo));break;case"COLOR_MAP_MX":S.params.push(P(I.reverseGamma));break;case"FALLOFF_MX":if(S.params.push(D("-vViewPosition")),I.falloffType!=4)S.params.push(w(I.IOR)),S.params.push(C(I.falloffType));else{const De=I.extrapolateOn!==void 0&&I.extrapolateOn,Bt=I.nearDistance===void 0?0:I.nearDistance,ce=I.farDistance===void 0?100:I.farDistance;S.params.push(P(De)),S.params.push(w(Bt)),S.params.push(w(ce))}break;case"MASK_MX":S.params.push(P(I.maskInverted));break;case"MATERIAL_MX":S.params.push(w(I.inputFactors[ve[J].reflection])),S.params.push(w(I.inputFactors[ve[J].refraction])),I.inputFactors[ve[J].reflection]=1,I.inputFactors[ve[J].refraction]=1,S.params.push(P(I.selfIllumColorOn));break;case"MATTE_SHADOW_MX":S.params.push(D("normal")),S.params.push(P(I.receiveShadows)),S.params.push(w(I.shadowBrightness)),S.params.push(w(I.color));break;case"NOISE_MX":I.coordType==2?($=I.uvIndex?"uv"+String(I.uvIndex+1):"uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B)):S.params.push(D("vViewPosition")),S.params.push(C(I.noiseType)),S.params.push(C(I.coordType));break;case"NORMAL_BUMP_MX":$="tangent",B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B),S.params.push(D("normal"));const Eo="ivec2("+re(I.flip[0])+","+re(I.flip[1])+")";S.params.push(D(Eo));break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":S.params.push(D("geometryNormal")),S.params.push(P(I.thinWalled)),(I.inputs[ve[J].coatWeight]>0||pn(ne,M,ve[J].coatWeight))&&(t.defines.USE_CLEARCOAT=""),(I.inputs[ve[J].fuzzWeight]>0||pn(ne,M,ve[J].fuzzWeight))&&(t.defines.USE_SHEEN="");break;case"OUTPUT_MAP_MX":if(S.params.push(P(I.invert)),S.params.push(P(I.clamp)),S.params.push(P(I.alphaFromRGB)),I.colorMap){t.useFloatTex?(le=I.colorMap,V=new Float32Array(1024),Y=1):(le=NR(I.colorMap.slice(),0,1),V=new Uint8Array(1024),Y=255),de=le.length/256;for(let De=0;De<256;De++)V[4*De]=Y*le[de*De],de==3?(V[4*De+1]=Y*le[de*De+1],V[4*De+2]=Y*le[de*De+2]):(V[4*De+1]=V[4*De],V[4*De+2]=V[4*De]),V[4*De+3]=Y;me=A(V,256,1023,t.useFloatTex?1015:1009),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++}break;case"PHYSICAL_MX":S.params.push(D("geometryNormal")),S.params.push(w(I.emitLuminance));const jn=I.brdfMode===void 0||I.brdfMode,xl=I.brdfLow===void 0?0:I.brdfLow,Sc=I.brdfHigh===void 0?0:I.brdfHigh,wc=I.brdfCurve===void 0?0:I.brdfCurve;S.params.push(P(!jn)),S.params.push(D(ie("float",xl))),S.params.push(D(ie("float",Sc))),S.params.push(D(ie("float",wc))),S.params.push(P(_e(I.roughnessInv)&&I.roughnessInv)),S.params.push(P(_e(I.transRoughnessLock)&&I.transRoughnessLock)),S.params.push(P(_e(I.transRoughnessInv)&&I.transRoughnessInv)),S.params.push(P(_e(I.thinWalled)&&I.thinWalled)),(I.inputs[ve[J].clearcoat]>0||pn(ne,M,ve[J].clearcoat))&&(t.defines.USE_CLEARCOAT="");break;case"PHY_SUN_SKY_ENV_MX":const Vr=15*I.haze+2,Ms=new xa;Ie=Math.PI/2-I.sunPolarAngle;const Mc=Math.PI-I.sunAzimuthAngle;Ms.phi=Ie,Ms.theta=Mc;const oa=new N().setFromSpherical(Ms).toArray();Ne=li.getDistParams(Vr,0),He=li.getDistParams(Vr,1),je=li.getDistParams(Vr,2),ct=li.getZenithParams(Vr,Ie,0),Vt=li.getZenithParams(Vr,Ie,1),En=li.getZenithParams(Vr,Ie,2),ct/=.06,ct*=1e3,S.params.push(w([Ne[0],He[0],je[0]])),S.params.push(w([Ne[1],He[1],je[1]])),S.params.push(w([Ne[2],He[2],je[2]])),S.params.push(w([Ne[3],He[3],je[3]])),S.params.push(w([Ne[4],He[4],je[4]])),S.params.push(w([ct,Vt,En]));const Ed=li.getSunIlluminance(oa,Vr),Ts=[0,0,0];S.params.push(w(oa)),S.params.push(w(Ed)),S.params.push(w(Ts)),S.params.push(w(I.globalIntensity/O_e)),S.params.push(w(I.groundColor));break;case"REFLECT_REFRACT_COLOR_MX":te=I.outputs[0],S.params.push(w(te));break;case"VERTEX_COLOR_MX":$="color",B=Q($,3),S.attributes.push({name:$,type:"attribute vec3"}),S.params.push(B);break;case"BUMP_2D_MY":S.params.push(D("vNormal")),I.bumpInterp>0&&($="tangent",B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B));break;case"COLOR_COMPOSITE_MY":case"COLOR_LOGIC_MY":case"COLOR_MATH_MY":case"CONDITION_MY":case"FLOAT_COMPOSITE_MY":case"FLOAT_LOGIC_MY":case"FLOAT_MATH_MY":case"MULTIPLY_DIVIDE_MY":S.params.push(D(I.operation));break;case"COLOR_CORRECT_MY":S.params.push(P(I.colClamp)),S.params.push(w(I.colClampMin)),S.params.push(w(I.colClampMax)),S.params.push(P(I.alphaClamp)),S.params.push(w(I.alphaClampMin)),S.params.push(w(I.alphaClampMax)),S.params.push(P(I.unpremultiplyInput)),S.params.push(P(I.premultiplyResult));break;case"COLOR_MASK_MY":S.params.push(P(I.maskAlphaIsLuminance));break;case"COMPOSE_MATRIX_MY":S.params.push(P(I.useEulerRotation)),S.params.push(D(I.inputRotateOrder));break;case"FILE_MY":case"ENV_SPHERE_MY":if(me=I.texture,t.nodeTextures[so(J,oe)]=me,S.params.push(L(J,oe)),oe++,S.params.push(D(y(me))),J=="ENV_SPHERE_MY")S.params.push(D("normal"));else{const De=I.fileHasAlpha===!1;S.params.push(P(De&&Ju(ne,M,it.FILE_MY.alpha)))}break;case"RAMP_MY":t.useFloatTex?(V=new Float32Array(2048),Y=1):(V=new Uint8Array(2048),Y=255);for(let De=0;De<512;De++){const Bt=Y*I.rampData[3*De],ce=Y*I.rampData[3*De+1],Se=Y*I.rampData[3*De+2];V[4*De]=Ht(Bt,0,Y),V[4*De+1]=Ht(ce,0,Y),V[4*De+2]=Ht(Se,0,Y),V[4*De+3]=Y}me=A(V,512,1023,t.useFloatTex?1015:1009),fe=so(J,F),t.nodeTextures[fe]=me,S.params.push(L(J,F)),F++,S.params.push(D(ie("int",I.rampType))),S.params.push(D(ie("int",I.wrapS))),S.params.push(D(ie("int",I.wrapT))),t.defines.RAMP_TEX_SIZE=512,t.definesFragOnly.add("RAMP_TEX_SIZE");break;case"SAMPLER_INFO_MY":S.params.push(D("faceDirection")),$="tangent",B=Q($,4),S.attributes.push({name:$,type:"attribute vec4"}),S.params.push(B),$="uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B);break;case"UNIT_CONVERSION_MY":S.params.push(w(I.conversionFactor));break;case"VECTOR_PRODUCT_MY":S.params.push(D(I.operation)),S.params.push(P(I.normalizeOutput));break;case"OSL_NODE":_e(I.texture)&&(me=I.texture,t.nodeTextures[so(J,oe)]=me,S.params.push(L(J,oe)),oe++);const fi=I.globalVariables||[];fi.indexOf("P")>-1&&S.params.push(D("oslGetP(vViewPosition)")),fi.indexOf("I")>-1&&S.params.push(D("oslGetI(vViewPosition)")),fi.indexOf("N")>-1&&S.params.push(D("oslGetN(normal)")),(fi.indexOf("u")>-1||fi.indexOf("v")>-1)&&($="uv",S.attributes.push({name:$,type:"attribute vec2"}),fi.indexOf("u")>-1&&S.params.push(Q($+"_u",1,$+".x")),fi.indexOf("v")>-1&&S.params.push(Q($+"_v",1,"1.0 - "+$+".y")));break;case"RGB_ALPHA":te=new pt().fromArray(I.outputs[0].concat([I.outputs[1]])),t.nodeRGB.push(te),t.nodeRGBMap[I.name]=k,S.params.push(D("nodeRGB["+k+"]")),k++;break;case"U_FLOAT":$="uv",B=Q($,2),S.attributes.push({name:$,type:"attribute vec2"}),S.params.push(B)}}var U;const z={},v={};for(let M=0;M");for(let U=0;U0||pn(T,O,ve[oe].clearcoat))){const F={originData:{name:"CoatNormal",type:"NORMAL",inputs:[],outputs:[[0,0,0]]}};T.addNode(F),Ke(T,T.len()-1,it.NORMAL.normal,O,ve[oe].clearcoatNormal)}if(oe!="EEVEE_SPECULAR_BL"||pn(T,O,ve.EEVEE_SPECULAR_BL.ambientOcclusion)||(ae.inputs[ve.EEVEE_SPECULAR_BL.ambientOcclusion]=1),oe=="OSL_NODE"){const F=ae.initializers;for(let k=0;k0||pn(T,O,ve[oe].clearcoat))){const F={originData:{name:"CoatNormal",type:"NORMAL",inputs:[],outputs:[[0,0,0]]}};T.addNode(F),Ke(T,T.len()-1,0,O,ve[oe].clearcoatNormal)}if(oe=="MIX_BL"&&ae.outputs.length>1){const F=[-1,-1,-1,-1,-1,-1,-1,-1],k=[-1,-1,-1];switch(ae.dataType){case"RGBA":ae.inputs=[ae.inputs[0],ae.inputs[6],ae.inputs[7]],F[0]=0,F[6]=1,F[7]=2,ae.outputs=[ae.outputs[2]],k[2]=0;break;case"VECTOR":ae.inputs=[ae.inputs[0],ae.inputs[1],ae.inputs[4],ae.inputs[5]],F[0]=0,F[1]=1,F[4]=2,F[5]=3,ae.outputs=[ae.outputs[1]],k[1]=0;break;case"FLOAT":ae.inputs=[ae.inputs[0],ae.inputs[2],ae.inputs[3]],F[0]=0,F[2]=1,F[3]=2,ae.outputs=[ae.outputs[0]],k[0]=0}const q=T.findInEdges(O);for(let U=0;U=0;v--){const M=z.connections[v];F[M.to]>-1?M.to=F[M.to]:z.connections.splice(v,1)}}const j=T.findOutEdges(O);for(let U=0;U=0;v--){const M=z.connections[v];k[M.from]>-1?M.from=k[M.from]:z.connections.splice(v,1)}}}if(ne=="BUMP_2D_MY"&&ae.bumpInterp>0){ae.inputs[ve.BUMP_2D_MY.bumpValue]=[0,0,0];const F=T.findInEdges(O);for(let k=0;kB_e(T,O,ve.TRIPLANAR_AR[M]))),U=ae.coordSystem==="Y_UP_RIGHT"?"SUB_TRANSFORM_MY":"SUB_TRANSFORM_MX",z={originData:{name:"subTransform",type:U,inputs:q.map((M=>ae.inputs[ve.TRIPLANAR_AR[M]])),outputs:[[0,0,0],[0,0,0]],coordSpace:ae.coordSpace}};T.addNode(z);const v=T.len()-1;return j.forEach(((M,S)=>{M.forEach((I=>{const J=I.nodeIdx,$=I.outputIdx,B=I.channelMatrix;Ke(T,J,$,v,ve[U][q[S]],B)}))})),M=>{const S=T.node(M);S.originData.type=="TRIPLANAR_AR"?Ke(T,v,it[U].normal,M,ve.TRIPLANAR_AR.normal):S.originData.type=="TRIPLANAR_UV_AR"&&(Ke(T,v,it[U].vector,M,ve.TRIPLANAR_UV_AR.vector),Ke(T,v,it[U].normal,M,ve.TRIPLANAR_UV_AR.normal))}})();ae.inputs.push([0,0,0]),F(O);const k=q=>{const j={originData:{name:"triplanarUV",type:"TRIPLANAR_UV_AR",inputs:[[0,0,0],[0,0,0]],outputs:q==4?[[0,0],[0,0],[0,0]]:[[0,0]],flipOnOppositeDirection:ae.flipOnOppositeDirection}};q==4?j.originData.blendFactor=ae.blendFactor:j.originData.projectionAxis=q,T.addNode(j);const U=T.len()-1;return F(U),U};if(ae.inputPerAxis){const q=[ve.TRIPLANAR_AR.inputColor,ve.TRIPLANAR_AR.inputColorY,ve.TRIPLANAR_AR.inputColorZ];for(let j=0;j<3;j++){const U=q[j],z=xt(T,O,U,"IMAGE_AR");if(!z){xt(T,O,U)&&console.error("MeshNodeMaterial: TRIPLANAR_AR texture inputs accept only IMAGE_AR or color.");continue}const v=T.nodeIndex(z);ed(T,v,ve.IMAGE_AR.uvcoords);const M=k(j);Ke(T,M,it.TRIPLANAR_UV_AR.uv,v,ve.IMAGE_AR.uvcoords)}}else{const q=xt(T,O,ve.TRIPLANAR_AR.inputColor,"IMAGE_AR");if(!q){xt(T,O,ve.TRIPLANAR_AR.inputColor)&&console.error("MeshNodeMaterial: TRIPLANAR_AR texture inputs accept only IMAGE_AR or color.");continue}const j=T.nodeIndex(q);if(ed(T,j,ve.IMAGE_AR.uvcoords),ed(T,O,ve.TRIPLANAR_AR.inputColorY),ed(T,O,ve.TRIPLANAR_AR.inputColorZ),ae.blendFactor<.001){const U=k(3);Ke(T,U,it.TRIPLANAR_UV_AR.uv,j,ve.IMAGE_AR.uvcoords)}else{const U=k(4);Ke(T,U,it.TRIPLANAR_UV_AR.uv,j,ve.IMAGE_AR.uvcoords),q.originData.inputs.push([0,0],[0,0]),Ke(T,U,it.TRIPLANAR_UV_AR.duvdx,j,ve.IMAGE_AR.duvdx),Ke(T,U,it.TRIPLANAR_UV_AR.duvdy,j,ve.IMAGE_AR.duvdy)}}}if(ne=="UV_PROJECTION_AR"){const F=N_e(T,O,it.UV_PROJECTION_AR.uv),k=ed(T,O,ve.UV_PROJECTION_AR.projectionColor,"IMAGE_AR");if(!k){console.error("MeshNodeMaterial: UV_PROJECTION_AR.projectionColor input accepts only IMAGE_AR.");continue}const q=k.node;if(F){const j=T.nodeIndex(q);Ke(T,j,k.outputIdx,T.nodeIndex(F.node),F.inputIdx),ed(T,j,ve.IMAGE_AR.uvcoords),Ke(T,O,it.UV_PROJECTION_AR.uv,j,ve.IMAGE_AR.uvcoords)}}}let R=0;for(let O=0;O=0){const r=xt(e,t,0);if(!r||r.originData.type!="BACKGROUND_BL")return null;if(e.findInEdges(e.nodeIndex(r)).length==0)return new Ge().fromArray(r.originData.inputs[0]).multiplyScalar(r.originData.inputs[1]);if(pn(e,e.nodeIndex(r),1))return null;const o=xt(e,e.nodeIndex(r),0);if(!o||(o.originData.type!="MIX_BL"||o.originData.dataType!="RGBA")&&o.originData.type!="MIX_RGB_BL"||o.originData.blendType!="MIX")return null;const i=xt(e,e.nodeIndex(o),0);return i&&i.originData.type=="LIGHT_PATH_BL"?pn(e,e.nodeIndex(o),2)?null:Ju(e,e.nodeIndex(i),0)?new Ge().fromArray(o.originData.inputs[2]):null:null}if(t=ea(e,"OUTPUT_MX"),t>=0&&e.findInEdges(t).length==0)return new Ge().fromArray(e.node(t).originData.inputs[0]);if(t=ea(e,"SKYDOME_LIGHT_AR"),t>=0){if(e.findInEdges(t).length==0){const o=e.node(t);return new Ge().fromArray(o.originData.inputs[0]).multiplyScalar(o.originData.inputs[1])}const r=xt(e,t,0);if(!r||r.originData.type!="RAY_SWITCH_AR")return null;if(e.findInEdges(e.nodeIndex(r)).length==0)return new Ge().fromArray(r.originData.inputs[0])}return null}useAddTransparency(){const e=this.nodeGraph,t=ea(e,"OUTPUT_MATERIAL_BL");if(t>=0){const r=xt(e,t,0);if(r&&r.originData.type=="ADD_SHADER_BL"){const o=xt(e,e.nodeIndex(r),0),i=xt(e,e.nodeIndex(r),1);if(o&&i&&(o.originData.type=="BSDF_TRANSPARENT_BL"||i.originData.type=="BSDF_TRANSPARENT_BL"))return!0}}return!1}getMainShaderNode(){const e=this.nodeGraph;if(!e)return null;let t=ea(e,"OUTPUT_MATERIAL_BL");if(t>=0){const r=xt(e,t,ve.OUTPUT_MATERIAL_BL.surface);if(r){if(Ji(r,"MIX_SHADER_BL")){let o=xt(e,r,ve.MIX_SHADER_BL.fac,"SEPARATE_COLOR_BL"),i=xt(e,r,ve.MIX_SHADER_BL.color1,["DIFFUSE_BSDF_BL","BSDF_DIFFUSE_BL"]),a=xt(e,r,ve.MIX_SHADER_BL.color2,vs);if(o&&i&&a||(o=xt(e,r,ve.MIX_SHADER_BL.fac,"LIGHT_PATH_BL"),i=xt(e,r,ve.MIX_SHADER_BL.color1,"BSDF_TRANSPARENT_BL"),a=xt(e,r,ve.MIX_SHADER_BL.color2,"EMISSION_BL"),o&&i&&a)||(o=xt(e,r,ve.MIX_SHADER_BL.fac),i=xt(e,r,ve.MIX_SHADER_BL.color1,"BSDF_TRANSPARENT_BL"),a=xt(e,r,ve.MIX_SHADER_BL.color2,vs),!o&&i&&a))return a}else if(Ji(r,vs))return r}}if(t=ea(e,"OUTPUT_MX"),t>=0){const r=xt(e,t,ve.OUTPUT_MX.color,k_e);if(r)return r}if(t=ea(e,"SHADING_ENGINE_MY"),t>=0){const r=xt(e,t,ve.SHADING_ENGINE_MY.surface,hb);if(r)return r}return null}getInputColor(e,t){const r=xt(this.nodeGraph,e,t);if(!r)return new Ge().fromArray(e.originData.inputs[t]);if(Ji(r,["RGB_BL","RGB_MX","RGB_ALPHA"])){const o=this.nodeRGB[this.nodeRGBMap[r.originData.name]];return new Ge().fromArray(o.toArray())}}getInputValue(e,t){const r=xt(this.nodeGraph,e,t);if(r){if(Ji(r,["VALUE_BL","VALUE_MX","VALUE"]))return this.nodeValue[this.nodeValueMap[r.originData.name]]}else{const o=e.originData.inputs[t];if(typeof o=="number")return o;console.error(`v3d.MeshNodeMaterial: Invalid ${Ei(e)} input value at index ${t}`)}}getInputTexture(e,t){const r=xt(this.nodeGraph,e,t);if(r&&Ji(r,["TEX_IMAGE_BL","BITMAP_MX","FILE_MY","IMAGE_AR"]))return r.originData.texture}getStandardProp(e){if(!(e in Lh))return void console.error(`v3d.MeshNodeMaterial: Invalid standard property: "${e}"`);const t=this.getMainShaderNode();if(!t)return Lh[e];const r=Ei(t),o=ub(t),i=this.nodeGraph;let a,s,l,c,u,d,f,h,p;switch(e){case"color":if(a=vs.includes(r)&&xt(i,t,ve[o].baseColor??ve[o].color,"MIX_BL"),a&&a.originData.blendType=="MULTIPLY"){const A=xt(i,a,ve.MIX_BL.fac),y=xt(i,a,ve.MIX_BL.col1),b=xt(i,a,ve.MIX_BL.col2);if(!A&&(y&&!b||!y&&b)){const E=this.getInputColor(a,y?ve.MIX_BL.col2:ve.MIX_BL.col1);if(E)return E}}else{let A,y;switch(r){case"BSDF_PRINCIPLED_BL":case"EEVEE_SPECULAR_BL":A=this.getInputColor(t,ve[o].baseColor);break;case"PHYSICAL_MX":case"STANDARD_SURFACE_AR":case"LAMBERT_AR":A=this.getInputColor(t,ve[o].baseColor),A||(A=Lh.color.clone()),y=this.getInputValue(t,ve[o].base),_e(y)&&A.multiplyScalar(y);break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":A=this.getInputColor(t,ve[o].baseColor),A||(A=Lh.color.clone()),y=this.getInputValue(t,ve[o].baseWeight),_e(y)&&A.multiplyScalar(y);break;default:A=this.getInputColor(t,ve[o].color)}if(A)return A}break;case"map":if(a=vs.includes(r)&&xt(i,t,ve[o].baseColor??ve[o].color,"MIX_BL"),a&&a.originData.blendType=="MULTIPLY"){const A=xt(i,a,ve.MIX_BL.fac),y=xt(i,a,ve.MIX_BL.col1),b=xt(i,a,ve.MIX_BL.col2);if(!A&&(y&&!b||!y&&b)){const E=this.getInputTexture(a,y?ve.MIX_BL.col1:ve.MIX_BL.col2);if(E)return E}}else if(["BSDF_PRINCIPLED_BL","EEVEE_SPECULAR_BL","PHYSICAL_MX","OPENPBR_SURFACE_MX","OPENPBR_SURFACE_MY","STANDARD_SURFACE_AR","LAMBERT_AR"].includes(r)){const A=this.getInputTexture(t,ve[o].baseColor);if(A)return A}else{const A=this.getInputTexture(t,ve[o].color);if(A)return A}break;case"opacity":if(p=ea(i,"OUTPUT_MATERIAL_BL"),p>=0){const A=xt(i,p,ve.OUTPUT_MATERIAL_BL.surface,"MIX_SHADER_BL");if(A){const y=xt(i,A,ve.MIX_SHADER_BL.fac),b=xt(i,A,ve.MIX_SHADER_BL.color1,"BSDF_TRANSPARENT_BL"),E=xt(i,A,ve.MIX_SHADER_BL.color2,vs);if(!y&&b&&E){const x=this.getInputValue(A,ve.MIX_SHADER_BL.fac);if(_e(x))return x}}}switch(r){case"BSDF_PRINCIPLED_BL":const A=this.getInputValue(t,ve[o].alpha);if(_e(A))return A;break;case"EEVEE_SPECULAR_BL":case"PHYSICAL_MX":if(l=this.getInputValue(t,ve[o].transparency),_e(l))return 1-l;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":if(c=this.getInputValue(t,ve[o].geometryOpacity),_e(c))return c;break;case"LAMBERT_MY":case"SURFACE_SHADER_MY":if(l=this.getInputColor(t,ve[o].transparency),l)return 1-(l.r+l.g+l.b)/3;break;case"STANDARD_SURFACE_AR":case"LAMBERT_AR":if(c=this.getInputColor(t,ve[o].opacity),c)return(c.r+c.g+c.b)/3}break;case"metalness":if(this.getStandardProp("metalnessMap"))return 1;switch(r){case"BSDF_PRINCIPLED_BL":if(u=this.getInputValue(t,ve[o].metallic),_e(u))return u;break;case"PHYSICAL_MX":case"STANDARD_SURFACE_AR":if(u=this.getInputValue(t,ve[o].metalness),_e(u))return u;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":if(u=this.getInputValue(t,ve[o].baseMetalness),_e(u))return u;break;case"BSDF_DIFFUSE_BL":case"DIFFUSE_BSDF_BL":case"LAMBERT_MY":case"LAMBERT_AR":case"EMISSION_BL":case"SURFACE_SHADER_MY":case"MAP_TO_MTL_AR":return 0;case"BSDF_GLOSSY_BL":case"BSDF_METALLIC_BL":return 1;case"EEVEE_SPECULAR_BL":return .5}break;case"metalnessMap":switch(r){case"BSDF_PRINCIPLED_BL":if(s=xt(i,t,ve[o].metallic,"SEPARATE_COLOR_BL"),s&&(d=this.getInputTexture(s,ve.SEPARATE_COLOR_BL.color),d))return d;break;case"PHYSICAL_MX":case"STANDARD_SURFACE_AR":if(d=this.getInputTexture(t,ve[o].metalness),d)return d;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":if(d=this.getInputTexture(t,ve[o].baseMetalness),d)return d;break;case"BSDF_DIFFUSE_BL":case"BSDF_GLOSSY_BL":case"BSDF_METALLIC_BL":case"DIFFUSE_BSDF_BL":case"EEVEE_SPECULAR_BL":case"EMISSION_BL":case"LAMBERT_MY":case"LAMBERT_AR":case"SURFACE_SHADER_MY":case"MAP_TO_MTL_AR":return null}break;case"roughness":if(this.getStandardProp("roughnessMap"))return 1;switch(r){case"BSDF_PRINCIPLED_BL":case"BSDF_GLOSSY_BL":case"BSDF_METALLIC_BL":case"EEVEE_SPECULAR_BL":case"PHYSICAL_MX":if(f=this.getInputValue(t,ve[o].roughness),_e(f))return f;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":case"STANDARD_SURFACE_AR":if(f=this.getInputValue(t,ve[o].specularRoughness),_e(f))return f;break;case"BSDF_DIFFUSE_BL":case"DIFFUSE_BSDF_BL":case"LAMBERT_MY":case"LAMBERT_AR":return 1;case"EMISSION_BL":case"SURFACE_SHADER_MY":case"MAP_TO_MTL_AR":return .9}break;case"roughnessMap":switch(r){case"BSDF_PRINCIPLED_BL":case"BSDF_GLOSSY_BL":case"BSDF_METALLIC_BL":case"EEVEE_SPECULAR_BL":if(s=xt(i,t,ve[o].roughness,"SEPARATE_COLOR_BL"),s&&(h=this.getInputTexture(s,ve.SEPARATE_COLOR_BL.color),h))return h;break;case"PHYSICAL_MX":if(h=this.getInputTexture(t,ve[o].roughness),h)return h;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":case"STANDARD_SURFACE_AR":if(h=this.getInputTexture(t,ve[o].specularRoughness),h)return h;break;case"BSDF_DIFFUSE_BL":case"DIFFUSE_BSDF_BL":case"EMISSION_BL":case"LAMBERT_MY":case"SURFACE_SHADER_MY":case"MAP_TO_MTL_AR":return null}break;case"aoMap":if(p=ea(i,"OUTPUT_MATERIAL_BL"),p>=0){const A=xt(i,p,ve.OUTPUT_MATERIAL_BL.surface,"MIX_SHADER_BL");if(A){const y=xt(i,A,ve.MIX_SHADER_BL.fac,"SEPARATE_COLOR_BL"),b=xt(i,A,ve.MIX_SHADER_BL.color1,["DIFFUSE_BSDF_BL","BSDF_DIFFUSE_BL"]),E=xt(i,A,ve.MIX_SHADER_BL.color2,vs);if(y&&b&&E){const x=this.getInputTexture(y,ve.SEPARATE_COLOR_BL.color);if(x)return x}}}else{let A;switch(r){case"PHYSICAL_MX":case"STANDARD_SURFACE_AR":if(A=this.getInputTexture(t,ve[o].base),A)return A;break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":if(A=this.getInputTexture(t,ve[o].baseWeight),A)return A}}break;case"aoMapIntensity":break;case"normalMap":if(vs.includes(r)){const A=ve[o].normal;if(_e(A)){const y=xt(i,t,A,"NORMAL_MAP_BL");if(y){const b=this.getInputTexture(y,ve.NORMAL_MAP_BL.normalColor);if(b)return b}}}else if(hb.includes(r)){const A=ve[o].normal;if(_e(A)){const y=xt(i,t,A,"BUMP_2D_MY");if(y){const b=this.getInputTexture(y,ve.BUMP_2D_MY.bumpValue);if(b)return b}}}else if(r=="PHYSICAL_MX"||r=="OPENPBR_SURFACE_MX"){const A=xt(i,t,ve[o].normal,"NORMAL_BUMP_MX");if(A){const y=this.getInputTexture(A,ve.NORMAL_BUMP_MX.normalColor);if(y)return y}}break;case"normalScale":if(vs.includes(r)){const A=ve[o].normal;if(_e(A)){const y=xt(i,t,A,"NORMAL_MAP_BL");if(y){const b=this.getInputValue(y,ve.NORMAL_MAP_BL.strength);if(_e(b))return new be(b,b)}}}else if(hb.includes(r)){const A=ve[o].normal;if(_e(A)){const y=xt(i,t,A,"BUMP_2D_MY");if(y){const b=this.getInputValue(y,ve.BUMP_2D_MY.bumpDepth);if(_e(b))return new be(b,b)}}}else if(r=="PHYSICAL_MX"||r=="OPENPBR_SURFACE_MX"){const A=xt(i,t,ve[o].normal,"NORMAL_BUMP_MX");if(A){const y=this.getInputValue(A,ve.NORMAL_BUMP_MX.normalMult);if(_e(y))return new be(y,y)}}break;case"emissive":if(this.getStandardProp("emissiveMap"))return new Ge(1,1,1);let m;switch(r){case"BSDF_PRINCIPLED_BL":m=this.getInputColor(t,ve[o].emission);break;case"EEVEE_SPECULAR_BL":m=this.getInputColor(t,ve[o].emissiveColor);break;case"PHYSICAL_MX":m=this.getInputColor(t,ve[o].emitColor);break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":case"STANDARD_SURFACE_AR":m=this.getInputColor(t,ve[o].emissionColor)}if(m)return m;break;case"emissiveMap":let g;switch(r){case"BSDF_PRINCIPLED_BL":g=this.getInputTexture(t,ve[o].emission);break;case"EEVEE_SPECULAR_BL":g=this.getInputTexture(t,ve[o].emissiveColor);break;case"PHYSICAL_MX":g=this.getInputTexture(t,ve[o].emitColor);break;case"OPENPBR_SURFACE_MX":case"OPENPBR_SURFACE_MY":case"STANDARD_SURFACE_AR":g=this.getInputTexture(t,ve[o].emissionColor)}if(g)return g;break;case"emissiveIntensity":let _;switch(r){case"BSDF_PRINCIPLED_BL":_=this.getInputValue(t,ve[o].emissionStrength);break;case"EEVEE_SPECULAR_BL":_=1;break;case"PHYSICAL_MX":case"STANDARD_SURFACE_AR":_=this.getInputValue(t,ve[o].emission);break;case"OPENPBR_SURFACE_MX":_=this.getInputValue(t,ve[o].emissionWeight);break;case"OPENPBR_SURFACE_MY":_=this.getInputValue(t,ve[o].emissionLuminance/1e3)}if(_e(_))return _}return Lh[e]}isUnlit(){const e=this.getMainShaderNode();return!(!e||!Ji(e,["EMISSION_BL","SURFACE_SHADER_MY","MAP_TO_MTL_AR"]))}copy(e){super.copy(e),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.envMapParallaxType=e.envMapParallaxType,this.envMapParallaxMatrix.copy(e.envMapParallaxMatrix),this.envMapParallaxMatrixInv.copy(e.envMapParallaxMatrixInv),this.materialIndex=e.materialIndex,this.profile=e.profile,this.nodeTextures=Object.assign({},e.nodeTextures),this.nodeRGB=[];for(let t=0;t{t&&t(i),this.manager.itemEnd(e)}),0),i;if(As[e]!==void 0)return void As[e].push({onLoad:t,onProgress:r,onError:o});As[e]=[],As[e].push({onLoad:t,onProgress:r,onError:o});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),s=this.mimeType,l=this.responseType;fetch(a).then((c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("v3d.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const u=As[e],d=c.body.getReader(),f=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),h=f?parseInt(f):0,p=h!==0;let m=0;const g=new ReadableStream({start(_){(function A(){d.read().then((({done:y,value:b})=>{if(y)_.close();else{m+=b.byteLength;const E=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:h});for(let x=0,w=u.length;x{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then((u=>new DOMParser().parseFromString(u,s)));case"json":return c.json();default:if(s===void 0)return c.text();{const u=/charset="?([^;"\s]*)"?/i.exec(s),d=u&&u[1]?u[1].toLowerCase():void 0,f=new TextDecoder(d);return c.arrayBuffer().then((h=>f.decode(h)))}}})).then((c=>{na.add(e,c);const u=As[e];delete As[e];for(let d=0,f=u.length;d{const u=As[e];if(u===void 0)throw this.manager.itemError(e),c;delete As[e];for(let d=0,f=u.length;d{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class V_e extends Ci{constructor(e){super(e)}load(e,t,r,o){const i=this,a=[],s=new dl,l=new Si(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(i.withCredentials);let c=0;function u(d){l.load(e[d],(function(f){const h=i.parse(f,!0);a[d]={width:h.width,height:h.height,format:h.format,mipmaps:h.mipmaps},c+=1,c===6&&(h.mipmapCount===1&&(s.minFilter=1006),s.image=a,s.format=h.format,s.needsUpdate=!0,t&&t(s))}),r,o)}if(Array.isArray(e))for(let d=0,f=e.length;d"u"&&console.warn("v3d.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("v3d.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,r,o){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const i=this,a=na.get(e);if(a!==void 0)return i.manager.itemStart(e),setTimeout((function(){t&&t(a),i.manager.itemEnd(e)}),0),a;const s={};s.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",s.headers=this.requestHeader,fetch(e,s).then((function(l){return l.blob()})).then((function(l){return createImageBitmap(l,Object.assign(i.options,{colorSpaceConversion:"none"}))})).then((function(l){na.add(e,l),t&&t(l),i.manager.itemEnd(e)})).catch((function(l){o&&o(l),i.manager.itemError(e),i.manager.itemEnd(e)})),i.manager.itemStart(e)}}class Ea{static decodeText(e){if(typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let r=0,o=e.length;rt.length;)t.push(new W0);t.length=e.length;for(let o=0;othis.numCascades;)e.pop().dispose();for(let t=e.length;tc.distanceTo(s[2])?l[2]:s[2];let d=c.distanceTo(u);if(this.fade>0){const f=Math.min(e.far,this.maxDistance),h=e.near,p=a.vertices.far[0].z/(f-h);d+=this.fade*Math.pow(p,2)*(f-h)}i.left=-d/2,i.right=d/2,i.top=d/2,i.bottom=-d/2,i.near=0,i.far=d+this.lightMargin,i.updateProjectionMatrix(),o.bias=this.bias,o.normalBias=this.normalBias,o.esmBlurRadius=o.radius/((i.right-i.left)/2)}}getBreaks(e){const t=e.near,r=Math.min(e.far,this.maxDistance),o=this.numCascades,i=this.exponent,a=this._breaks;a.length=0,this.customSplitsCallback?this.customSplitsCallback(o,t,r,a,i):(function(s,l,c,u,d){bb.length=0,xb.length=0,(function(f,h,p,m){for(let g=1;g0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e{if(l.times.length===0)return;const c=[Math.max(t/o,l.times[0]),Math.min(r/o,l.times[l.times.length-1])];if(c[0]>c[1])return;const u=l.times.findIndex((x=>x>=c[0])),d=l.times.findLastIndex((x=>x<=c[1])),f=l.getValueSize();let h=[],p=uc(l.times)?l.times.subarray(u,d+1):l.times.slice(u,d+1),m=[],g=[],_=uc(l.values)?l.values.subarray(u*f,(d+1)*f):l.values.slice(u*f,(d+1)*f),A=[];const y=u>d;let b,E;(y||c[0]l.times[d])&&(m=[c[1]],A=l.createInterpolant().evaluate(m[0])),uc(l.times)?(b=new l.times.constructor(h.length+p.length+m.length),b.set(h),b.set(p,h.length),b.set(m,h.length+p.length)):b=h.concat(p,m),uc(l.values)?(E=new l.values.constructor(g.length+_.length+A.length),E.set(g),E.set(_,g.length),E.set(A,g.length+_.length)):E=g.concat(_,A),l.times=b,l.values=E,a.push(l)}));const s=a.reduce(((l,c)=>Math.min(l,c.times[0])),1/0);return a.forEach((l=>l.shift(-s))),i.tracks=a,i.resetDuration(),i}function nve(n,e=0,t=n,r=30){r<=0&&(r=30);const o=t.tracks.length,i=e/r;for(let a=0;a=s.times[p]){const _=p*d+u,A=_+d-u;m=wi(s.values,_,A)}else{const _=s.createInterpolant(),A=u,y=d-u;_.evaluate(i),m=wi(_.resultBuffer,A,y)}l==="quaternion"&&new It().fromArray(m).normalize().conjugate().toArray(m);const g=c.times.length;for(let _=0;_t;)--a;if(++a,i!==0||a!==o){i>=a&&(a=Math.max(a,1),i=a-1);const s=this.getValueSize();this.times=wi(r,i,a),this.values=wi(this.values,i*s,a*s)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("v3d.KeyframeTrack: Invalid value size in track.",this),e=!1);const r=this.times,o=this.values,i=r.length;i===0&&(console.error("v3d.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let s=0;s!==i;s++){const l=r[s];if(typeof l=="number"&&isNaN(l)){console.error("v3d.KeyframeTrack: Time is not a valid number.",this,s,l),e=!1;break}if(a!==null&&a>l){console.error("v3d.KeyframeTrack: Out of order keys.",this,s,l,a),e=!1;break}a=l}if(o!==void 0&&uc(o))for(let s=0,l=o.length;s!==l;++s){const c=o[s];if(isNaN(c)){console.error("v3d.KeyframeTrack: Value is not a valid number.",this,s,c),e=!1;break}}return e}optimize(){const e=wi(this.times),t=wi(this.values),r=this.getValueSize(),o=this.getInterpolation()===2302,i=e.length-1;let a=1;for(let s=1;s0){e[a]=e[i];for(let s=i*r,l=a*r,c=0;c!==r;++c)t[l+c]=t[s+c];++a}return a!==e.length?(this.times=wi(e,0,a),this.values=wi(t,0,a*r)):(this.times=e,this.values=t),this}clone(){const e=wi(this.times,0),t=wi(this.values,0),r=new this.constructor(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Sa.prototype.TimeBufferType=Float32Array,Sa.prototype.ValueBufferType=Float32Array,Sa.prototype.DefaultInterpolation=2301;class Nh extends Sa{}Nh.prototype.ValueTypeName="vector";class dc extends Sa{}dc.prototype.ValueTypeName="string",dc.prototype.ValueBufferType=Array,dc.prototype.DefaultInterpolation=2300,dc.prototype.InterpolantFactoryMethodLinear=void 0,dc.prototype.InterpolantFactoryMethodSmooth=void 0;class iD extends qu{constructor(e,t,r,o){super(e,t,r,o)}interpolate_(e,t,r,o){const i=this.resultBuffer,a=this.sampleValues,s=this.valueSize,l=(r-t)/(o-t);let c=e*s;for(let u=c+s;c!==u;c+=4)It.slerpFlat(i,0,a,c-s,a,c,l);return i}}class fc extends Sa{InterpolantFactoryMethodLinear(e){return new iD(this.times,this.values,this.getValueSize(),e)}}fc.prototype.ValueTypeName="quaternion",fc.prototype.DefaultInterpolation=2301,fc.prototype.InterpolantFactoryMethodSmooth=void 0;class hc extends Sa{}hc.prototype.ValueTypeName="number";class Sb extends Sa{}Sb.prototype.ValueTypeName="color";class pc extends Sa{}pc.prototype.ValueTypeName="bool",pc.prototype.ValueBufferType=Array,pc.prototype.DefaultInterpolation=2300,pc.prototype.InterpolantFactoryMethodLinear=void 0,pc.prototype.InterpolantFactoryMethodSmooth=void 0;class aD{constructor(e,t,r){let o,i,a;switch(this.binding=e,this.valueSize=r,t){case"quaternion":o=this._slerp,i=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*r),this._workIndex=5;break;case"string":case"bool":o=this._select,i=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(5*r);break;default:o=this._lerp,i=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*r)}this._mixBufferRegion=o,this._mixBufferRegionAdditive=i,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){const r=this.buffer,o=this.valueSize,i=e*o+o;let a=this.cumulativeWeight;if(a===0){for(let s=0;s!==o;++s)r[i+s]=r[s];a=t}else{a+=t;const s=t/a;this._mixBufferRegion(r,i,0,s,o)}this.cumulativeWeight=a}accumulateAdditive(e){const t=this.buffer,r=this.valueSize,o=r*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,o,0,e,r),this.cumulativeWeightAdditive+=e}apply(e){const t=this.valueSize,r=this.buffer,o=e*t+t,i=this.cumulativeWeight,a=this.cumulativeWeightAdditive,s=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,i<1){const l=t*this._origIndex;this._mixBufferRegion(r,o,l,1-i,t)}a>0&&this._mixBufferRegionAdditive(r,o,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(r[l]!==r[l+t]){s.setValue(r,o);break}}saveOriginalState(){const e=this.binding,t=this.buffer,r=this.valueSize,o=r*this._origIndex;e.getValue(t,o);for(let i=r,a=o;i!==a;++i)t[i]=t[o+i%r];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let r=e;r=.5)for(let a=0;a!==i;++a)e[t+a]=e[r+a]}_slerp(e,t,r,o){It.slerpFlat(e,t,e,t,e,r,o)}_slerpAdditive(e,t,r,o,i){const a=this._workIndex*i;It.multiplyQuaternionsFlat(e,a,e,t,e,r),It.slerpFlat(e,t,e,t,e,a,o)}_lerp(e,t,r,o,i){const a=1-o;for(let s=0;s!==i;++s){const l=t+s;e[l]=e[l]*a+e[r+s]*o}}_lerpAdditive(e,t,r,o,i){for(let a=0;a!==i;++a){const s=t+a;e[s]=e[s]+e[r+a]*o}}}const ove=new RegExp("[\\[\\]\\.]","g"),wb="[^\\[\\]\\.]",ive="[^"+"\\[\\]\\.".replace("\\.","")+"]";/((?:WC+[\/:])*)/.source.replace("WC",wb);const ave=/(WCOD+)?/.source.replace("WCOD",ive),sve=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",wb),lve=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",wb),cve=new RegExp("^"+ave+sve+lve+"$"),uve=["material","materials","bones","map"];class dve{constructor(e,t,r){const o=r||Kt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,o)}getValue(e,t){this.bind();const r=this._targetGroup.nCachedObjects_,o=this._bindings[r];o!==void 0&&o.getValue(e,t)}setValue(e,t){const r=this._bindings;for(let o=this._targetGroup.nCachedObjects_,i=r.length;o!==i;++o)r[o].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,r=e.length;t!==r;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,r=e.length;t!==r;++t)e[t].unbind()}}class Kt{constructor(e,t,r){this.path=t,this.parsedPath=r||Kt.parseTrackName(t),this.node=Kt.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,r){return e&&e.isAnimationObjectGroup?new Kt.Composite(e,t,r):new Kt(e,t,r)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(ove,"")}static parseTrackName(e){const t=cve.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const r={nodeName:t[1],objectName:t[2],objectIndex:t[3],propertyName:t[4],propertyIndex:t[5]},o=r.nodeName&&r.nodeName.lastIndexOf(".");if(o!==void 0&&o!==-1){const i=r.nodeName.substring(o+1);uve.indexOf(i)!==-1&&(r.nodeName=r.nodeName.substring(0,o),r.objectName=i)}if(r.propertyName===null||r.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return r}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const r=e.skeleton.getBoneByName(t);if(r!==void 0)return r}if(e.children){const r=function(i){for(let a=0;a=i){const d=i++,f=e[d];t[f.uuid]=u,e[u]=f,t[c]=d,e[d]=l;for(let h=0,p=o;h!==p;++h){const m=r[h],g=m[d],_=m[u];m[u]=g,m[d]=_}}}this.nCachedObjects_=i}uncache(){const e=this._objects,t=this._indicesByUUID,r=this._bindings,o=r.length;let i=this.nCachedObjects_,a=e.length;for(let s=0,l=arguments.length;s!==l;++s){const c=arguments[s].uuid,u=t[c];if(u!==void 0)if(delete t[c],u0&&(t[f.uuid]=u),e[u]=f,e.pop();for(let h=0,p=o;h!==p;++h){const m=r[h];m[u]=m[d],m.pop()}}}this.nCachedObjects_=i}subscribe_(e,t){const r=this._bindingsIndicesByPath;let o=r[e];const i=this._bindings;if(o!==void 0)return i[o];const a=this._paths,s=this._parsedPaths,l=this._objects,c=l.length,u=this.nCachedObjects_,d=new Array(c);o=i.length,r[e]=o,a.push(e),s.push(t),i.push(d);for(let f=u,h=l.length;f!==h;++f){const p=l[f];d[f]=new Kt(p,e,t)}return d}unsubscribe_(e){const t=this._bindingsIndicesByPath,r=t[e];if(r!==void 0){const o=this._paths,i=this._parsedPaths,a=this._bindings,s=a.length-1,l=a[s];t[e[s]]=r,a[r]=l,a.pop(),i[r]=i[s],i.pop(),o[r]=o[s],o.pop()}}}class hve{constructor(e,t,r=null,o=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=r,this.blendMode=o;const i=t.tracks,a=i.length,s=new Array(a),l={endingStart:2400,endingEnd:2400};for(let c=0;c!==a;++c){const u=i[c].createInterpolant(null);s[c]=u,u.settings=l}this._interpolantSettings=l,this._interpolants=s,this._propertyBindings=new Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._pingIsEven=!0,this._startTime=null,this.time=0,this.timeStart=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!0,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0,this.autoParams={loop:2201,repetitions:1/0}}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this._pingIsEven=!0,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t,r=!1){return this.loop=e,this.repetitions=t,r&&(this.autoParams.loop=e,this.autoParams.repetitions=t),this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,r){if(e.fadeOut(t),this.fadeIn(t),r){const o=this._clip.duration,i=e._clip.duration,a=i/o,s=o/i;e.warp(1,a,t),this.warp(s,1,t)}return this}crossFadeTo(e,t,r){return e.crossFadeFrom(this,t,r)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,r){const o=this._mixer,i=o.time,a=this.timeScale;let s=this._timeScaleInterpolant;s===null&&(s=o._lendControlInterpolant(),this._timeScaleInterpolant=s);const l=s.parameterPositions,c=s.sampleValues;return l[0]=i,l[1]=i+r,c[0]=e/a,c[1]=t/a,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,r,o){if(!this.enabled)return void this._updateWeight(e);const i=this._startTime;if(i!==null){const l=(e-i)*r;if(l<0||r===0)return;this._startTime=null,t=r*l}t*=this._updateTimeScale(e);const a=this._updateTime(t),s=this._updateWeight(e);if(s>0){const l=this._interpolants,c=this._propertyBindings;if(this.blendMode===2501)for(let u=0,d=l.length;u!==d;++u)l[u].evaluate(a),c[u].accumulateAdditive(s);else for(let u=0,d=l.length;u!==d;++u)l[u].evaluate(a),c[u].accumulate(o,s)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const r=this._weightInterpolant;if(r!==null){const o=r.evaluate(e)[0];t*=o,e>r.parameterPositions[1]&&(this.stopFading(),o===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const r=this._timeScaleInterpolant;r!==null&&(t*=r.evaluate(e)[0],e>r.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_loopIsPing(e){return this.loop!==2202||e==-1?!0:!(1&e)===this._pingIsEven}_updateTime(e){if(e===0)return this.time;if(this.loop!==2200&&this.repetitions<=0)return this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1}),this.time;var t=this.timeStart,r=Math.max(t,this._clip.duration),o=r-t;if(this.loop===2200)return this.time+=e,this._loopCount===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1)),(this.timer)&&(this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=Ht(this.time,t,r),this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})),this.time;var i=this.loop===2202,a=this._loopIsPing(this._loopCount)?1:-1;this.time+=a*e;var s=this.timer,l=!1;if(this._loopCount===-1&&(l=s,this._loopCount=l?-1:0,this._pingIsEven=!l,e>=0?this._setEndings(!0,this.repetitions===0,i):this._setEndings(this.repetitions===0,!0,i)),s){var c=Math.floor((this.time-t)/o);this._loopCount+=Math.abs(c);var u=this.repetitions-this._loopCount;if(u<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=Ht(this.time,t,r),this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1});else{if(u==1){var d=e<0;this._setEndings(d,!d,i)}else this._setEndings(!1,!1,i);var f=(this.time-t)%o;f<0&&(f+=o),this.time=i?r-f:f+t,l||this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:c})}}return this.time}_setEndings(e,t,r){const o=this._interpolantSettings;r?(o.endingStart=2401,o.endingEnd=2401):(o.endingStart=e?this.zeroSlopeAtStart?2401:2400:2402,o.endingEnd=t?this.zeroSlopeAtEnd?2401:2400:2402)}_scheduleFading(e,t,r){const o=this._mixer,i=o.time;let a=this._weightInterpolant;a===null&&(a=o._lendControlInterpolant(),this._weightInterpolant=a);const s=a.parameterPositions,l=a.sampleValues;return s[0]=i,l[0]=t,s[1]=i+e,l[1]=r,this}}class j0{constructor(e,t=-1,r,o=2500){this.name=e,this.tracks=r,this.duration=t,this.blendMode=o,this.uuid=ji(),this.objectUUID="",this.duration<0&&this.resetDuration()}static parse(e){const t=[],r=e.tracks,o=1/(e.fps||1);for(let a=0,s=r.length;a!==s;++a)t.push(mve(r[a]).scale(o));const i=new this(e.name,e.duration,t,e.blendMode);return i.uuid=e.uuid,i}static CreateFromMorphTargetSequence(e,t,r,o){const i=t.length,a=[];for(let s=0;s1){const d=u[1];let f=o[d];f||(o[d]=f=[]),f.push(c)}}const a=[];for(const s in o)a.push(this.CreateFromMorphTargetSequence(s,o[s],t,r));return a}resetDuration(){let e=0;for(let t=0,r=this.tracks.length;t!==r;++t){const o=this.tracks[t];e=Math.max(e,o.times[o.times.length-1])}return this.duration=e,this}trim(){for(let e=0;e=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;const t=this._actions,r=this._nActiveActions,o=this.time+=e,i=Math.sign(e),a=this._accuIndex^=1;for(let c=0;c!==r;++c)t[c]._update(o,e,i,a);const s=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)s[c].apply(a);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}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}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))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return lD.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),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 cD=new N,$0=new N;class wa{constructor(e=new N,t=new N){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){cD.subVectors(e,this.start),$0.subVectors(this.end,this.start);const r=$0.dot($0);let o=$0.dot(cD)/r;return t&&(o=Ht(o,0,1)),o}closestPointToPoint(e,t,r){const o=this.closestPointToPointParameter(e,t);return this.delta(r).multiplyScalar(o).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const uD=new N;class dD extends kt{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const r=new At,o=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let a=0,s=1,l=32;a1)for(let u=0;u{h.visible=r}))}o.visible=e}update(){const e=this.csm,t=e._sceneViewCamera;if(!t||e._needsUpdate)return;const r=e._cascades,o=r.length,i=e.mainFrustum,a=e._frustums,s=this.frustumLines.geometry.getAttribute("position"),l=this.cascadeLines,c=this.cascadePlanes,u=this.shadowLines;for(this.position.copy(t.position),this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.updateWorldMatrix(!1,!0);l.length>o;){this.remove(l.pop()),this.remove(c.pop());const h=u.pop();h.children[0].dispose(),this.remove(h)}for(;l.length.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{yD.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(yD,t)}}setLength(e,t=.2*e,r=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(r,t,r),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class Pve extends ai{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],r=new At;r.setAttribute("position",new mt(t,3)),r.setAttribute("color",new mt([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(r,new _r({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,r){const o=new Ge,i=this.geometry.attributes.color.array;return o.set(e),o.toArray(i,0),o.toArray(i,3),o.set(t),o.toArray(i,6),o.toArray(i,9),o.set(r),o.toArray(i,12),o.toArray(i,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class bD{constructor(){this.type="ShapePath",this.color=new Ge,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new I0,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,r,o){return this.currentPath.quadraticCurveTo(e,t,r,o),this}bezierCurveTo(e,t,r,o,i,a){return this.currentPath.bezierCurveTo(e,t,r,o,i,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(g,_){const A=_.length;let y=!1;for(let b=A-1,E=0;ENumber.EPSILON){if(C<0&&(x=_[E],L=-L,w=_[b],C=-C),g.yw.y)continue;if(g.y===x.y){if(g.x===x.x)return!0}else{const P=C*(g.x-x.x)-L*(g.y-x.y);if(P===0)return!0;if(P<0)continue;y=!y}}else{if(g.y!==x.y)continue;if(w.x<=g.x&&g.x<=x.x||x.x<=g.x&&g.x<=w.x)return!0}}return y}const r=ba.isClockWise,o=this.subPaths;if(o.length===0)return[];let i,a,s;const l=[];if(o.length===1)return a=o[0],s=new $u,s.curves=a.curves,l.push(s),l;let c=!r(o[0].getPoints());c=e?!c:c;const u=[],d=[];let f,h,p=[],m=0;d[m]=void 0,p[m]=[];for(let g=0,_=o.length;g<_;g++)a=o[g],f=a.getPoints(),i=r(f),i=e?!i:i,i?(!c&&d[m]&&m++,d[m]={s:new $u,p:f},d[m].s.curves=a.curves,c&&m++,p[m]=[]):p[m].push({h:a,p:f[0]});if(!d[0])return(function(g){const _=[];for(let A=0,y=g.length;A1){let g=!1,_=0;for(let A=0,y=d.length;A0&&g===!1&&(p=u)}for(let g=0,_=d.length;g<_;g++){s=d[g].s,l.push(s),h=p[g];for(let A=0,y=h.length;A>-c-14,r[256|l]=1024>>-c-14|32768,o[l]=-c-1,o[256|l]=-c-1):c<=15?(r[l]=c+15<<10,r[256|l]=c+15<<10|32768,o[l]=13,o[256|l]=13):c<128?(r[l]=31744,r[256|l]=64512,o[l]=24,o[256|l]=24):(r[l]=31744,r[256|l]=64512,o[l]=13,o[256|l]=13)}const i=new Uint32Array(2048),a=new Uint32Array(64),s=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,u=0;for(;!(8388608&c);)c<<=1,u-=8388608;c&=-8388609,u+=947912704,i[l]=c|u}for(let l=1024;l<2048;++l)i[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(s[l]=1024);return{floatView:e,uint32View:t,baseTable:r,shiftTable:o,mantissaTable:i,exponentTable:a,offsetTable:s}}function mc(n){Math.abs(n)>65504&&console.warn("v3d.DataUtils.toHalfFloat(): Value out of range."),n=Ht(n,-65504,65504),ys.floatView[0]=n;const e=ys.uint32View[0],t=e>>23&511;return ys.baseTable[t]+((8388607&e)>>ys.shiftTable[t])}function J0(n){const e=n>>10;return ys.uint32View[0]=ys.mantissaTable[ys.offsetTable[e]+(1023&n)]+ys.exponentTable[e],ys.floatView[0]}var Bve=Object.freeze({__proto__:null,fromHalfFloat:J0,toHalfFloat:mc});class xD extends xi{constructor(e,t,r){super(),this.damp=t,this.shader=Tt.afterimage,this.uniforms=_o.clone(this.shader.uniforms),this.uniforms.damp.value=this.damp,this.textureComp=new nn(e.x,e.y,r),this.textureComp.texture.name="AfterImage.comp",this.textureOld=new nn(e.x,e.y,r),this.textureOld.texture.name="AfterImage.old",this.shaderMaterial=new Dn({uniforms:this.uniforms,vertexShader:this.shader.vertexShader,fragmentShader:this.shader.fragmentShader}),this.compFsQuad=new Xi(this.shaderMaterial);const o=new pr;this.copyFsQuad=new Xi(o)}dispose(){this.textureComp.dispose(),this.textureOld.dispose()}render(e,t,r){this.uniforms.tOld.value=this.textureOld.texture,this.uniforms.tNew.value=r.texture,this.uniforms.damp.value=this.damp,e.setRenderTarget(this.textureComp),this.compFsQuad.render(e),this.copyFsQuad.material.map=this.textureComp.texture,this.renderToScreen?(e.setRenderTarget(null),this.copyFsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.copyFsQuad.render(e));const o=this.textureOld;this.textureOld=this.textureComp,this.textureComp=o}setSize(e,t){this.textureComp.setSize(e,t),this.textureOld.setSize(e,t)}}class pl extends xi{constructor(e,t,r,o,i){super(),this.strength=t!==void 0?t:1,this.radius=Ht(r),this.threshold=o,this.resolution=e!==void 0?new be(e.x,e.y):new be(256,256),i=i||{minFilter:1006,magFilter:1006,format:1023},this.clearColor=new Ge(0,0,0),this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let a=Math.round(this.resolution.x/2),s=Math.round(this.resolution.y/2);this.renderTargetBright=new nn(a,s,i),this.renderTargetBright.texture.name="BloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let d=0;d4?a=n.array[o*n.itemSize+i]:(i===0?a=n.getX(o):i===1?a=n.getY(o):i===2?a=n.getZ(o):i===3&&(a=n.getW(o)),n.normalized===!0&&(a=io(a,n.array))),r.min[i]=Math.min(r.min[i],a),r.max[i]=Math.max(r.max[i],a)}return r}function CD(n){return 4*Math.ceil(n/4)}function Bb(n,e=0){const t=CD(n.byteLength);if(t!==n.byteLength){const r=new Uint8Array(t);if(r.set(new Uint8Array(n)),e!==0)for(let o=n.byteLength;o"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}function wD(n,e){if(n.toBlob!==void 0)return new Promise((r=>n.toBlob(r,e)));let t;return e==="image/jpeg"?t=.92:e==="image/webp"&&(t=.8),n.convertToBlob({type:e,quality:t})}class Fve{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"Verge3D"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}async write(e,t,r={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},r),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),await Promise.all(this.pending);const o=this,i=o.buffers,a=o.json;r=o.options;const s=o.extensionsUsed,l=new Blob(i,{type:"application/octet-stream"}),c=Object.keys(s);if(c.length>0&&(a.extensionsUsed=c),a.buffers&&a.buffers.length>0&&(a.buffers[0].byteLength=l.size),r.binary===!0){const u=new FileReader;u.readAsArrayBuffer(l),u.onloadend=function(){const d=Bb(u.result),f=new DataView(new ArrayBuffer(8));f.setUint32(0,d.byteLength,!0),f.setUint32(4,5130562,!0);const h=Bb(Nve(JSON.stringify(a)),32),p=new DataView(new ArrayBuffer(8));p.setUint32(0,h.byteLength,!0),p.setUint32(4,1313821514,!0);const m=new ArrayBuffer(12),g=new DataView(m);g.setUint32(0,1179937895,!0),g.setUint32(4,2,!0);const _=12+p.byteLength+h.byteLength+f.byteLength+d.byteLength;g.setUint32(8,_,!0);const A=new Blob([m,p,h,f,d],{type:"application/octet-stream"}),y=new FileReader;y.readAsArrayBuffer(A),y.onloadend=function(){t(y.result)}}}else if(a.buffers&&a.buffers.length>0){const u=new FileReader;u.readAsDataURL(l),u.onloadend=function(){const d=u.result;a.buffers[0].uri=d,t(a)}}else t(a)}serializeUserData(e,t){if(Object.keys(e.userData).length===0)return;const r=this.options,o=this.extensionsUsed;try{const i=JSON.parse(JSON.stringify(e.userData));if(r.includeCustomExtensions&&i.gltfExtensions){t.extensions===void 0&&(t.extensions={});for(const a in i.gltfExtensions)t.extensions[a]=i.gltfExtensions[a],o[a]=!0;delete i.gltfExtensions}Object.keys(i).length>0&&(t.extras=i)}catch(i){console.warn("v3d.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+i.message)}}getUID(e,t=!1){if(this.uids.has(e)===!1){const r=new Map;r.set(!0,this.uid++),r.set(!1,this.uid++),this.uids.set(e,r)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;const t=new N;for(let r=0,o=e.count;r5e-4)return!1;return!0}createNormalizedNormalAttribute(e){const t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);const r=e.clone(),o=new N;for(let i=0,a=r.count;i4?p=e.array[f*e.itemSize+h]:(h===0?p=e.getX(f):h===1?p=e.getY(f):h===2?p=e.getZ(f):h===3&&(p=e.getW(f)),e.normalized===!0&&(p=io(p,e.array))),t===In.FLOAT?c.setFloat32(u,p,!0):t===In.UNSIGNED_INT?c.setUint32(u,p,!0):t===In.UNSIGNED_SHORT?c.setUint16(u,p,!0):t===In.UNSIGNED_BYTE&&c.setUint8(u,p),u+=s}const d={buffer:this.processBuffer(c.buffer),byteOffset:this.byteOffset,byteLength:l};return i!==void 0&&(d.target=i),i===In.ARRAY_BUFFER&&(d.byteStride=e.itemSize*s),this.byteOffset+=l,a.bufferViews.push(d),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){const t=this,r=t.json;return r.bufferViews||(r.bufferViews=[]),new Promise((function(o){const i=new FileReader;i.readAsArrayBuffer(e),i.onloadend=function(){const a=Bb(i.result),s={buffer:t.processBuffer(a),byteOffset:t.byteOffset,byteLength:a.byteLength};t.byteOffset+=a.byteLength,o(r.bufferViews.push(s)-1)}}))}processAccessor(e,t,r,o){const i=this.json;let a;if(e.array.constructor===Float32Array)a=In.FLOAT;else if(e.array.constructor===Uint32Array)a=In.UNSIGNED_INT;else if(e.array.constructor===Uint16Array)a=In.UNSIGNED_SHORT;else{if(e.array.constructor!==Uint8Array)throw new Error("v3d.GLTFExporter: Unsupported bufferAttribute component type.");a=In.UNSIGNED_BYTE}if(r===void 0&&(r=0),o===void 0&&(o=e.count),o===0)return null;const s=kve(e,r,o);let l;t!==void 0&&(l=e===t.index?In.ELEMENT_ARRAY_BUFFER:In.ARRAY_BUFFER);const c=this.processBufferView(e,a,r,o,l),u={bufferView:c.id,byteOffset:c.byteOffset,componentType:a,count:o,max:s.max,min:s.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[e.itemSize]};return e.normalized===!0&&(u.normalized=!0),i.accessors||(i.accessors=[]),i.accessors.push(u)-1}processImage(e,t,r,o="image/png"){if(e!==null){const i=this,a=i.cache,s=i.json,l=i.options,c=i.pending;a.images.has(e)||a.images.set(e,{});const u=a.images.get(e),d=o+":flipY/"+r.toString();if(u[d]!==void 0)return u[d];s.images||(s.images=[]);const f={mimeType:o},h=SD();h.width=Math.min(e.width,l.maxTextureSize),h.height=Math.min(e.height,l.maxTextureSize);const p=h.getContext("2d");if(r===!0&&(p.translate(0,h.height),p.scale(1,-1)),e.data!==void 0){t!==1023&&console.error("GLTFExporter: Only RGBAFormat is supported."),(e.width>l.maxTextureSize||e.height>l.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);const g=new Uint8ClampedArray(e.height*e.width*4);for(let _=0;_i.processBufferViewImage(g))).then((g=>{f.bufferView=g}))):h.toDataURL!==void 0?f.uri=h.toDataURL(o):c.push(wD(h,o).then((g=>new FileReader().readAsDataURL(g))).then((g=>{f.uri=g})));const m=s.images.push(f)-1;return u[d]=m,m}throw new Error("v3d.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(e){const t=this.json;t.samplers||(t.samplers=[]);const r={magFilter:ci[e.magFilter],minFilter:ci[e.minFilter],wrapS:ci[e.wrapS],wrapT:ci[e.wrapT]};return t.samplers.push(r)-1}processTexture(e){const t=this.options,r=this.cache,o=this.json;if(r.textures.has(e))return r.textures.get(e);o.textures||(o.textures=[]),e instanceof dl&&(e=n1(e,t.maxTextureSize));let i=e.userData.mimeType;i==="image/webp"&&(i="image/png");const a={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,i)};e.name&&(a.name=e.name),this._invokeAll((function(l){l.writeTexture&&l.writeTexture(e,a)}));const s=o.textures.push(a)-1;return r.textures.set(e,s),s}processMaterial(e){const t=this.cache,r=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: v3d.ShaderMaterial not supported."),null;r.materials||(r.materials=[]);const o={pbrMetallicRoughness:{}};e.isMeshNodeMaterial!==!0&&e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshNodeMaterial, MeshStandardMaterial, or MeshBasicMaterial for best results.");const i=e.color.toArray().concat([e.opacity]);kh(i,[1,1,1,1])||(o.pbrMetallicRoughness.baseColorFactor=i),e.isMeshNodeMaterial?(o.pbrMetallicRoughness.metallicFactor=e.getStandardProp("metalness"),o.pbrMetallicRoughness.roughnessFactor=e.getStandardProp("roughness")):e.isMeshStandardMaterial?(o.pbrMetallicRoughness.metallicFactor=e.metalness,o.pbrMetallicRoughness.roughnessFactor=e.roughness):(o.pbrMetallicRoughness.metallicFactor=.5,o.pbrMetallicRoughness.roughnessFactor=.5);const a=e.isMeshNodeMaterial?e.getStandardProp("metalnessMap"):e.metalnessMap,s=e.isMeshNodeMaterial?e.getStandardProp("roughnessMap"):e.roughnessMap;if(a||s){const h=this.buildMetalRoughTexture(a,s),p={index:this.processTexture(h)};o.pbrMetallicRoughness.metallicRoughnessTexture=p}const l=e.isMeshNodeMaterial?e.getStandardProp("map"):e.map;if(l){const h={index:this.processTexture(l)};o.pbrMetallicRoughness.baseColorTexture=h}let c=e.isMeshNodeMaterial?e.getStandardProp("emissive"):e.emissive;if(c){const h=e.isMeshNodeMaterial?e.getStandardProp("emissiveIntensity"):e.emissiveIntensity;c=c.clone().multiplyScalar(h);const p=Math.max(c.r,c.g,c.b);p>1&&(c.multiplyScalar(1/p),console.warn("v3d.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),p>0&&(o.emissiveFactor=c.toArray());const m=e.isMeshNodeMaterial?e.getStandardProp("emissiveMap"):e.emissiveMap;if(m){const g={index:this.processTexture(m)};o.emissiveTexture=g}}const u=e.isMeshNodeMaterial?e.getStandardProp("normalMap"):e.normalMap;if(u){const h={index:this.processTexture(u)},p=e.isMeshNodeMaterial?e.getStandardProp("normalScale"):e.normalScale;p&&p.x!==1&&(h.scale=p.x),o.normalTexture=h}const d=e.isMeshNodeMaterial?e.getStandardProp("aoMap"):e.aoMap;if(d){const h={index:this.processTexture(d),texCoord:1},p=e.isMeshNodeMaterial?e.getStandardProp("aoMapIntensity"):e.aoMapIntensity;p!==1&&(h.strength=p),o.occlusionTexture=h}e.transparent?o.alphaMode="BLEND":e.alphaTest>0&&(o.alphaMode="MASK",o.alphaCutoff=e.alphaTest),e.side===2&&(o.doubleSided=!0),e.name!==""&&(o.name=e.name),this.serializeUserData(e,o),this._invokeAll((function(h){h.writeMaterial&&h.writeMaterial(e,o)}));const f=r.materials.push(o)-1;return t.materials.set(e,f),f}processMesh(e){const t=this.cache,r=this.json,o=[e.geometry.uuid];if(Array.isArray(e.material))for(let y=0,b=e.material.length;y0){const y=[],b=[],E={};if(e.morphTargetDictionary!==void 0)for(const x in e.morphTargetDictionary)E[e.morphTargetDictionary[x]]=x;for(let x=0;x0&&(l.extras={},l.extras.targetNames=b)}const m=Array.isArray(e.material);if(m&&a.groups.length===0)return null;const g=m?e.material:[e.material],_=m?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let y=0,b=_.length;y0&&(E.targets=d),a.index!==null){let w=this.getUID(a.index);_[y].start===void 0&&_[y].count===void 0||(w+=":"+_[y].start+":"+_[y].count),t.attributes.has(w)?E.indices=t.attributes.get(w):(E.indices=this.processAccessor(a.index,a,_[y].start,_[y].count),t.attributes.set(w,E.indices)),E.indices===null&&delete E.indices}const x=this.processMaterial(g[_[y].materialIndex]);x!==null&&(E.material=x),u.push(E)}l.primitives=u,r.meshes||(r.meshes=[]),this._invokeAll((function(y){y.writeMesh&&y.writeMesh(e,l)}));const A=r.meshes.push(l)-1;return t.meshes.set(i,A),A}processCamera(e){const t=this.json;t.cameras||(t.cameras=[]);const r=e.isOrthographicCamera,o={type:r?"orthographic":"perspective"};return r?o.orthographic={xmag:2*e.right,ymag:2*e.top,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:o.perspective={aspectRatio:e.aspect,yfov:ih(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==""&&(o.name=e.type),t.cameras.push(o)-1}processAnimation(e,t){const r=this.json,o=this.nodeMap;r.animations||(r.animations=[]);const i=(e=r1.Utils.mergeMorphTargetTracks(e.clone(),t)).tracks,a=[],s=[];for(let l=0;l0){const l=[];for(let c=0,u=e.children.length;c0&&(a.children=l)}this._invokeAll((function(l){l.writeNode&&l.writeNode(e,a)}));const s=t.nodes.push(a)-1;return o.set(e,s),s}processScene(e){const t=this.json,r=this.options;t.scenes||(t.scenes=[],t.scene=0);const o={};e.name!==""&&(o.name=e.name),t.scenes.push(o);const i=[];for(let a=0,s=e.children.length;a0&&(o.nodes=i),this.serializeUserData(e,o)}processObjects(e){const t=new jr;t.name="AuxScene";for(let r=0;r0&&this.processObjects(r);for(let o=0;on.times[n.times.length-1]){if(Math.abs(n.times[n.times.length-1]-e)<.001)return n.times.length-1;o[o.length-1]=e,o.set(n.times,0),i.set(n.values,0),i.set(a.evaluate(e),n.values.length),s=o.length-1}else for(let l=0;le){o.set(n.times.slice(0,l+1),0),o[l+1]=e,o.set(n.times.slice(l+1),l+2),i.set(n.values.slice(0,(l+1)*r),0),i.set(a.evaluate(e),(l+1)*r),i.set(n.values.slice((l+1)*r),(l+2)*r),s=l+1;break}}return n.times=o,n.values=i,s},mergeMorphTargetTracks:function(n,e){const t=[],r={},o=n.tracks;for(let i=0;i65535?Uint32Array:Uint16Array;this.geometry.setIndex(new Xe(new p(f),1))}}class Ma extends xi{constructor(e,t,r,o){super(),this.renderScene=t,this.renderCamera=r,this.selectedObjects=o!==void 0?o:[],this.visibleEdgeColor=new pt(1,1,1,1),this.hiddenEdgeColor=new pt(.1,.04,.02,1),this.edgeGlow=0,this.usePatternTexture=!1,this.edgeThickness=1,this.edgeStrength=3,this.downSampleRatio=2,this.pulsePeriod=0,this.renderToScreen=!1,this.resolution=e!==void 0?new be(e.x,e.y):new be(256,256);const i=Math.round(this.resolution.x/this.downSampleRatio),a=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new nn(this.resolution.x,this.resolution.y),this.renderTargetMaskBuffer.texture.name="OutlinePass.mask",this.renderTargetMaskBuffer.texture.generateMipmaps=!1,this.renderTargetDepthBuffer=new nn(this.resolution.x,this.resolution.y),this.renderTargetDepthBuffer.texture.name="OutlinePass.depth",this.renderTargetDepthBuffer.texture.generateMipmaps=!1,this.renderTargetMaskDownSampleBuffer=new nn(i,a),this.renderTargetMaskDownSampleBuffer.texture.name="OutlinePass.depthDownSample",this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps=!1,this.renderTargetBlurBuffer1=new nn(i,a),this.renderTargetBlurBuffer1.texture.name="OutlinePass.blur1",this.renderTargetBlurBuffer1.texture.generateMipmaps=!1,this.renderTargetBlurBuffer2=new nn(Math.round(i/2),Math.round(a/2)),this.renderTargetBlurBuffer2.texture.name="OutlinePass.blur2",this.renderTargetBlurBuffer2.texture.generateMipmaps=!1,this.edgeDetectionMaterial=this.getEdgeDetectionMaterial(),this.renderTargetEdgeBuffer1=new nn(i,a),this.renderTargetEdgeBuffer1.texture.name="OutlinePass.edge1",this.renderTargetEdgeBuffer1.texture.generateMipmaps=!1,this.renderTargetEdgeBuffer2=new nn(Math.round(i/2),Math.round(a/2)),this.renderTargetEdgeBuffer2.texture.name="OutlinePass.edge2",this.renderTargetEdgeBuffer2.texture.generateMipmaps=!1,this.separableBlurMaterial1=this.getSeparableBlurMaterial(4),this.separableBlurMaterial1.uniforms.texSize.value=new be(i,a),this.separableBlurMaterial1.uniforms.kernelRadius.value=1,this.separableBlurMaterial2=this.getSeparableBlurMaterial(4),this.separableBlurMaterial2.uniforms.texSize.value=new be(Math.round(i/2),Math.round(a/2)),this.separableBlurMaterial2.uniforms.kernelRadius.value=4,this.overlayMaterial=this.getOverlayMaterial();const s=Tt.copy;this.copyUniforms=_o.clone(s.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new Dn({defines:Object.assign({},s.defines),uniforms:this.copyUniforms,vertexShader:s.vertexShader,fragmentShader:s.fragmentShader,blending:0,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this.oldClearColor=new Ge,this.oldClearAlpha=1,this.basic=new pr({toneMapped:!1}),this.fsQuad=new Xi(null),this.camera=new ya(-1,1,1,-1,0,1),this.tempPulseColor1=new pt,this.tempPulseColor2=new pt,this.textureMatrix=new Ue,this.visibilityState=new WeakMap,this._depthMaterial=new Gu({blending:0,depthPacking:3201,side:2}),this._maskMaterial=new CP({side:2})}dispose(){this.renderTargetMaskBuffer.dispose(),this.renderTargetDepthBuffer.dispose(),this.renderTargetMaskDownSampleBuffer.dispose(),this.renderTargetBlurBuffer1.dispose(),this.renderTargetBlurBuffer2.dispose(),this.renderTargetEdgeBuffer1.dispose(),this.renderTargetEdgeBuffer2.dispose()}setSize(e,t){this.renderTargetMaskBuffer.setSize(e,t);let r=Math.round(e/this.downSampleRatio),o=Math.round(t/this.downSampleRatio);this.renderTargetMaskDownSampleBuffer.setSize(r,o),this.renderTargetBlurBuffer1.setSize(r,o),this.renderTargetEdgeBuffer1.setSize(r,o),this.separableBlurMaterial1.uniforms.texSize.value=new be(r,o),r=Math.round(r/2),o=Math.round(o/2),this.renderTargetBlurBuffer2.setSize(r,o),this.renderTargetEdgeBuffer2.setSize(r,o),this.separableBlurMaterial2.uniforms.texSize.value=new be(r,o)}saveVisibilityState(){const e=this;e.renderScene.traverse((function(t){(t.isMesh||t.isSprite||t.isPoints||t.isLine)&&e.visibilityState.set(t,t.visible)}))}restoreVisibilityState(){const e=this;e.renderScene.traverse((function(t){(t.isMesh||t.isSprite||t.isPoints||t.isLine)&&(t.visible=e.visibilityState.get(t))}))}changeVisibilityOfSelectedObjects(e){const t=this;function r(o){(o.isMesh||o.isSprite||o.isPoints||o.isLine)&&t.visibilityState.get(o)&&(o.visible=e)}for(let o=0;o0){const l=.625+.75*Math.cos(.01*performance.now()/this.pulsePeriod)/2;this.tempPulseColor1.multiplyScalar(l),this.tempPulseColor2.multiplyScalar(l)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value=new be(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.tempPulseColor2,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=Ma.BlurDirectionX,this.separableBlurMaterial1.uniforms.kernelRadius.value=this.edgeThickness,e.setRenderTarget(this.renderTargetBlurBuffer1),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=Ma.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms.direction.value=Ma.BlurDirectionX,e.setRenderTarget(this.renderTargetBlurBuffer2),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms.direction.value=Ma.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer2),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms.edgeTexture1.value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms.edgeTexture2.value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms.patternTexture.value=this.patternTexture,this.overlayMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.overlayMaterial.uniforms.edgeGlow.value=this.edgeGlow,this.overlayMaterial.uniforms.usePatternTexture.value=this.usePatternTexture,i&&e.context.enable(e.context.STENCIL_TEST),this.renderToScreen?e.setRenderTarget(null):e.setRenderTarget(r),this.fsQuad.render(e),e.setClearColor(this.oldClearColor,this.oldClearAlpha),e.autoClear=a,this.renderScene.traverse((function(l){l.isAnnotationControl&&(l.doUpdate=l._doUpdateSave)}))}getEdgeDetectionMaterial(){return new Dn({type:"OutlineEdgeDetection",defines:{HIDDEN_EDGE_ALPHA:1},uniforms:{maskTexture:{value:null},texSize:{value:new be(.5,.5)},visibleEdgeColor:{value:new pt(1,1,1,1)},hiddenEdgeColor:{value:new pt(1,1,1,1)}},vertexShader:Qe.pp_plane_vert,fragmentShader:Qe.pp_outline_edge_frag})}getSeparableBlurMaterial(e){return new Dn({type:"OutlineSeparableBlur",defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new be(.5,.5)},direction:{value:new be(.5,.5)},kernelRadius:{value:1}},vertexShader:Qe.pp_plane_vert,fragmentShader:Qe.pp_outline_blur_frag})}getOverlayMaterial(){return new Dn({type:"OutlineOverlay",uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:Qe.pp_plane_vert,fragmentShader:Qe.pp_outline_overlay_frag,blending:5,blendEquation:100,blendEquationAlpha:100,blendSrc:204,blendDst:205,blendSrcAlpha:201,blendDstAlpha:201,depthTest:!1,depthWrite:!1,transparent:!0})}setCamera(e){this.renderCamera=e}}Ma.BlurDirectionX=new be(1,0),Ma.BlurDirectionY=new be(0,1);class o1 extends xi{constructor(e,t,r,o,i){super(),this.scene=e,this.camera=t,this.overrideMaterial=r,this.clearColor=o,this.clearAlpha=i!==void 0?i:0,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new Ge}render(e,t,r){const o=e.autoClear;let i,a;e.autoClear=!1,this.overrideMaterial!==void 0&&(a=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor&&(e.getClearColor(this._oldClearColor),i=e.getClearAlpha(),e.setClearColor(this.clearColor,this.clearAlpha)),this.clearDepth&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:r),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor&&e.setClearColor(this._oldClearColor,i),this.overrideMaterial!==void 0&&(this.scene.overrideMaterial=a),e.autoClear=o}setCamera(e){this.camera=e}}class i1{constructor(e,t,r,o,i){this._domElement=e,this._keyCodes=Array.isArray(t)?t:[t],this._callback=r,this._repeats=o,this._period=i,this._timer=0,this._counter=0,this._keydownCb=(function(a){this._keyCodes.includes(a.code)&&(this._timer||(this._timer=window.setTimeout((function(){this._counter=0,this._timer=null}).bind(this),1e3*i)),++this._counter>=o&&(this._timer&&(window.clearTimeout(this._timer),this._timer=null),this._counter=0,this._callback()))}).bind(this),this._domElement.addEventListener("keydown",this._keydownCb,!1)}dispose(){this._domElement.removeEventListener("keydown",this._keydownCb,!1),this._timer&&window.clearTimeout(this._timer)}}class Fh extends xi{constructor(e,t,r,o){super(),this.scene=e,this.camera=t,this.sampleLevel=4,this.unbiased=!0,this.clearColor=r!==void 0?r:0,this.clearAlpha=o!==void 0?o:0,this._oldClearColor=new Ge;const i=Tt.copy;this.copyUniformsAccum=_o.clone(i.uniforms),this.copyMaterialAccum=new Dn({type:"SSAACopyAccum",defines:Object.assign({},i.defines),uniforms:this.copyUniformsAccum,vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,premultipliedAlpha:!0,transparent:!0,blending:2,depthTest:!1,depthWrite:!1}),this.fsQuadAccum=new Xi(this.copyMaterialAccum),this.copyUniformsFinal=_o.clone(i.uniforms),this.copyMaterialFinal=new Dn({type:"SSAACopyFinal",defines:Object.assign({},i.defines),uniforms:this.copyUniformsFinal,vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,premultipliedAlpha:!1,transparent:!1,blending:0,depthTest:!1,depthWrite:!1}),this.fsQuadFinal=new Xi(this.copyMaterialFinal),this.iterative=!1,this.iterativeFrame=0}_getJitterOffsets(){return Hve[Math.max(0,Math.min(this.sampleLevel,5))]}_isLastIterativeFrame(){const e=this._getJitterOffsets();return this.iterativeFrame==e.length-1}dispose(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null,this.accumRenderTarget.dispose(),this.accumRenderTarget=null)}setSize(e,t){this.sampleRenderTarget&&(this.sampleRenderTarget.setSize(e,t),this.accumRenderTarget.setSize(e,t))}render(e,t,r){this.sampleRenderTarget||(this.sampleRenderTarget=r.clone(),this.sampleRenderTarget.texture.name="SSAARenderPass.sample",this.accumRenderTarget=r.clone(),this.accumRenderTarget.texture.name="SSAARenderPass.accum");const o=this._getJitterOffsets(),i=e.autoClear;e.autoClear=!1,e.getClearColor(this._oldClearColor);const a=e.getClearAlpha(),s=1/o.length;this.copyUniformsAccum.tDiffuse.value=this.sampleRenderTarget.texture;const l=r.width,c=r.height,u=this.camera.view?this.camera.view.offsetX:0,d=this.camera.view?this.camera.view.offsetY:0;let f,h;this.iterative?(f=this.iterativeFrame,h=performance.now()):f=0;const p=o.length;for(let m=f;m4)break}this.iterative&&(this._isLastIterativeFrame()?(this.copyUniformsFinal.tDiffuse.value=this.accumRenderTarget.texture,e.setRenderTarget(this.renderToScreen?null:t),this.fsQuadFinal.render(e),this.iterativeFrame=0):this.iterativeFrame++),this.camera.setViewOffset&&this.camera.setViewOffset(l,c,u,d,l,c),e.autoClear=i,e.setClearColor(this._oldClearColor,a)}isLastIterativeFrame(){console.error("isLastIterativeFrame() deprectated, use pass event listener instead")}setCamera(e){this.camera=e}}const Hve=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];class RD extends xi{constructor(e,t,r){super(),this.enabled=!0,this.needsSwap=!1,r=r||{},this.objects=r.objects||[],this.steps=_e(r.steps)||10,this.stride=_e(r.stride)||30,this.binarySearchSteps=_e(r.binarySearchSteps)||4,this.renderTargetScale=_e(r.renderTargetScale)||.5,this.thickness=_e(r.thickness)||.01,this.maxDistance=_e(r.maxDistance)||100,this.jitter=_e(r.jitter)||1,this.useRefract=_e(r.useRefract)||!1,this.renderAfter=_e(r.renderAfter)||[],this.simpleRefraction=_e(r.simpleRefraction)||!1,this.scene=e,this.camera=t,this._prevClearColor=new Ge,this._depthBuffer=new nn(256,256,{minFilter:1003,magFilter:1003,format:1023,type:1016}),this._depthBuffer.texture.name="SSRPass.Depth",this._depthBuffer.texture.generateMipmaps=!1,this._depthMaterial=new Gu,this._depthMaterial.depthPacking=3202,this._backfaceDepthBuffer=this._depthBuffer.clone(),this._backfaceDepthBuffer.texture.name="SSRPass.Depth",this._backfaceDepthMaterial=new Gu,this._backfaceDepthMaterial.depthPacking=3202,this._backfaceDepthMaterial.side=1,this.basic=new pr,this.fsQuad=new Xi(null)}_setLayer(e,t){e.layers.set(t),e.isMesh&&e.isMaterialGeneratedMesh&&e.parent.layers.enable(t)}dispose(){this._depthBuffer.dispose(),this._backfaceDepthBuffer.dispose();for(let e=0;e{f.isLight&&(f.userData.oldLayersMask=f.layers.mask,f.layers.enable(this.useRefract?5:3),this.renderAfter.length&&f.layers.enable(this.useRefract?6:4))}));for(let f=0;f{f.isLight&&"oldLayersMask"in f.userData&&(f.layers.mask=f.userData.oldLayersMask,delete f.userData.oldLayersMask)})),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=r.texture,e.setRenderTarget(null),e.clear(),this.fsQuad.render(e)),e.setClearColor(this._prevClearColor,a),e.autoClear=s}}class kb extends bs{constructor(){super(Tt.tonemap),this.material.type="ToneMap"}}var LD=function(n){return URL.createObjectURL(new Blob([n],{type:"text/javascript"}))};try{URL.revokeObjectURL(LD(""))}catch{LD=function(e){return"data:application/javascript;charset=UTF-8,"+encodeURI(e)}}var Uo=Uint8Array,zo=Uint16Array,od=Uint32Array,Fb=new Uo([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Vb=new Uo([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),PD=new Uo([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),DD=function(n,e){for(var t=new zo(31),r=0;r<31;++r)t[r]=e+=1<>>1|(21845&zn)<<1;gc=(61680&(gc=(52428&gc)>>>2|(13107&gc)<<2))>>>4|(3855&gc)<<4,OD[zn]=((65280&gc)>>>8|(255&gc)<<8)>>>1}var Vh=function(n,e,t){for(var r=n.length,o=0,i=new zo(e);o>>15-n[o]);return a},_c=new Uo(288);for(zn=0;zn<144;++zn)_c[zn]=8;for(zn=144;zn<256;++zn)_c[zn]=9;for(zn=256;zn<280;++zn)_c[zn]=7;for(zn=280;zn<288;++zn)_c[zn]=8;var a1=new Uo(32);for(zn=0;zn<32;++zn)a1[zn]=5;var Qve=Vh(_c,9),$ve=Vh(a1,5),kD=function(n){return(n/8|0)+(7&n&&1)},FD=function(n,e,t){(t==null||t>n.length)&&(t=n.length);var r=new(n instanceof zo?zo:n instanceof od?od:Uo)(t-e);return r.set(n.subarray(e,t)),r},xs=function(n,e,t){t<<=7&e;var r=e/8|0;n[r]|=t,n[r+1]|=t>>>8},Uh=function(n,e,t){t<<=7&e;var r=e/8|0;n[r]|=t,n[r+1]|=t>>>8,n[r+2]|=t>>>16},zb=function(n,e){for(var t=[],r=0;rf&&(f=i[r].s);var h=new zo(f+1),p=Gb(t[u-1],h,0);if(p>e){r=0;var m=0,g=p-e,_=1<e))break;m+=_-(1<>>=g;m>0;){var y=i[r].s;h[y]=0&&m;--r){var b=i[r].s;h[b]==e&&(--h[b],++m)}p=e}return[new Uo(h),p]},Gb=function(n,e,t){return n.s==-1?Math.max(Gb(n.l,e,t+1),Gb(n.r,e,t+1)):e[n.s]=t},VD=function(n){for(var e=n.length;e&&!n[--e];);for(var t=new zo(++e),r=0,o=n[0],i=1,a=function(l){t[r++]=l},s=1;s<=e;++s)if(n[s]==o&&s!=e)++i;else{if(!o&&i>2){for(;i>138;i-=138)a(32754);i>2&&(a(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(a(o),--i;i>6;i-=6)a(8304);i>2&&(a(i-3<<5|8208),i=0)}for(;i--;)a(o);i=1,o=n[s]}return[t.subarray(0,r),e]},zh=function(n,e){for(var t=0,r=0;r>>8,n[o+2]=255^n[o],n[o+3]=255^n[o+1];for(var i=0;i4&&!P[PD[Q-1]];--Q);var re,G,se,ee,ie=c+5<<3,H=zh(o,_c)+zh(i,a1)+a,T=zh(o,f)+zh(i,m)+a+14+3*Q+zh(w,P)+(2*w[16]+3*w[17]+7*w[18]);if(ie<=H&&ie<=T)return Hb(e,u,n.subarray(l,l+c));if(xs(e,u,1+(T15&&(xs(e,u,ae[L]>>>5&127),u+=ae[L]>>>12)}}}else re=Qve,G=_c,se=$ve,ee=a1;for(L=0;L255){ne=r[L]>>>18&31,Uh(e,u,re[ne+257]),u+=G[ne+257],ne>7&&(xs(e,u,r[L]>>>23&31),u+=Fb[ne]);var oe=31&r[L];Uh(e,u,se[oe]),u+=ee[oe],oe>3&&(Uh(e,u,r[L]>>>5&8191),u+=Vb[oe])}else Uh(e,u,re[r[L]]),u+=G[r[L]];return Uh(e,u,re[256]),u+G[256]},Yve=new od([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),zD=new Uo(0),Xve=function(n,e,t,r,o,i){var a=n.length,s=new Uo(r+a+5*(1+Math.ceil(a/7e3))+o),l=s.subarray(r,s.length-o),c=0;if(!e||a<8)for(var u=0;u<=a;u+=65535){var d=u+65535;d>>13,p=8191&f,m=(1<7e3||P>24576)&&ee>423){c=UD(n,l,0,E,x,w,C,P,Q,u-Q,c),P=L=C=0,Q=u;for(var ie=0;ie<286;++ie)x[ie]=0;for(ie=0;ie<30;++ie)w[ie]=0}var H=2,T=0,R=p,O=G-se&32767;if(ee>2&&re==b(u-O))for(var W=Math.min(h,ee)-1,ae=Math.min(32767,u),ne=Math.min(258,ee);O<=ae&&--R&&G!=se;){if(n[u+H]==n[u+H-O]){for(var oe=0;oeH){if(H=oe,T=O,oe>W)break;var F=Math.min(O,oe-2),k=0;for(ie=0;iek&&(k=j,se=q)}}}O+=(G=se)-(se=g[G])+32768&32767}if(T){E[P++]=268435456|Ub[H]<<18|ND[T];var U=31&Ub[H],z=31&ND[T];C+=Fb[U]+Vb[z],++x[257+U],++w[z],D=u+H,++L}else E[P++]=n[u],++x[n[u]]}}c=UD(n,l,i,E,x,w,C,P,Q,u-Q,c)}return FD(s,0,r+kD(c)+o)},qve=(function(){for(var n=new od(256),e=0;e<256;++e){for(var t=e,r=9;--r;)t=(1&t&&3988292384)^t>>>1;n[e]=t}return n})(),Kve=function(){var n=-1;return{p:function(e){for(var t=n,r=0;r>>8;n=t},d:function(){return~n}}},Zve=function(n,e,t,r,o){return Xve(n,e.level==null?6:e.level,e.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(n.length)))):12+e.mem,t,r,!0)},GD=function(n,e){var t={};for(var r in n)t[r]=n[r];for(var r in e)t[r]=e[r];return t},Qr=function(n,e,t){for(;t;++e)n[e]=t,t>>>=8};function Jve(n,e){return Zve(n,e||{},0,0)}var HD=function(n,e,t,r){for(var o in n){var i=n[o],a=e+o;i instanceof Uo?t[a]=[i,r]:Array.isArray(i)?t[a]=[i[0],GD(r,i[1])]:HD(i,a+"/",t,r)}},WD=typeof TextEncoder<"u"&&new TextEncoder,eAe=typeof TextDecoder<"u"&&new TextDecoder,tAe=0;try{eAe.decode(zD,{stream:!0}),tAe=1}catch{}function s1(n,e){if(WD)return WD.encode(n);for(var t=n.length,r=new Uo(n.length+(n.length>>1)),o=0,i=function(c){r[o++]=c},a=0;ar.length){var s=new Uo(o+8+(t-a<<1));s.set(r),r=s}var l=n.charCodeAt(a);l<128||e?i(l):l<2048?(i(192|l>>6),i(128|63&l)):l>55295&&l<57344?(i(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++a))>>18),i(128|l>>12&63),i(128|l>>6&63),i(128|63&l)):(i(224|l>>12),i(128|l>>6&63),i(128|63&l))}return FD(r,0,o)}var Wb=function(n){var e=0;if(n)for(var t in n){var r=n[t].length;if(r>65535)throw"extra field too long";e+=r+4}return e},jD=function(n,e,t,r,o,i,a,s){var l=r.length,c=t.extra,u=s&&s.length,d=Wb(c);Qr(n,e,a!=null?33639248:67324752),e+=4,a!=null&&(n[e++]=20,n[e++]=t.os),n[e]=20,e+=2,n[e++]=t.flag<<1|(i==null&&8),n[e++]=o&&8,n[e++]=255&t.compression,n[e++]=t.compression>>8;var f=new Date(t.mtime==null?Date.now():t.mtime),h=f.getFullYear()-1980;if(h<0||h>119)throw"date not in range 1980-2099";if(Qr(n,e,h<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>>1),e+=4,i!=null&&(Qr(n,e,t.crc),Qr(n,e+4,i),Qr(n,e+8,t.size)),Qr(n,e+12,l),Qr(n,e+14,d),e+=16,a!=null&&(Qr(n,e,u),Qr(n,e+6,t.attrs),Qr(n,e+10,a),e+=14),n.set(r,e),e+=l,d)for(var p in c){var m=c[p],g=m.length;Qr(n,e,+p),Qr(n,e+2,g),n.set(m,e+4),e+=4+g}return u&&(n.set(s,e),e+=u),e},nAe=function(n,e,t,r,o){Qr(n,e,101010256),Qr(n,e+8,t),Qr(n,e+10,t),Qr(n,e+12,r),Qr(n,e+16,o)};function rAe(n,e){e||(e={});var t={},r=[];HD(n,"",t,e);var o=0,i=0;for(var a in t){var s=t[a],l=s[0],c=s[1],u=c.level==0?0:8,d=(w=s1(a)).length,f=c.comment,h=f&&s1(f),p=h&&h.length,m=Wb(c.extra);if(d>65535)throw"filename too long";var g=u?Jve(l,c):l,_=g.length,A=Kve();A.p(l),r.push(GD(c,{size:l.length,crc:A.d(),c:g,f:w,m:h,u:d!=a.length||h&&f.length!=p,o,compression:u})),o+=30+d+m+_,i+=76+2*(d+m)+(p||0)+_}for(var y=new Uo(i+22),b=o,E=i-o,x=0;x{if(c.isMesh){const u=c.geometry,d=c.material;if(d.isMeshNodeMaterial||d.isMeshStandardMaterial){const f="geometries/Geometry_"+u.id+".usda";if(!(f in r)){const h=cAe(u);r[f]=sAe(h)}d.uuid in a||(a[d.uuid]=d),i+=lAe(c,u,d)}else console.warn("v3d.USDZExporter: Unsupported material type (USDZ only supports MeshNodeMaterial and MeshStandardMaterial)",c)}else c.isCamera&&(i+=vAe(c))})),i+=aAe(),i+=mAe(a,s,t.quickLookCompatible),r[o]=s1(i),i=null;for(const c in s){let u=s[c];u.isCompressedTexture===!0&&(u=n1(u));const d=oAe(u.image,u.flipY,t.maxTextureSize),f=await new Promise((h=>d.toBlob(h,"image/png",1)));r[`textures/Texture_${c}.png`]=new Uint8Array(await f.arrayBuffer())}let l=0;for(const c in r){const u=r[c];l+=34+c.length;const d=63&l;if(d!==4){const f=new Uint8Array(64-d);r[c]=[u,{extra:{12345:f}}]}l=u.length}return rAe(r,{level:0})}}function oAe(n,e,t){if(typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&n instanceof ImageBitmap){const r=t/Math.max(n.width,n.height),o=document.createElement("canvas");o.width=n.width*Math.min(1,r),o.height=n.height*Math.min(1,r);const i=o.getContext("2d");return e===!0&&(i.translate(0,o.height),i.scale(1,-1)),i.drawImage(n,0,0,o.width,o.height),o}throw new Error("v3d.USDZExporter: No valid image data found. Unable to process texture.")}const lo=7;function $D(){return`#usda 1.0 +( + customLayerData = { + string creator = "Verge3D" + } + defaultPrim = "Root" + metersPerUnit = 1 + upAxis = "Y" +) + +`}function iAe(n){return`def Xform "Root" +{ + def Scope "Scenes" ( + kind = "sceneLibrary" + ) + { + def Xform "Scene" ( + customData = { + bool preliminary_collidesWithEnvironment = 0 + string sceneName = "Scene" + } + sceneName = "Scene" + ) + { + token preliminary:anchoring:type = "${n.ar.anchoring.type}" + token preliminary:planeAnchoring:alignment = "${n.ar.planeAnchoring.alignment}" + +`}function aAe(){return` + } + } +} + +`}function sAe(n){let e=$D();return e+=n,s1(e)}function lAe(n,e,t){const r="Object_"+n.id,o=YD(n.matrixWorld);return n.matrixWorld.determinant()<0&&console.warn("v3d.USDZExporter: USDZ does not support negative scales",n),`def Xform "${r}" ( + prepend references = @./geometries/Geometry_${e.id}.usda@ + prepend apiSchemas = ["MaterialBindingAPI"] +) +{ + matrix4d xformOp:transform = ${o} + uniform token[] xformOpOrder = ["xformOp:transform"] + + rel material:binding = +} + +`}function YD(n){const e=n.elements;return`(${l1(e,0)}, ${l1(e,4)}, ${l1(e,8)}, ${l1(e,12)})`}function l1(n,e){return`(${n[e+0]}, ${n[e+1]}, ${n[e+2]}, ${n[e+3]})`}function cAe(n){return` +def "Geometry" +{ +${uAe(n)} +} +`}function uAe(n){const e=n.attributes,t=e.position.count;return` + def Mesh "Geometry" + { + int[] faceVertexCounts = [${dAe(n)}] + int[] faceVertexIndices = [${fAe(n)}] + normal3f[] normals = [${jb(e.normal,t)}] ( + interpolation = "vertex" + ) + point3f[] points = [${jb(e.position,t)}] +${pAe(e)} + uniform token subdivisionScheme = "none" + } +`}function dAe(n){const e=n.index!==null?n.index.count:n.attributes.position.count;return Array(e/3).fill(3).join(", ")}function fAe(n){const e=n.index,t=[];if(e!==null)for(let r=0;r0?r:"",i=n["uv"+o];i!==void 0&&(e+=` + texCoord2f[] primvars:st${o} = [${hAe(i)}] ( + interpolation = "vertex" + )`)}const t=n.color;return t!==void 0&&(e+=` + color3f[] primvars:displayColor = [${jb(t,t.count)}] ( + interpolation = "vertex" + )`),e}function mAe(n,e,t=!1){const r=[];for(const o in n){const i=n[o];r.push(gAe(i,e,t))}return`def "Materials" +{ +${r.join("")} +} + +`}function gAe(n,e,t=!1){const r=" ",o=[],i=[];function a(b,E,x){const w=b.source.id+(b.flipY?"_flipped":"");e[w]=b;const L={1e3:"repeat",1001:"clamp",1002:"mirror"},C=b.repeat.clone(),P=b.offset.clone(),D=b.rotation,Q=Math.sin(D),re=Math.cos(D);return P.y=1-P.y-C.y,t?(P.x=P.x/C.x,P.y=P.y/C.y,P.x+=Q/C.x,P.y+=re-1):(P.x+=Q*C.x,P.y+=(1-re)*C.y),` + def Shader "PrimvarReader_${E}" + { + uniform token info:id = "UsdPrimvarReader_float2" + float2 inputs:fallback = (0.0, 0.0) + token inputs:varname = "st" + float2 outputs:result + } + + def Shader "Transform2d_${E}" + { + uniform token info:id = "UsdTransform2d" + token inputs:in.connect = + float inputs:rotation = ${(D*(180/Math.PI)).toFixed(lo)} + float2 inputs:scale = ${qD(C)} + float2 inputs:translation = ${qD(P)} + float2 outputs:result + } + + def Shader "Texture_${b.id}_${E}" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @textures/Texture_${w}.png@ + float2 inputs:st.connect = + ${x!==void 0?"float4 inputs:scale = "+_Ae(x):""} + token inputs:sourceColorSpace = "${b.encoding===3e3?"raw":"sRGB"}" + token inputs:wrapS = "${L[b.wrapS]}" + token inputs:wrapT = "${L[b.wrapT]}" + float outputs:r + float outputs:g + float outputs:b + float3 outputs:rgb + ${n.transparent||n.alphaTest>0?"float outputs:a":""} + }`}n.side===2&&console.warn("v3d.USDZExporter: USDZ does not support double sided materials",n);const s=n.isMeshNodeMaterial?n.getStandardProp("map"):n.map,l=n.isMeshNodeMaterial?n.getStandardProp("color"):n.color;s!==null?(o.push(`${r}color3f inputs:diffuseColor.connect = `),n.transparent?o.push(`${r}float inputs:opacity.connect = `):n.alphaTest>0&&(o.push(`${r}float inputs:opacity.connect = `),o.push(`${r}float inputs:opacityThreshold = ${n.alphaTest}`)),i.push(a(s,"diffuse",l))):o.push(`${r}color3f inputs:diffuseColor = ${XD(l)}`);const c=n.isMeshNodeMaterial?n.getStandardProp("emissiveMap"):n.emissiveMap,u=n.isMeshNodeMaterial?n.getStandardProp("emissiveIntensity"):n.emissiveIntensity;let d=n.isMeshNodeMaterial?n.getStandardProp("emissive"):n.emissive;d=d.clone().multiplyScalar(u),c!==null?(o.push(`${r}color3f inputs:emissiveColor.connect = `),i.push(a(c,"emissive"))):d.getHex()>0&&o.push(`${r}color3f inputs:emissiveColor = ${XD(d)}`);const f=n.isMeshNodeMaterial?n.getStandardProp("normalMap"):n.normalMap;f!==null&&(o.push(`${r}normal3f inputs:normal.connect = `),i.push(a(f,"normal")));const h=n.isMeshNodeMaterial?n.getStandardProp("aoMap"):n.aoMap;h!==null&&(o.push(`${r}float inputs:occlusion.connect = `),i.push(a(h,"occlusion")));const p=n.isMeshNodeMaterial?n.getStandardProp("roughnessMap"):n.roughnessMap,m=n.isMeshNodeMaterial?n.getStandardProp("roughness"):n.roughness;p!==null&&m===1?(o.push(`${r}float inputs:roughness.connect = `),i.push(a(p,"roughness"))):o.push(`${r}float inputs:roughness = ${m}`);const g=n.isMeshNodeMaterial?n.getStandardProp("metalnessMap"):n.metalnessMap,_=n.isMeshNodeMaterial?n.getStandardProp("metalness"):n.metalness;g!==null&&_===1?(o.push(`${r}float inputs:metallic.connect = `),i.push(a(g,"metallic"))):o.push(`${r}float inputs:metallic = ${_}`);const A=n.isMeshNodeMaterial?n.getStandardProp("alphaMap"):n.alphaMap,y=n.isMeshNodeMaterial?n.getStandardProp("opacity"):n.opacity;return A!==null?(o.push(`${r}float inputs:opacity.connect = `),o.push(`${r}float inputs:opacityThreshold = 0.0001`),i.push(a(A,"opacity"))):o.push(`${r}float inputs:opacity = ${y}`),n.isMeshPhysicalMaterial&&(o.push(`${r}float inputs:clearcoat = ${n.clearcoat}`),o.push(`${r}float inputs:clearcoatRoughness = ${n.clearcoatRoughness}`),o.push(`${r}float inputs:ior = ${n.ior}`)),` + def Material "Material_${n.id}" + { + def Shader "PreviewSurface" + { + uniform token info:id = "UsdPreviewSurface" +${o.join(` +`)} + int inputs:useSpecularWorkflow = 0 + token outputs:surface + } + + token outputs:surface.connect = + +${i.join(` +`)} + + } +`}function XD(n){return`(${n.r}, ${n.g}, ${n.b})`}function _Ae(n){return`(${n.r}, ${n.g}, ${n.b}, 1.0)`}function qD(n){return`(${n.x}, ${n.y})`}function vAe(n){const e=n.name?n.name:"Camera_"+n.id,t=YD(n.matrixWorld);return n.matrixWorld.determinant()<0&&console.warn("v3d.USDZExporter: USDZ does not support negative scales",n),n.isOrthographicCamera?`def Camera "${e}" + { + matrix4d xformOp:transform = ${t} + uniform token[] xformOpOrder = ["xformOp:transform"] + + float2 clippingRange = (${n.near.toPrecision(lo)}, ${n.far.toPrecision(lo)}) + float horizontalAperture = ${(10*(Math.abs(n.left)+Math.abs(n.right))).toPrecision(lo)} + float verticalAperture = ${(10*(Math.abs(n.top)+Math.abs(n.bottom))).toPrecision(lo)} + token projection = "orthographic" + } + + `:`def Camera "${e}" + { + matrix4d xformOp:transform = ${t} + uniform token[] xformOpOrder = ["xformOp:transform"] + + float2 clippingRange = (${n.near.toPrecision(lo)}, ${n.far.toPrecision(lo)}) + float focalLength = ${n.getFocalLength().toPrecision(lo)} + float focusDistance = ${n.focus.toPrecision(lo)} + float horizontalAperture = ${n.getFilmWidth().toPrecision(lo)} + token projection = "perspective" + float verticalAperture = ${n.getFilmHeight().toPrecision(lo)} + } + + `}class Qb extends ti{constructor(e,t){super(),this.object=e,this.domElement=t!==void 0?t:document,this.enabled=!0,this.allowMouseOverIframes=!1,this.iframePointerEventsStatus=new WeakMap}lockIframeEvents(){const e=document.getElementsByTagName("iframe");for(let t=0;tMath.PI&&(l=s+Math.sign(s-l)*(2*Math.PI-c)),this.sphericalFrom.theta=s,this.sphericalTo.theta=l}return this}start(e){this.active=!0,this.duration=e,this.clock.start()}update(e=function(t,r,o){}){let t=this.clock.getElapsedTime()/this.duration;if(t=t2(t,0,1),Yb.lerpVectors(this.targetFrom,this.targetTo,t),this.movementType===0)u1.lerpVectors(this.posFrom,this.posTo,t);else if(this.movementType===1){const r=Aa(this.sphericalFrom.radius,this.sphericalTo.radius,t),o=Aa(this.sphericalFrom.phi,this.sphericalTo.phi,t),i=Aa(this.sphericalFrom.theta,this.sphericalTo.theta,t);u1.setFromSphericalCoords(r,o,i),u1.add(Yb)}e(t,u1,Yb),t>=1&&(this.active=!1,this.finishCb())}}const KD=new N;class Xb{constructor(){this.posFrom=new N,this.targetFrom=new N,this.posTo=new N,this.targetTo=new N,this.zoomFrom=0,this.zoomTo=0,this.finishCb=function(){},this.active=!1,this.duration=0,this.clock=new Ca}setup({posFrom:e=new N,targetFrom:t=new N,posTo:r=new N,targetTo:o=new N,zoomFrom:i=0,zoomTo:a=0,finishCb:s=function(){}}){return this.posFrom.copy(e),this.targetFrom.copy(t),this.posTo.copy(r),this.targetTo.copy(o),this.zoomFrom=i,this.zoomTo=a,this.finishCb=s,this}start(e){this.active=!0,this.duration=e,this.clock.start()}update(e=function(t,r,o){}){let t=this.clock.getElapsedTime()/this.duration;t=t2(t,0,1),KD.lerpVectors(this.targetFrom,this.targetTo,t);let r=Aa(this.zoomFrom,this.zoomTo,t);e(t,KD,r),t>=1&&(this.active=!1,this.finishCb())}}const jt={minDistance:0,maxDistance:1/0,minZoom:0,maxZoom:1/0,minPolarAngle:0,maxPolarAngle:Math.PI,minAzimuthAngle:-1/0,maxAzimuthAngle:1/0,autoRotate:!1,autoRotateSpeed:2,enablePan:!0,panInertia:.05,panSpeed:1.3,panSpeedKey:15,screenSpacePanning:!0,enableRotate:!0,rotateInertia:.05,rotateInertiaTouch:.05,rotateSpeed:1.2,rotateSpeedTouch:.7,enableZoom:!0,enableCtrlZoom:!1,zoomInertia:.05,zoomInertiaTouch:.05,zoomSpeed:5,zoomSpeedTouch:1,enableDamping:!0,enableTurnover:!1,enableKeys:!0},AAe=new N(0,1,0),yAe=new It().setFromAxisAngle(new N(0,0,1),Math.PI),cr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY_PAN:4},ZD=1e-6,ui=new N,JD=new N,bAe=new It,xAe=new It,e6={type:"change"},qb={type:"start"},Kb={type:"end"};class Zb extends Qb{constructor(e,t){super(e,t),this.domElement.style.touchAction="none",this.targetObj=new kt,this.minDistance=jt.minDistance,this.maxDistance=jt.maxDistance,this.minZoom=jt.minZoom,this.maxZoom=jt.maxZoom,this.minPolarAngle=jt.minPolarAngle,this.maxPolarAngle=jt.maxPolarAngle,this.minAzimuthAngle=jt.minAzimuthAngle,this.maxAzimuthAngle=jt.maxAzimuthAngle,this.enableDamping=jt.enableDamping,this.enableZoom=jt.enableZoom,this.enableCtrlZoom=jt.enableCtrlZoom,this.zoomSpeed=jt.zoomSpeed,this.zoomSpeedTouch=jt.zoomSpeedTouch,this.zoomInertia=jt.zoomInertia,this.zoomInertiaTouch=jt.zoomInertiaTouch,this.enableRotate=jt.enableRotate,this.rotateSpeed=jt.rotateSpeed,this.rotateSpeedTouch=jt.rotateSpeedTouch,this.rotateInertia=jt.rotateInertia,this.rotateInertiaTouch=jt.rotateInertiaTouch,this.enablePan=jt.enablePan,this.panSpeed=jt.panSpeed,this.screenSpacePanning=jt.screenSpacePanning,this.panSpeedKey=jt.panSpeedKey,this.panInertia=jt.panInertia,this.autoRotate=jt.autoRotate,this.autoRotateSpeed=jt.autoRotateSpeed,this.enableTurnover=jt.enableTurnover,this.enableKeys=jt.enableKeys,this.mouseButtons={ROTATE:ql.LEFT,ZOOM:ql.MIDDLE,PAN:ql.RIGHT},this.target0=this.targetObj.position.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,Object.defineProperty(this,"inTween",{get:()=>re.active||G.active,set(z){re.active=z}}),this.getPolarAngle=function(){return i.phi},this.getAzimuthalAngle=function(){return i.theta},this.getDistance=function(){return this.object.position.distanceTo(this.targetObj.position)},this.saveState=function(){r.targetObj.updateWorldMatrix(!0,!1),r.target0.setFromMatrixPosition(r.targetObj.matrixWorld),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.forceMouseUp=function(){oe()},this.reset=function(){r.targetObj.updateWorldMatrix(!0,!1);const z=ui.copy(r.target0);r.targetObj.worldToLocal(z),r.targetObj.position.add(z),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(e6),r.update(),o=cr.NONE},this.update=(function(){const z=new N,v=new N,M=new N,S=new It;let I=!1,J=!1;return function(){const $=r.object.position;if(r.targetObj.updateWorldMatrix(!0,!1),re.active)re.update((function(B,V,Y){if($.copy(V),z.copy(Y),r.object.lookAt(z),B>=1){a.set(0,0,0),l.set(0,0,0),s=1,E.set(0,0);for(let le in u)u[le]=0;m.set(0,0),Q.getDelta()}}));else if(G.active)G.update((function(B,V,Y){if(z.copy(V),r.object.lookAt(z),r.object.zoom=Y,r.object.updateProjectionMatrix(),B>=1){a.set(0,0,0),l.set(0,0,0),s=1,E.set(0,0);for(let le in u)u[le]=0;m.set(0,0),Q.getDelta()}}));else{z.setFromMatrixPosition(r.targetObj.matrixWorld),v.copy($).sub(z);const B=bAe.setFromUnitVectors(r.object.up,AAe),V=xAe.copy(B).invert();if(v.applyQuaternion(B),i.setFromVector3(v),r.autoRotate&&o===cr.NONE&&ee(2*Math.PI/60/60*r.autoRotateSpeed),i.theta+=a.theta,i.phi+=a.phi,r.enableTurnover){I&&(i.phi-=2*a.phi),J!=I&&o==cr.NONE&&(J=I),J&&(i.theta-=2*a.theta);const Y=i.phi;(Y<=0||Y>=Math.PI)&&(I=!I,i.theta+=Math.PI,i.phi=Y>0?2*Math.PI-Y:Math.abs(Y))}else isFinite(r.minAzimuthAngle)&&isFinite(r.maxAzimuthAngle)&&(i.theta=r2(i.theta,r.minAzimuthAngle,r.maxAzimuthAngle)),i.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,i.phi));i.makeSafe(),r.object.isPerspectiveCamera?(i.radius*=s,i.radius=Math.max(r.minDistance,Math.min(r.maxDistance,i.radius))):r.object.isOrthographicCamera&&(r.object.zoom/=s,r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom)),r.object.updateProjectionMatrix()),z.add(l),v.setFromSpherical(i),v.applyQuaternion(V),$.copy(z).add(v),r.object.lookAt(z),I&&(r.enableTurnover?r.object.quaternion.multiply(yAe):I=!1),a.set(0,0,0),l.set(0,0,0),(function(){const Y=Q.getDelta();let le,me;p.copy(m),m.x=r.enableDamping?Cr(m.x,0,Y,_,.1):0,m.y=r.enableDamping?Cr(m.y,0,Y,_,.1):0,p.sub(m),(function(){const fe=r.domElement===document?r.domElement.body:r.domElement,te=fe.clientWidth,de=fe.clientHeight;if(!(!te||!de)){ee(2*Math.PI*p.x/te*g),we=2*Math.PI*p.y/de*g,a.phi-=we;var we}})(),b.copy(E),E.x=r.enableDamping?Cr(E.x,0,Y,r.panInertia,.1):0,E.y=r.enableDamping?Cr(E.y,0,Y,r.panInertia,.1):0,b.sub(E),b.multiplyScalar(r.panSpeed);for(let fe in u)d.isKeyDown[fe]?le=u[fe]=1:(me=u[fe],u[fe]=Cr(u[fe],0,Y,r.panInertia,.1),le=me-u[fe]),r.enabled&&r.enableKeys&&r.enablePan&&(le*=60*Y*r.panSpeedKey,fe==tt.A||fe==tt.LEFT_ARROW?b.x+=le:fe==tt.D||fe==tt.RIGHT_ARROW?b.x-=le:fe==tt.W||fe==tt.UP_ARROW?b.y+=le:fe!=tt.S&&fe!=tt.DOWN_ARROW||(b.y-=le));(function(fe,te){const de=r.domElement===document?r.domElement.body:r.domElement,we=de.clientWidth,Ie=de.clientHeight;if(!(!we||!Ie))if(r.object.isPerspectiveCamera){r.targetObj.updateWorldMatrix(!0,!1);const Ne=ui.setFromMatrixPosition(r.targetObj.matrixWorld),He=r.object.position;let je=JD.copy(He).sub(Ne).length();je*=Math.tan(r.object.fov/2*ss),H(2*fe*je/Ie,r.object.matrix),T(2*te*je/Ie,r.object.matrix)}else r.object.isOrthographicCamera?(H(fe*(r.object.right-r.object.left)/r.object.zoom/we,r.object.matrix),T(te*(r.object.top-r.object.bottom)/r.object.zoom/Ie,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)})(b.x,b.y),s=C,C=r.enableDamping?Cr(C,1,Y,D,.001):1,s/=C})()}return r.targetObj.position.copy(z),!!(c||M.distanceToSquared(r.object.position)>ZD||8*(1-S.dot(r.object.quaternion))>ZD)&&(r.dispatchEvent(e6),M.copy(r.object.position),S.copy(r.object.quaternion),c=!1,!0)}})(),this.dispose=function(){r.domElement.removeEventListener("contextmenu",U),r.domElement.removeEventListener("mousedown",ae),r.domElement.removeEventListener("wheel",F),r.domElement.removeEventListener("touchstart",k),r.domElement.removeEventListener("touchend",j),r.domElement.removeEventListener("touchmove",q),document.removeEventListener("mousemove",ne),document.removeEventListener("mouseup",oe),document.removeEventListener("mouseleave",oe),d.dispose()},this.tween=(function(){return function(v,M,S,I,J){r.targetObj.updateWorldMatrix(!0,!1);const $=ui.setFromMatrixPosition(r.targetObj.matrixWorld);r.object.parent&&(v=JD.copy(v),r.object.parent.worldToLocal(v)),v.manhattanDistanceTo(r.object.position)<1e-5&&M.manhattanDistanceTo($)<1e-5?I!==void 0&&I():re.setup({posFrom:r.object.position,targetFrom:$,posTo:v,targetTo:M,finishCb:I,movementType:J}).start(S)}})(),this.tweenZoomTo=function(z,v,M,S){if(!r.object.isOrthographicCamera)return void console.warn("v3d.OrbitControls: .tweenZoomTo() works only for orthographic camera");r.targetObj.updateWorldMatrix(!0,!1);const I=ui.setFromMatrixPosition(r.targetObj.matrixWorld);G.setup({zoomFrom:r.object.zoom,targetFrom:I,zoomTo:v,targetTo:z,finishCb:S}).start(M)};const r=this;let o=cr.NONE;const i=new xa,a=new xa;let s=1;const l=new N;let c=!1;const u={};u[tt.W]=u[tt.S]=u[tt.A]=u[tt.D]=u[tt.UP_ARROW]=u[tt.DOWN_ARROW]=u[tt.LEFT_ARROW]=u[tt.RIGHT_ARROW]=0;const d=new $b(window);d.onKeyDown=function(z){r.enableKeys?z.keyCode in u&&(u[z.keyCode]=1):d.isKeyDown[z.keyCode]=!1};const f=new be,h=new be,p=new be,m=new be;let g=1,_=1;const A=new be,y=new be,b=new be,E=new be,x=new be,w=new be,L=new be;let C=1,P=1,D=1;const Q=new Ca,re=new d1,G=new Xb;function se(z=1){return Math.pow(.95,P*z)}function ee(z){a.theta-=z}function ie(z,v){h.set(z,v),m.add(h).sub(f),f.copy(h)}function H(z,v){ui.setFromMatrixColumn(v,0),ui.multiplyScalar(-z),l.add(ui)}function T(z,v){r.screenSpacePanning===!0?ui.setFromMatrixColumn(v,1):(ui.setFromMatrixColumn(v,0),ui.crossVectors(r.object.up,ui)),ui.multiplyScalar(z),l.add(ui)}function R(z){r.object.isPerspectiveCamera?C/=z:r.object.isOrthographicCamera?(C/=z,c=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function O(z){r.object.isPerspectiveCamera?C*=z:r.object.isOrthographicCamera?(C*=z,c=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function W(z){(function(v,M){y.set(v,M),E.add(y).sub(A),A.copy(y)})(z.clientX,z.clientY)}function ae(z){if(r.enabled!==!1){switch(z.preventDefault(),z.button){case r.mouseButtons.ROTATE:if(r.enableRotate===!1)return;(function(v){f.set(v.clientX,v.clientY)})(z),o=cr.ROTATE;break;case r.mouseButtons.ZOOM:case r.mouseButtons.PAN:if(r.enablePan===!1)return;(function(v){A.set(v.clientX,v.clientY)})(z),o=cr.PAN}o!==cr.NONE&&(document.addEventListener("mousemove",ne),document.addEventListener("mouseup",oe),document.addEventListener("mouseleave",oe),r.allowMouseOverIframes&&r.lockIframeEvents(),r.dispatchEvent(qb))}}function ne(z){if(r.enabled!==!1)switch(z.preventDefault(),o){case cr.ROTATE:if(r.enableRotate===!1)return;(function(v){ie(v.clientX,v.clientY),g=r.rotateSpeed,_=r.rotateInertia})(z);break;case cr.DOLLY:if(r.enableZoom===!1)return;(function(v){w.set(v.clientX,v.clientY),L.subVectors(w,x),L.y>0?R(se()):L.y<0&&O(se()),x.copy(w),r.update()})(z);break;case cr.PAN:if(r.enablePan===!1)return;W(z)}}function oe(z){r.enabled!==!1&&(document.removeEventListener("mousemove",ne),document.removeEventListener("mouseup",oe),document.removeEventListener("mouseleave",oe),r.allowMouseOverIframes&&r.unlockIframeEvents(),r.dispatchEvent(Kb),o=cr.NONE)}function F(z){r.enabled===!1||r.enableZoom===!1||o!==cr.NONE&&o!==cr.ROTATE||r.enableCtrlZoom&&!z.ctrlKey||(z.preventDefault(),z.stopPropagation(),r.dispatchEvent(qb),(function(v){P=r.zoomSpeed,D=r.zoomInertia,v.deltaY<0?O(se(Math.abs(v.deltaY)/100)):v.deltaY>0&&R(se(Math.abs(v.deltaY)/100)),r.update()})(z),r.dispatchEvent(Kb))}function k(z){if(r.enabled!==!1){switch(z.touches.length){case 1:if(r.enableRotate===!1)return;(function(v){f.set(v.touches[0].pageX,v.touches[0].pageY)})(z),o=cr.TOUCH_ROTATE;break;case 2:if(r.enableZoom===!1&&r.enablePan===!1)return;(function(v){if(r.enableZoom){P=r.zoomSpeedTouch,D=r.zoomInertiaTouch;let M=v.touches[0].pageX-v.touches[1].pageX,S=v.touches[0].pageY-v.touches[1].pageY,I=Math.sqrt(M*M+S*S);x.set(0,I)}if(r.enablePan){let M=.5*(v.touches[0].pageX+v.touches[1].pageX),S=.5*(v.touches[0].pageY+v.touches[1].pageY);A.set(M,S)}r.update()})(z),o=cr.TOUCH_DOLLY_PAN;break;default:o=cr.NONE}o!==cr.NONE&&r.dispatchEvent(qb)}}function q(z){if(r.enabled!==!1)switch(z.preventDefault(),z.touches.length){case 1:if(r.enableRotate===!1||o!==cr.TOUCH_ROTATE)return;(function(v){ie(v.touches[0].pageX,v.touches[0].pageY),g=r.rotateSpeedTouch,_=r.rotateInertiaTouch})(z);break;case 2:if(r.enableZoom===!1&&r.enablePan===!1||o!==cr.TOUCH_DOLLY_PAN)return;(function(v){let M=v.touches[0].pageX-v.touches[1].pageX,S=v.touches[0].pageY-v.touches[1].pageY,I=Math.sqrt(M*M+S*S);w.set(0,I),L.subVectors(w,x),x.copy(w);let J=.5*(v.touches[0].pageX+v.touches[1].pageX),$=.5*(v.touches[0].pageY+v.touches[1].pageY);y.set(J,$),b.subVectors(y,A),A.copy(y),r.enableZoom&&Math.abs(L.length())>Math.abs(b.length())&&(L.y>0?O(se()):L.y<0&&R(se())),r.enablePan&&Math.abs(L.length())i,set(M){i!==M&&(i=M,z())}}),Object.defineProperty(this,"inTween",{get:()=>re.active||G.active});const a=new Ca,s=1e-6,l=new N,c=new N,u=new N,d=new It,f=new N,h={};let p;h[tt.W]=h[tt.S]=h[tt.A]=h[tt.D]=h[tt.UP_ARROW]=h[tt.DOWN_ARROW]=h[tt.LEFT_ARROW]=h[tt.RIGHT_ARROW]=0;let m=!1;const g=new xa,_=new xa,A=new be;let y=1,b=1;const E=new be,x=new be;let w=0,L=0,C=1,P=1;const D=new be,Q=new be,re=new d1,G=new Xb,se={type:"change"},ee={type:"start"},ie={type:"end"};this.handleResize=function(){if(this.domElement===document)this.screen.left=0,this.screen.top=0,this.screen.width=window.innerWidth,this.screen.height=window.innerHeight;else{const M=this.domElement.getBoundingClientRect(),S=this.domElement.ownerDocument.documentElement;this.screen.left=M.left+window.pageXOffset-S.clientLeft,this.screen.top=M.top+window.pageYOffset-S.clientTop,this.screen.width=M.width,this.screen.height=M.height}},this.handleEvent=function(M){typeof this[M.type]=="function"&&this[M.type](M)};const H=function(M,S){return t6.set((M-.5*o.screen.width-o.screen.left)/(.5*o.screen.width),(o.screen.height+2*(o.screen.top-S))/o.screen.width)};function T(M){o.enabled!==!1&&(M.preventDefault(),o.enableRotate!==!1&&(x.copy(H(M.pageX,M.pageY).negate()),E.copy(x),m=!0,document.addEventListener("mousemove",R),document.addEventListener("mouseup",O),document.addEventListener("mouseleave",O),o.allowMouseOverIframes&&o.lockIframeEvents(),o.dispatchEvent(ee)))}function R(M){if(o.enabled!==!1&&(M.preventDefault(),m)){if(o.enableRotate===!1)return;x.copy(H(M.pageX,M.pageY).negate()),A.add(x).sub(E),E.copy(x),y=o.rotateSpeed,b=o.rotateInertia}}function O(M){o.enabled!==!1&&(M.preventDefault(),m=!1,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O),document.removeEventListener("mouseleave",O),o.allowMouseOverIframes&&o.unlockIframeEvents(),o.dispatchEvent(ie))}function W(M){if(o.enabled!==!1&&o.enableZoom!==!1&&(!o.enableCtrlZoom||M.ctrlKey)){switch(M.preventDefault(),M.stopPropagation(),M.deltaMode){case 2:L-=.025*M.deltaY,C=o.zoomSpeed,P=o.zoomInertia;break;case 1:L-=.01*M.deltaY,C=o.zoomSpeed,P=o.zoomInertia;break;default:L-=25e-5*M.deltaY,C=o.zoomSpeed,P=o.zoomInertia}o.dispatchEvent(ee),o.dispatchEvent(ie)}}function ae(M){if(o.enabled===!1)return;const S=M.targetTouches[0];m=!0,x.copy(H(S.pageX,S.pageY).negate()),E.copy(x),o.dispatchEvent(ee)}function ne(M){if(o.enabled===!1)return;M.preventDefault();const S=M.targetTouches[0];o.enableRotate!==!1&&(x.copy(H(S.pageX,S.pageY).negate()),A.add(x).sub(E),E.copy(x),y=o.rotateSpeedTouch,b=o.rotateInertiaTouch)}function oe(M){if(o.enabled!==!1){if(M.targetTouches.length===0)m=!1;else{if(o.enableRotate===!1)return;m=!0,x.copy(H(M.targetTouches[0].pageX,M.targetTouches[0].pageY).negate()),E.copy(x)}o.dispatchEvent(ie)}}function F(M){o.enabled!==!1&&M.preventDefault()}function k(M){o.domElement.requestPointerLock()}function q(M){document.pointerLockElement===o.domElement?(o.dispatchEvent(ee),document.addEventListener("mousemove",U)):(o.dispatchEvent(ie),document.removeEventListener("mousemove",U))}function j(M){console.error("Pointer lock failed")}function U(M){var S,I;M.preventDefault(),o.enabled&&o.enableRotate&&(A.add((S=M.movementX,I=M.movementY,t6.set(S,-I).multiplyScalar(2/o.screen.width)).negate()),y=o.rotateSpeed,b=o.rotateInertia)}function z(){v(),o.domElement.addEventListener("contextmenu",F),o.enablePointerLock?(o.domElement.addEventListener("click",k),document.addEventListener("pointerlockchange",q),document.addEventListener("pointerlockerror",j)):o.domElement.addEventListener("mousedown",T),o.domElement.addEventListener("wheel",W,{passive:!1}),o.domElement.addEventListener("touchstart",ae,{passive:!0}),o.domElement.addEventListener("touchend",oe),o.domElement.addEventListener("touchmove",ne,{passive:!1}),p=new $b(window,o.domElement.parentElement),p.onKeyDown=function(M){o.enableKeys?M.keyCode in h&&(h[M.keyCode]=1):p.isKeyDown[M.keyCode]=!1}}function v(){o.domElement.removeEventListener("contextmenu",F),o.domElement.removeEventListener("click",k),document.removeEventListener("pointerlockchange",q),document.removeEventListener("pointerlockerror",j),document.removeEventListener("mousemove",U),o.domElement.removeEventListener("mousedown",T),o.domElement.removeEventListener("wheel",W),o.domElement.removeEventListener("touchstart",ae),o.domElement.removeEventListener("touchend",oe),o.domElement.removeEventListener("touchmove",ne),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O),document.removeEventListener("mouseleave",O),p&&p.dispose()}this.update=function(){re.active?re.update((function(S,I,J){if(o.object.position.copy(I),o.object.lookAt(J),S>=1){_.set(0,0,0),A.set(0,0),w=0,L=0,D.set(0,0),Q.set(0,0);for(const $ in h)h[$]=0;a.getDelta()}})):G.active?G.update((function(S,I,J){if(o.object.lookAt(I),o.object.zoom=J,o.object.updateProjectionMatrix(),S>=1){_.set(0,0,0),A.set(0,0),w=0,L=0,D.set(0,0),Q.set(0,0);for(let $ in h)h[$]=0;a.getDelta()}})):(o.object.matrixAutoUpdate&&o.object.updateMatrix(),o.object.getLocalDirection(f),g.setFromVector3(f),g.theta+=_.theta*y,g.phi+=_.phi*y,g.makeSafe(),f.setFromSpherical(g),l.copy(f).add(o.object.position),o.object.lookAtLocal(l),o.object.isPerspectiveCamera?o.object.position.addScaledVector(f,w):o.object.isOrthographicCamera&&(o.object.zoom*=1+.15*w,o.object.updateProjectionMatrix()),c.copy(f).cross(o.object.up).setLength(-D.x),c.add(u.copy(o.object.up).setLength(D.y)),o.object.position.add(c),(function(){const S=a.getDelta();_.set(_.radius,A.y,A.x),A.x=o.enableDamping?Cr(A.x,0,S,b,.001):0,A.y=o.enableDamping?Cr(A.y,0,S,b,.001):0,_.set(_.radius,_.phi-A.y,_.theta-A.x),D.copy(Q),Q.x=o.enableDamping?Cr(Q.x,0,S,1,.001):0,Q.y=o.enableDamping?Cr(Q.y,0,S,1,.001):0,D.sub(Q),D.multiplyScalar(1),w=L,L=o.enableDamping?Cr(L,0,S,P,.001):0,w-=L,w*=C;for(const I in h){const J=I==tt.A||I==tt.LEFT_ARROW||I==tt.D||I==tt.RIGHT_ARROW,$=I==tt.W||I==tt.UP_ARROW||I==tt.S||I==tt.DOWN_ARROW,B=J?o.panInertia:o.zoomInertia,V=J?o.panSpeedKey:o.zoomSpeedKey,Y=.001;let le;if(p.isKeyDown[I])le=h[I]=1;else{const me=h[I];h[I]=Cr(h[I],0,S,B,Y),le=me-h[I]}o.enabled&&o.enableKeys&&(J&&!o.enablePan||$&&!o.enableZoom||(le*=60*S*V,I==tt.A||I==tt.LEFT_ARROW?D.x+=le:I==tt.D||I==tt.RIGHT_ARROW?D.x-=le:I==tt.W||I==tt.UP_ARROW?w+=le:I!=tt.S&&I!=tt.DOWN_ARROW||(w-=le)))}})()),this._handleCollisions();let M=!1;this._lastPosition.distanceToSquared(o.object.position)>s&&(this._lastPosition.copy(o.object.position),M=!0),d.dot(o.object.quaternion)<1-s&&(d.copy(o.object.quaternion),M=!0),M&&o.dispatchEvent(se)},this.forceMouseUp=function(){O({preventDefault:function(){}})},this.dispose=v,this.releaseFromCollision=function(){this._onCollisionMesh=!1},this.tween=function(M,S,I,J,$){o.object.parent&&(M=n6.copy(M),o.object.parent.worldToLocal(M));const B=o.object.getWorldPosition(Jb),V=r6.subVectors(S,B).length(),Y=o.object.getWorldDirection(r6).multiplyScalar(V).add(B),le=1e-5;M.manhattanDistanceTo(o.object.position)0){const r=t[0];this.object.position.y=r.point.y+this.gazeLevel,this._onCollisionMesh=!0}else if(this._onCollisionMesh){let r=1/0;for(const o of this.collisionMeshes){if(!o.geometry.boundsTree){console.warn("v3d.FirstPersonControls: no bounding tree found on "+o.name);continue}this._toMeshSpaceMatrix.copy(o.matrixWorld).invert(),this._lastIntersection.copy(this.object.position),this._lastIntersection.y-=this.gazeLevel,this._lastIntersection.applyMatrix4(this._toMeshSpaceMatrix);const i=this._ppTarget;o.geometry.boundsTree.closestPointToPoint(this._lastIntersection,i),i.distanceoe.active||F.active});var u=new Ca,d=1e-6,f=new N,h=new N,p=new N,m=new be,g=new N,_=new It,A=o,y=new N,b={};b[tt.W]=b[tt.S]=b[tt.A]=b[tt.D]=b[tt.UP_ARROW]=b[tt.DOWN_ARROW]=b[tt.LEFT_ARROW]=b[tt.RIGHT_ARROW]=0;var E=new $b(window);E.onKeyDown=function(te){r.enableKeys?te.keyCode in b&&(b[te.keyCode]=1):E.isKeyDown[te.keyCode]=!1};var x=new xa,w=new xa,L=new be,C=1,P=1,D=new be,Q=new be,re=0,G=0,se=1,ee=1,ie=0,H=0,T=new be,R=new be,O=1,W=1,ae=new be,ne=new be,oe=new d1;const F=new Xb;var k={type:"change"},q={type:"start"},j={type:"end"};this.handleResize=function(){if(this.domElement===document)this.screen.left=0,this.screen.top=0,this.screen.width=window.innerWidth,this.screen.height=window.innerHeight;else{var te=this.domElement.getBoundingClientRect(),de=this.domElement.ownerDocument.documentElement;this.screen.left=te.left+window.pageXOffset-de.clientLeft,this.screen.top=te.top+window.pageYOffset-de.clientTop,this.screen.width=te.width,this.screen.height=te.height}},this.handleEvent=function(te){typeof this[te.type]=="function"&&this[te.type](te)};var U,z,v,M,S=(U=new be,function(te,de){return U.set((te-r.screen.left)/r.screen.width,(de-r.screen.top)/r.screen.height),U}),I=(function(){var te=new be;return function(de,we){return te.set((de-.5*r.screen.width-r.screen.left)/(.5*r.screen.width),(r.screen.height+2*(r.screen.top-we))/r.screen.width),te}})();function J(te){if(r.enabled!==!1){switch(te.preventDefault(),te.button){case r.mouseButtons.ROTATE:if(r.enableRotate===!1)return;Q.copy(I(te.pageX,te.pageY).negate()),D.copy(Q),A=i;break;case r.mouseButtons.ZOOM:case r.mouseButtons.PAN:if(r.enablePan===!1)return;ae.copy(S(te.pageX,te.pageY)),ne.copy(ae),A=te.button==r.mouseButtons.PAN?s:a}document.addEventListener("mousemove",$),document.addEventListener("mouseup",B),document.addEventListener("mouseleave",B),r.allowMouseOverIframes&&r.lockIframeEvents(),r.dispatchEvent(q)}}function $(te){if(r.enabled!==!1){if(te.preventDefault(),A===i){if(r.enableRotate===!1)return;Q.copy(I(te.pageX,te.pageY).negate()),L.add(Q).sub(D),D.copy(Q),C=r.rotateSpeed,P=r.rotateInertia}else if(A===s||A===a){if(r.enablePan===!1)return;ne.copy(S(te.pageX,te.pageY)),R.add(ne).sub(ae),ae.copy(ne),O=r.panSpeed,W=r.panInertia}}}function B(te){r.enabled!==!1&&(te.preventDefault(),A=o,document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",B),document.removeEventListener("mouseleave",B),r.allowMouseOverIframes&&r.unlockIframeEvents(),r.dispatchEvent(j))}function V(te){if(r.enabled!==!1&&r.enableZoom!==!1&&(!r.enableCtrlZoom||te.ctrlKey)){switch(te.preventDefault(),te.stopPropagation(),te.deltaMode){case 2:G-=.025*te.deltaY,se=r.zoomSpeed,ee=r.zoomInertia;break;case 1:G-=.01*te.deltaY,se=r.zoomSpeed,ee=r.zoomInertia;break;default:G-=25e-5*te.deltaY,se=r.zoomSpeed,ee=r.zoomInertia}r.dispatchEvent(q),r.dispatchEvent(j)}}function Y(te){if(r.enabled!==!1){var de=te.touches[0],we=te.touches[1];if(te.touches.length===1){if(r.enableRotate===!1)return;A=l,Q.copy(I(de.pageX,de.pageY).negate()),D.copy(Q)}else{if(r.enableZoom===!1&&r.enablePan===!1)return;if(A=c,r.enableZoom){var Ie=S(de.pageX-we.pageX,de.pageY-we.pageY);ie=H=Ie.length()}if(r.enablePan){var Ne=S((de.pageX+we.pageX)/2,(de.pageY+we.pageY)/2);ae.copy(Ne),ne.copy(ae)}}r.dispatchEvent(q)}}function le(te){if(r.enabled!==!1){te.preventDefault();var de=te.touches[0],we=te.touches[1];if(te.touches.length===1){if(r.enableRotate===!1)return;Q.copy(I(de.pageX,de.pageY).negate()),L.add(Q).sub(D),D.copy(Q),C=r.rotateSpeedTouch,P=r.rotateInertiaTouch}else{if(r.enableZoom===!1&&r.enablePan===!1)return;var Ie=S(de.pageX-we.pageX,de.pageY-we.pageY),Ne=(H=Ie.length())-ie;ie=H;var He=S((de.pageX+we.pageX)/2,(de.pageY+we.pageY)/2);ne.copy(He);var je=m.subVectors(ne,ae),ct=je.length();ae.copy(ne),r.enableZoom&&Math.abs(Ne)>Math.abs(ct)&&(G+=Ne,se=r.zoomSpeedTouch,ee=r.zoomInertiaTouch),r.enablePan&&Math.abs(Ne)<=Math.abs(ct)&&(R.add(je),O=r.panSpeedTouch,W=r.panInertiaTouch)}}}function me(te){if(r.enabled!==!1){switch(te.touches.length){case 0:A=o;break;case 1:if(r.enableRotate===!1)return;A=l,Q.copy(I(te.touches[0].pageX,te.touches[0].pageY).negate()),D.copy(Q)}r.dispatchEvent(j)}}function fe(te){r.enabled!==!1&&te.preventDefault()}this.update=(new N,function(){oe.active?oe.update((function(de,we,Ie){if(r.object.position.copy(we),r.object.lookAt(Ie),de>=1){for(var Ne in w.set(0,0,0),L.set(0,0),re=0,G=0,T.set(0,0),R.set(0,0),b)b[Ne]=0;u.getDelta()}})):F.active?F.update((function(de,we,Ie){if(r.object.lookAt(we),r.object.zoom=Ie,r.object.updateProjectionMatrix(),de>=1){w.set(0,0,0),L.set(0,0),re=0,G=0,T.set(0,0),R.set(0,0);for(let Ne in b)b[Ne]=0;u.getDelta()}})):(r.object.getLocalDirection(y),x.setFromVector3(y),x.theta+=w.theta*C,x.phi+=w.phi*C,x.theta=Math.max(r.minAzimuthAngle,Math.min(r.maxAzimuthAngle,x.theta)),x.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,x.phi)),x.makeSafe(),y.setFromSpherical(x),f.copy(y).add(r.object.position),r.object.lookAtLocal(f),r.object.isPerspectiveCamera?r.object.position.addScaledVector(y,re):r.object.isOrthographicCamera&&(r.object.zoom*=1+.15*re,r.object.updateProjectionMatrix()),h.copy(y).cross(r.object.up).setLength(-T.x),h.add(p.copy(r.object.up).setLength(T.y)),r.object.position.add(h),(function(){var de=u.getDelta();for(var we in w.set(w.radius,L.y,L.x),L.x=r.enableDamping?Cr(L.x,0,de,P,.001):0,L.y=r.enableDamping?Cr(L.y,0,de,P,.001):0,w.set(w.radius,w.phi-L.y,w.theta-L.x),T.copy(R),R.x=r.enableDamping?Cr(R.x,0,de,W,.001):0,R.y=r.enableDamping?Cr(R.y,0,de,W,.001):0,T.sub(R),T.multiplyScalar(O),re=G,G=r.enableDamping?Cr(G,0,de,ee,.001):0,re-=G,re*=se,b){var Ie=we==tt.A||we==tt.LEFT_ARROW||we==tt.D||we==tt.RIGHT_ARROW,Ne=we==tt.W||we==tt.UP_ARROW||we==tt.S||we==tt.DOWN_ARROW,He=Ie?r.panInertia:r.zoomInertia,je=Ie?r.panSpeedKey:r.zoomSpeedKey;if(E.isKeyDown[we])var ct=b[we]=1;else{var Vt=b[we];b[we]=Cr(b[we],0,de,He,.001),ct=Vt-b[we]}r.enabled&&r.enableKeys&&(Ie&&!r.enablePan||Ne&&!r.enableZoom||(ct*=60*de*je,we==tt.A||we==tt.LEFT_ARROW?T.x+=ct:we==tt.D||we==tt.RIGHT_ARROW?T.x-=ct:we==tt.W||we==tt.UP_ARROW?re+=ct:we!=tt.S&&we!=tt.DOWN_ARROW||(re-=ct)))}})());var te=!1;g.distanceToSquared(r.object.position)>d&&(g.copy(r.object.position),te=!0),_.dot(r.object.quaternion)<1-d&&(_.copy(r.object.quaternion),te=!0),te&&r.dispatchEvent(k)}),this.forceMouseUp=function(){B({preventDefault:function(){}})},this.dispose=function(){this.domElement.removeEventListener("contextmenu",fe),this.domElement.removeEventListener("mousedown",J),this.domElement.removeEventListener("wheel",V),this.domElement.removeEventListener("touchstart",Y),this.domElement.removeEventListener("touchend",me),this.domElement.removeEventListener("touchmove",le),document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",B),document.removeEventListener("mouseleave",B),E.dispose()},this.tween=(z=new N,v=new N,M=new N,function(te,de,we,Ie,Ne){r.object.parent&&(te=z.copy(te),r.object.parent.worldToLocal(te));var He=r.object.getWorldPosition(v),je=M.subVectors(de,He).length(),ct=r.object.getWorldDirection(M).multiplyScalar(je).add(He),Vt=1e-5;te.manhattanDistanceTo(r.object.position)2&&(s[c++]=a.getZ(l));return s}return a.array instanceof Float32Array?a.array:new Float32Array(a.array)}const o=n.index?n.toNonIndexed():n,i=e.generateTangents(r(o.attributes.position),r(o.attributes.normal),r(o.attributes.uv));if(t)for(let a=3;aa.materialIndex!==s.materialIndex?a.materialIndex-s.materialIndex:a.start-s.start)),n.getIndex()===null){const a=n.getAttribute("position"),s=[];for(let l=0;lt&&l.add(C)}l.normalize(),p.setXYZ(_+E,l.x,l.y,l.z)}}return u.setAttribute("normal",p),u}function BAe(n,e){const t={};for(let r=0;r{r.originData.texture===e&&(r.originData.texture=t)}));for(const r in n.nodeTextures)n.nodeTextures[r]===e&&(n.nodeTextures[r]=t);break;case"MeshStandardMaterial":a6.forEach((r=>{n[r]===e&&(n[r]=t)}));break;default:return void console.error("replaceTexture: Unsupported material type "+n.type)}t.encoding=e.encoding,t.wrapS=e.wrapS,t.wrapT=e.wrapT}function o3(n){if(a6.forEach((function(e){n[e]&&n[e].isTexture&&n[e].dispose()})),n.type=="MeshNodeMaterial")for(const e in n.nodeTextures)n.nodeTextures[e]&&n.nodeTextures[e].dispose()}function s6(n,e,t){const r=new Fn,o={};if(r.addNode(Ft("LIGHT_PATH_BL","Light Path")),r.addNode(Ft("TEX_ENVIRONMENT_BL","Lighting Texture",{texture:e})),o[so("TEX_ENVIRONMENT_BL",0)]=e,t instanceof Ge){const i=t.toArray([0,0,0,1]);r.addNode(Ft("RGB_BL","Background Color",{outputs:[i]}))}else r.addNode(Ft("TEX_ENVIRONMENT_BL","Background Texture",{texture:t})),o[so("TEX_ENVIRONMENT_BL",1)]=t;return r.addNode(Ft("MIX_BL","Mix")),Ke(r,0,it.LIGHT_PATH_BL.isCameraRay,3,ve.MIX_BL.fac),Ke(r,1,it.TEX_ENVIRONMENT_BL.color,3,ve.MIX_BL.col1),Ke(r,2,it[Ei(r.node(2))].color,3,ve.MIX_BL.col2),r.addNode(Ft("BACKGROUND_BL","Background")),Ke(r,3,it.MIX_BL.col,4,ve.BACKGROUND_BL.color),r.addNode(Ft("OUTPUT_WORLD_BL","Output")),Ke(r,4,it.BACKGROUND_BL.color,5,ve.OUTPUT_WORLD_BL.surface),new ta({name:n,nodeGraph:r,nodeTextures:o})}function i3(n,e,t,r="blender"){let o=new Fn;switch(r){case"blender":if(t<1){o.addNode(Ft("BSDF_TRANSPARENT_BL","Transparent"));const s=Ft("DIFFUSE_BSDF_BL","Diffuse");e.toArray(s.originData.inputs[ve.DIFFUSE_BSDF_BL.color]),o.addNode(s);const l=Ft("MIX_SHADER_BL","Mix");l.originData.inputs[ve.MIX_SHADER_BL.fac]=t,o.addNode(l),Ke(o,0,it.BSDF_TRANSPARENT_BL.color,2,ve.MIX_SHADER_BL.color1),Ke(o,1,it.DIFFUSE_BSDF_BL.color,2,ve.MIX_SHADER_BL.color2)}else{const s=Ft("DIFFUSE_BSDF_BL","Diffuse");e.toArray(s.originData.inputs[ve.DIFFUSE_BSDF_BL.color]),o.addNode(s)}o.addNode(Ft("OUTPUT_MATERIAL_BL","Output")),Ke(o,o.len()-2,it[Ei(o.node(o.len()-2))].color,o.len()-1,ve.OUTPUT_MATERIAL_BL.surface);break;case"max":const i=Ft("LAMBERT_AR","Diffuse");i.originData.inputs[ve.LAMBERT_AR.base]=1,e.toArray(i.originData.inputs[ve.LAMBERT_AR.baseColor]),i.originData.inputs[ve.LAMBERT_AR.opacity][0]=t,i.originData.inputs[ve.LAMBERT_AR.opacity][1]=t,i.originData.inputs[ve.LAMBERT_AR.opacity][2]=t,o.addNode(i),o.addNode(Ft("OUTPUT_MX","Output")),Ke(o,0,it.LAMBERT_AR.color,1,ve.OUTPUT_MX.color);break;case"maya":const a=Ft("LAMBERT_MY","Diffuse");e.toArray(a.originData.inputs[ve.LAMBERT_MY.color]),a.originData.inputs[ve.LAMBERT_MY.diffuse]=1,a.originData.inputs[ve.LAMBERT_MY.transparency][0]=1-t,a.originData.inputs[ve.LAMBERT_MY.transparency][1]=1-t,a.originData.inputs[ve.LAMBERT_MY.transparency][2]=1-t,o.addNode(a),o.addNode(Ft("SHADING_ENGINE_MY","Output")),Ke(o,0,it.LAMBERT_MY.color,1,ve.SHADING_ENGINE_MY.surface);break;default:console.error("createDiffuseMaterial: Incorrect material profile - "+r),o=null}return new ta({name:n,nodeGraph:o,profile:r})}function kAe(n="blender",e={}){let t=new Fn,r=e.color??"white",o=e.emissive??"black";const i=e.opacity??1,a=e.metalness??0,s=e.roughness??1,l=e.emissiveIntensity??1;let c,u;switch(r instanceof Ge||(r=new Ge(r)),o instanceof Ge||(o=new Ge(o)),n){case"blender":c=Ft("RGB_BL","color"),r.toArray(c.originData.outputs[it.RGB_BL.color]),t.addNode(c),u=Ft("RGB_BL","emissive"),o.toArray(u.originData.outputs[it.RGB_BL.color]),t.addNode(u),t.addNode(Ft("VALUE_BL","opacity",{outputs:[i]})),t.addNode(Ft("VALUE_BL","metalness",{outputs:[a]})),t.addNode(Ft("VALUE_BL","roughness",{outputs:[s]})),t.addNode(Ft("VALUE_BL","emissiveIntensity",{outputs:[l]})),t.addNode(Ft("BSDF_PRINCIPLED_BL","Shader")),Ke(t,0,it.RGB_BL.color,6,ve.BSDF_PRINCIPLED_BL.baseColor),Ke(t,1,it.RGB_BL.color,6,ve.BSDF_PRINCIPLED_BL.emission),Ke(t,2,it.VALUE_BL.value,6,ve.BSDF_PRINCIPLED_BL.alpha),Ke(t,3,it.VALUE_BL.value,6,ve.BSDF_PRINCIPLED_BL.metallic),Ke(t,4,it.VALUE_BL.value,6,ve.BSDF_PRINCIPLED_BL.roughness),Ke(t,5,it.VALUE_BL.value,6,ve.BSDF_PRINCIPLED_BL.emissionStrength),t.addNode(Ft("OUTPUT_MATERIAL_BL","Output")),Ke(t,6,it.BSDF_PRINCIPLED_BL.color,7,ve.OUTPUT_MATERIAL_BL.surface);break;case"max":c=Ft("RGB_MX","color"),r.toArray(c.originData.outputs[it.RGB_MX.color]),t.addNode(c),u=Ft("RGB_MX","emissive"),o.toArray(u.originData.outputs[it.RGB_BL.color]),t.addNode(u),t.addNode(Ft("VALUE_MX","opacity",{outputs:[i]})),t.addNode(Ft("VALUE_MX","metalness",{outputs:[a]})),t.addNode(Ft("VALUE_MX","roughness",{outputs:[s]})),t.addNode(Ft("VALUE_MX","emissiveIntensity",{outputs:[l]})),t.addNode(Ft("PHYSICAL_MX","Shader")),Ke(t,0,it.RGB_MX.color,6,ve.PHYSICAL_MX.baseColor),Ke(t,1,it.RGB_MX.color,6,ve.PHYSICAL_MX.emitColor),Ke(t,2,it.VALUE_BL.value,6,ve.PHYSICAL_MX.opacity),Ke(t,3,it.VALUE_MX.value,6,ve.PHYSICAL_MX.metalness),Ke(t,4,it.VALUE_MX.value,6,ve.PHYSICAL_MX.roughness),Ke(t,5,it.VALUE_MX.value,6,ve.PHYSICAL_MX.emission),t.addNode(Ft("OUTPUT_MX","Output")),Ke(t,6,it.PHYSICAL_MX.color,7,ve.OUTPUT_MX.color);break;case"maya":c=Ft("COLOR_CONSTANT_MY","color"),r.toArray(c.originData.inputs[ve.COLOR_CONSTANT_MY.color]),r.toArray(c.originData.outputs[ve.COLOR_CONSTANT_MY.color]),t.addNode(c),u=Ft("COLOR_CONSTANT_MY","emissive"),o.toArray(u.originData.inputs[ve.COLOR_CONSTANT_MY.color]),o.toArray(u.originData.outputs[ve.COLOR_CONSTANT_MY.color]),t.addNode(u),t.addNode(Ft("FLOAT_CONSTANT_MY","opacity",{outputs:[i]})),t.addNode(Ft("FLOAT_CONSTANT_MY","metalness",{outputs:[a]})),t.addNode(Ft("FLOAT_CONSTANT_MY","roughness",{outputs:[s]})),t.addNode(Ft("FLOAT_CONSTANT_MY","emissiveIntensity",{outputs:[l]})),t.addNode(Ft("STANDARD_SURFACE_AR","Shader")),Ke(t,0,it.COLOR_CONSTANT_MY.color,6,ve.STANDARD_SURFACE_AR.baseColor),Ke(t,1,it.COLOR_CONSTANT_MY.color,6,ve.STANDARD_SURFACE_AR.emissionColor),Ke(t,2,it.FLOAT_CONSTANT_MY.value,6,ve.STANDARD_SURFACE_AR.opacity),Ke(t,3,it.FLOAT_CONSTANT_MY.value,6,ve.STANDARD_SURFACE_AR.metalness),Ke(t,4,it.FLOAT_CONSTANT_MY.value,6,ve.STANDARD_SURFACE_AR.specularRoughness),Ke(t,5,it.FLOAT_CONSTANT_MY.value,6,ve.STANDARD_SURFACE_AR.emission),t.addNode(Ft("SHADING_ENGINE_MY","Output")),Ke(t,6,it.STANDARD_SURFACE_AR.color,7,ve.SHADING_ENGINE_MY.surface);break;default:console.error("createStandardPBRMaterial: Incorrect material profile - "+n),t=null}return new ta({name:name??"",nodeGraph:t,profile:n})}var FAe=Object.freeze({__proto__:null,createDiffuseMaterial:i3,createEnvironmentMaterial:s6,createStandardPBRMaterial:kAe,disposeTextures:o3,replaceTexture:OAe});const l6=new Ge,c6=new Ue;function VAe(n){const e=new qi,t=n.count,r=n.geometry,o=n.material;for(let i=0;i=1&&y.setX(E,m.getX(x)),g>=2&&y.setY(E,m.getY(x)),g>=3&&y.setZ(E,m.getZ(x)),g>=4&&y.setW(E,m.getW(x))}u.setAttribute(p,y)}const f=new Mt(u,d);f.isMaterialGeneratedMesh=!0,f.name=e.name+"MatMesh"+a,e.add(f)}return e}function zAe(n){const e=[],t=[];for(let o=0;o{const{geometry:a}=i;if(a!==void 0){const{position:s}=a.attributes;if(s!==void 0)for(let l=0,c=s.count;l1&&c.setY(a,u.getY(s)),c.itemSize>2&&c.setZ(a,u.getZ(s)),c.itemSize>3&&c.setW(a,u.getW(s))}}}}function jAe(n,e){if(oh(e))return a3(n,e);const t=this.getMaterialsByName(n,e);return t.length?t[0]:null}function QAe(n,e){if(oh(e)){const r=a3(n,e);return r?[r]:[]}const t=[];if(n.scene!==null){n.scene.traverse((function(o){o.material&&o.material.name===e&&t.indexOf(o.material)===-1&&t.push(o.material)}));const r=n.scene.worldMaterial;r!==null&&r.name===e&&t.indexOf(r)===-1&&t.push(r)}return t}function a3(n,e){let t=null;if(n.scene!==null){n.scene.traverse((o=>{o.material&&o.material.uuid===e&&(t=o.material)}));const r=n.scene.worldMaterial;r!==null&&r.uuid===e&&(t=r)}return t}function u6(n){const e=[];if(n.scene!==null){n.scene.traverse((r=>{r.material&&!e.includes(r.material)&&e.push(r.material)}));const t=n.scene.worldMaterial;t===null||e.includes(t)||e.push(t)}return e}function $Ae(n,e){const t=oh(e);for(let r=0;r{if(!t.material)return;const r=Array.isArray(t.material)?t.material:[t.material];for(let o=0;o=0;a--)i.clippingPlanes[a]===n.plane&&i.clippingPlanes.splice(a,1)}}))}var KAe=Object.freeze({__proto__:null,assignDefaultControls:h6,calcSceneBox:h1,checkActionIsUsed:d6,createDefaultCamera:f6,createEnvironmentMaterial:s6,createMeshesFromInstancedMesh:VAe,createMeshesFromMultiMaterialMesh:UAe,createMultiMaterialMesh:zAe,createMultiMaterialObject:GAe,getAllMaterials:u6,getAnimationActionByName:$Ae,getAnimationActionByObjectUUID:XAe,getAnimationActionsByName:YAe,getMaterialByName:jAe,getMaterialByUUID:a3,getMaterialsByName:QAe,reduceVertices:HAe,removeClipPlanesFromMats:qAe,sortInstancedMesh:WAe});const ZAe="MADE WITH VERGE3D TRIAL",p6={Afterimage:xD,Bloom:pl,Bokeh:Rb,"Brightness/Contrast":Lb,FXAA:e1,Grayscale:Pb,Mask:Nb,Outline:Ma,Render:o1,SSAA:Fh,SSR:RD,ToneMapping:kb,"Copy/Other":bs},JAe={[yR]:"RG",[vR]:"RGBA",[AR]:"DEPTH",[IR]:"RGBA_BPTC",[TR]:"RGBA_ASTC_4x4",[bR]:"RGB_S3TC_DXT1",[xR]:"RGBA_S3TC_DXT5",[ER]:"RGB_PVRTC_4BPPV1",[CR]:"RGBA_PVRTC_4BPPV1",[SR]:"RGB_ETC1",[wR]:"RGB_ETC2",[MR]:"RGB_ETC2_EAC"};class vo{static getPageParams(e){let t=(e=e||window).location.href.toString();const r={};if(t.indexOf("?")==-1)return r;const o=t.split("#")[0].split("?")[1].split("&");for(let i=0;i${ZAe}`,t.appendChild(o),setTimeout((function(){t.contains(o)&&Eu(o.textContent)==890310108||e.dispose()}),1e3)}static isXML(e){return e.match(/.*\.xml$/)!==null}static isJS(e){return e.match(/.*\.js$/)!==null}static addToAppList(e){const t=ch();t.v3d&&(t.v3d.apps=t.v3d.apps||[],t.v3d.apps.indexOf(e)==-1&&t.v3d.apps.push(e))}static removeFromAppList(e){const t=ch();if(t.v3d&&t.v3d.apps){const r=t.v3d.apps.indexOf(e);r>-1&&t.v3d.apps.splice(r,1)}}static printPerformanceInfo(e,t){t=t||1;const r=e.renderer.info;r.reset();const o=e.frame;for(let s=0;s1e4);const c=e._loadSceneURL.indexOf(".xz",e._loadSceneURL.length-3)!=-1;a("Asset Compression: "+(c?"yes":"no"),c==0);const u=Math.round(r.numShaderCompiles);a(`Shader Compilations: ${u}`,u>100);const d=s/t;a("FPS: "+d,d<30);const f=Math.round(r.render.calls/s);a("Render Calls: "+f,f>1e3);const h=Math.round(r.render.triangles/s);a("Triangles Rendered: "+h,h>1e6),a("Geometry Buffers: "+r.memory.geometries,r.memory.geometries>200),a("HDR Rendering: "+(e.useHDR?"yes":"no")),a("Order-Independent Transparency: "+(e.renderer.useOIT?"yes":"no"));const p=e.renderer.getDrawingBufferSize(new be);a("Viewport Resolution: "+p.x+"x"+p.y),a(`Pixel Ratio: ${e.renderer.getPixelRatio()} (current) / ${window.devicePixelRatio} (device)`);let m="N/A";switch(e._envIBLMode){case 0:m="PMREM",m+=` ${e._pmremMaxTileSize} px`;break;case 1:m="Light Probe",m+=` ${e._pmremMaxTileSize} px`}a(`Image-Based Lighting: ${m}`);let g=0,_=0,A=0,y=0,b=0,E=0;e.scene.traverse((function(D){D.isLight&&(g++,D.castShadow&&D.shadow&&(y++,b=D.shadow.mapSize.width,E=D.shadow.mapSize.height)),D.isCubeReflectionProbe&&_++,D.isPlaneReflectionProbe&&A++})),a("Lights: "+g,g>10),a(`Reflection Probes: ${_} (cube) / ${A} (plane) `,_>3||A>1);const x=[];e.postprocessing&&(e.postprocessing.gtaoGenerator&&x.push("GTAO"),e.postprocessing.composer.passes.forEach((function(D){for(let Q in p6)if(D instanceof p6[Q])return void x.push(Q);x.push("Undefined")}))),a(`Post-Processing: ${x.length?x.join(","):"N/A"}`);let w="N/A";if(y&&e.renderer.shadowMap&&e.renderer.shadowMap.enabled){switch(e.renderer.shadowMap.type){case 0:w="Basic";break;case 1:w="Bilinear";break;case 2:w="PCF";break;case 3:w="ESM";break;default:w="Unknown"}w+=` ${b}x${E}x${y}`}a("Shadow Map: "+w,y>4||b>2048||E>2048);const L=r.programs.slice(0);a("Materials and Shaders: "+L.length,L>100),L.sort((function(D,Q){return Q.profile.renderTime-D.profile.renderTime}));let C=0;for(let D=0;D=.1?String(Math.round(10*G)/10)+"ms":G>0&&G<.1?String(Math.round(1e3*G)/1e3)+"ms":"N/R",a(" "+(re.size==0?"System Material":Array.from(re).join(","))+" - "+Q.name+" - "+se,G>16),C+=G,Q.profile.renderTime=0}a("Total Render Time: "+String(Math.round(10*C)/10)+"ms",C>16),a("Textures & Render Buffers: "+r.memory.textures,r.memory.textures>100);const P=Array.from(r.memory.textureSpecs.values());P.sort((function(D,Q){return D.typeQ.type?-1:D.width!=Q.width?Q.width-D.width:Q.height-D.height}));for(let D=0;D=4096||Q.height>=4096)}if(r.render.customCounter){const D=r.render.customCounter/s;a(`Custom Counter: ${Math.round(10*D)/10} iter/frame`)}}),1e3*t)}static printMaterialsStats(e){const t=u6(e).filter((a=>a.type=="MeshNodeMaterial")),r=new Map;t.forEach((a=>{a.traverseNodes((s=>{const l=s.originData.type;r.has(l)||r.set(l,0),r.set(l,r.get(l)+1)}))}));const o=Array.from(r);o.sort(((a,s)=>s[1]-a[1])),console.log("Total Node Materials:",t.length);const i=e.renderer.info.programs.filter((a=>a.name=="MeshNodeMaterial"));console.log("Total Node Shaders:",i.length),console.log("Node Stats:"),o.forEach((a=>{console.log(` ${a[0]} - ${a[1]}`)}))}static registerServiceKeys(e){vo.unregisterServiceKeys(e),e._serviceKeyListeners=e._serviceKeyListeners||[];const t=e._serviceKeyListeners;t.push(new i1(window,"KeyP",(function(){vo.printPerformanceInfo(e,1)}),3,1)),t.push(new i1(window,"KeyF",(function(){e.stats?e.hideFPS():e.showFPS()}),3,1)),t.push(new i1(window,"KeyH",(function(){e.enableRender?e.disableRendering():e.enableRendering()}),3,1)),t.push(new i1(window,["Backquote","IntlBackslash"],(()=>{let r;vo.showServiceKeysHelp(e),e.controls&&(r=e.controls.enableKeys,e.controls.enableKeys=!1);const o=i=>{switch(i.code){case"KeyW":e.hasDebugMode("wireframes")?e.disableDebugMode("wireframes"):e.enableDebugMode("wireframes");break;case"KeyL":e.hasDebugMode("lights")?e.disableDebugMode("lights"):e.enableDebugMode("lights");break;case"KeyS":e.hasDebugMode("skeletons")?e.disableDebugMode("skeletons"):e.enableDebugMode("skeletons");break;case"KeyP":vo.printPerformanceInfo(e,1);break;case"KeyF":e.stats?e.hideFPS():e.showFPS();break;case"KeyH":e.enableRender?e.disableRendering():e.enableRendering();break;case"KeyN":e.hasDebugMode("normals")?e.disableDebugMode("normals"):e.enableDebugMode("normals");break;case"KeyG":{const a=new r1,s={onlyVisible:!0,binary:!0,trs:!0,animations:[]};for(let l=0;lt.dispose())),e._serviceKeyListeners.length=0)}static showServiceKeysHelp(e){const t=e.container,r=["color: #fff;","font-size: 14px;","font-family: monospace;","text-decoration: none;","position: absolute;",`top: ${e.stats?60:10}px;`,"left: 10px;","user-select: none;","z-index: 9999;","text-shadow: 1px 1px #000;"].join(` +`),o=document.createElement("div");o.id="v3d-debug-info-help",o.style=r,o.innerHTML="Service Tools:
[F] FPS counter
[P] performance profile
[H] halt/resume render
[W] wireframes
[L] lights
[S] skeletons
[N] normals",o.innerHTML+="
[G] glTF export
[U] USDZ export
[M] materials stats
[T] terminate",t.appendChild(o)}static hideServiceKeysHelp(e){e.container.querySelector("#v3d-debug-info-help").remove()}}const m6={prepareRenderer:function(n){nr.getGPUVendor(n),nr.getGPUModel(n);const e=nr.checkAndroid();n.compatSettings.gtaoDisableBkgFix=e}},g6=new N,eye=new It,_6=new N;class tye extends kt{constructor(e=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.style.pointerEvents="auto",this.element.setAttribute("draggable",!1),this.addEventListener("removed",(function(){this.traverse((function(t){t.element instanceof t.element.ownerDocument.defaultView.Element&&t.element.parentNode!==null&&t.element.remove()}))}))}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}}const Ta=new Ue,nye=new Ue;class v6{constructor(e){const t=this;let r,o,i,a;const s={camera:{style:""},objects:new WeakMap};this.domElement=e;const l=document.createElement("div");l.id="v3d-css-render-view",l.style.transformOrigin="0 0",l.style.pointerEvents="none",l.style.position="absolute",l.style.zIndex="-2",e.appendChild(l),this.viewElement=l;const c=document.createElement("div");function u(m){return Math.abs(m)<1e-10?0:m}function d(m){const g=m.elements;return"matrix3d("+u(g[0])+","+u(-g[1])+","+u(g[2])+","+u(g[3])+","+u(g[4])+","+u(-g[5])+","+u(g[6])+","+u(g[7])+","+u(g[8])+","+u(-g[9])+","+u(g[10])+","+u(g[11])+","+u(g[12])+","+u(-g[13])+","+u(g[14])+","+u(g[15])+")"}function f(m){const g=m.elements;return"translate(-50%,-50%)"+("matrix3d("+u(g[0])+","+u(g[1])+","+u(g[2])+","+u(g[3])+","+u(-g[4])+","+u(-g[5])+","+u(-g[6])+","+u(-g[7])+","+u(g[8])+","+u(g[9])+","+u(g[10])+","+u(g[11])+","+u(g[12])+","+u(g[13])+","+u(g[14])+","+u(g[15])+")")}function h(m){m.isCSS3DObject&&(m.element.style.display="none");for(let g=0,_=m.children.length;g<_;g++)h(m.children[g])}function p(m,g,_,A){if(m.visible!==!1){if(m.isCSS3DObject){const y=m.layers.test(_.layers)===!0,b=m.element;if(b.style.display=y===!0?"":"none",y===!0){let E;m.onBeforeRender(t,g,_),m.isCSS3DSprite?(Ta.copy(_.matrixWorldInverse),Ta.transpose(),m.rotation2D!==0&&Ta.multiply(nye.makeRotationZ(m.rotation2D)),m.matrixWorld.decompose(g6,eye,_6),Ta.setPosition(g6),Ta.scale(_6),Ta.elements[3]=0,Ta.elements[7]=0,Ta.elements[11]=0,Ta.elements[15]=1,E=f(Ta)):E=f(m.matrixWorld);const x=s.objects.get(m);if(x===void 0||x.style!==E){b.style.transform=E;const w={style:E};s.objects.set(m,w)}b.parentNode!==c&&c.appendChild(b),m.onAfterRender(t,g,_)}}for(let y=0,b=m.children.length;y + + gl_FragColor = linearToOutputTexel(gl_FragColor); + } + `}),this.shader.map=n,this.shader.uniforms.cubemap.value=n,this.planeMesh=new Mt(new ms(2,2),this.shader),this.scene=new jr,this.scene.add(this.camera),this.scene.add(this.planeMesh)}function s3(n,e,t,{camPos:r=new N,clipStart:o=.1,clipEnd:i=100}={}){nr.checkHalfFloatTex(e,!0)||(console.warn("v3d.RenderUtils: disabling half float cubemaps"),t.texture.type=1009);const a=new a0(o,i,t);a.position.copy(r);let s=n.worldMaterial;if(s!==null&&s.isMeshNodeMaterial){const l=new Mt(new nc(1,1,1),s);l.material.side=1,l.material.defines.WORLD_NODES=1,new a0(.1,10,t).update(e,l),l.geometry.disposeBoundsTree&&l.geometry.disposeBoundsTree(),l.geometry.dispose();const c=n.background;n.background=null;const u=e.autoClearColor;e.autoClearColor=!1,a.update(e,n),e.autoClearColor=u,n.background=c}else a.update(e,n);return a.renderTarget}function A6(n,e,t,r){e.isMeshNodeMaterial||console.error("v3d.RenderUtils.renderWorldNodeMatToCubemap(): material is not an instance of MeshNodeMaterial.");const o=new jr;o.worldMaterial=e;const i=new hh(t,r);return i.texture.name="WorldNodesCubemap",s3(o,n,i)}function rye(n){const e=n.layers.mask;return n.layers.set(0),n.isArrayCamera&&(n.layers.enable(1),n.layers.enable(2)),n.layers.enable(3),n.layers.enable(4),n.layers.enable(5),n.layers.enable(6),n.layers.enable(7),e}Gh.prototype={constructor:Gh,render:function(n,e,t=1){var r=n.toneMapping,o=n.toneMappingExposure,i=n.getRenderTarget();n.toneMapping=1,n.toneMappingExposure=t;for(var a=0;a<6;a++)n.setRenderTarget(e,a),this.shader.uniforms.faceIdx.value=a,n.render(this.scene,this.camera);n.toneMapping=r,n.toneMappingExposure=o,n.setRenderTarget(i)},dispose:function(){this.planeMesh.geometry.dispose(),this.planeMesh.material.dispose()}};var oye=Object.freeze({__proto__:null,assignAllLayersMask:rye,renderSceneToCubemap:s3,renderWorldNodeMatToCubemap:A6});const p1=new Tn,Hh=new ni,iye=new Ue,aye=new N,sye=new N;class l3 extends kt{constructor(e=256){super(),this.isCubeReflectionProbe=!0,this.type="CubeReflectionProbe",this.influenceType=1,this.influenceDistance=1,this.parallaxType=1,this.parallaxDistance=1,this.probeClipStart=.1,this.probeClipEnd=100,this.probeIntensity=1,this.visibilityGroup=null,this.visibilityGroupInv=!1,this.influenceGroup=null,this.influenceGroupInv=!1,this._renderTargetCube=new hh(e,{encoding:3001,format:1023,generateMipmaps:!0,minFilter:1008,type:1016}),this._renderTargetCube.texture.name="CubeReflectionProbe.ini",this._exposureRenderTargetCube=this._renderTargetCube.clone(),this._renderTargetCube.texture.name="CubeReflectionProbe.exp",this.renderTarget=null,this.matrixWorldInverse=new Ue}setSize(e){this._renderTargetCube.setSize(e,e),this._exposureRenderTargetCube.setSize(e,e)}setEncoding(e){this._renderTargetCube.texture.encoding=e,this._exposureRenderTargetCube.texture.encoding=e}intersectsMesh(e){let t=!1;const r=e.geometry,o=r.boundsTree,i=iye;switch(i.copy(e.matrixWorld).invert(),i.multiply(this.matrixWorld),this.influenceType){case 0:t=!0;break;case 1:Hh.center.setScalar(0),Hh.radius=this.influenceDistance,Hh.applyMatrix4(i),o?t=o.intersectsSphere(Hh):(r.boundingBox===null&&r.computeBoundingBox(),t=r.boundingBox.intersectsSphere(Hh));break;case 2:const a=aye.setScalar(0),s=sye.setScalar(2*this.influenceDistance);p1.setFromCenterAndSize(a,s),o?t=o.intersectsBox(p1,i):(p1.applyMatrix4(i),r.boundingBox===null&&r.computeBoundingBox(),t=r.boundingBox.intersectsBox(p1))}return t}update(e,t){const r={};e.traverse((l=>{!l.isCubeReflectionProbe&&this._isVisible(l)||(r[l.id]=l.layers.mask,l.layers.disableAll())}));const o=e.worldMaterial,i=o!==null&&o.isMeshNodeMaterial&&o.needsLightPathDir();let a;i&&(a=o.defines.LIGHT_PATH_IS_CAM_RAY,o.defines.LIGHT_PATH_IS_CAM_RAY=0),s3(e,t,this._renderTargetCube,{camPos:this.position,clipStart:this.probeClipStart,clipEnd:this.probeClipEnd}),this._exposureRenderTargetCube.texture.type=this._renderTargetCube.texture.type;const s=new Gh(this._renderTargetCube.texture);s.render(t,this._exposureRenderTargetCube,this.probeIntensity),s.dispose(),this.renderTarget=this.onUpdate(this._exposureRenderTargetCube),i&&(o.defines.LIGHT_PATH_IS_CAM_RAY=a),e.traverse((l=>{!l.isCubeReflectionProbe&&this._isVisible(l)||(l.layers.mask=r[l.id])}))}onUpdate(e){return e}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)}copy(e){return super.copy(e),this.influenceType=e.influenceType,this.influenceDistance=e.influenceDistance,this.parallaxType=e.parallaxType,this.parallaxDistance=e.parallaxDistance,this.probeClipStart=e.probeClipStart,this.probeClipEnd=e.probeClipEnd,this.probeIntensity=e.probeIntensity,this.visibilityGroup=e.visibilityGroup,this.visibilityGroupInv=e.visibilityGroupInv,this.influenceGroup=e.influenceGroup,this.influenceGroupInv=e.influenceGroupInv,this.setSize(e._renderTargetCube.width),this.matrixWorldInverse.copy(e.matrixWorldInverse),this}dispose(){this._renderTargetCube!==null&&this._renderTargetCube.dispose(),this._exposureRenderTargetCube!==null&&this._exposureRenderTargetCube.dispose(),this.renderTarget!==null&&(this.renderTarget.dispose(),this.renderTarget=null),this.dispatchEvent({type:"dispose"})}_isVisible(e){return this.visibilityGroup===null||!e.isMesh?!0:e.groupNames.indexOf(this.visibilityGroup)!==-1^this.visibilityGroupInv}}class c3{constructor(e,t){if(this.renderer=e,t===void 0){const r=e.getSize(new be);this._pixelRatio=e.getPixelRatio(),this._width=r.width,this._height=r.height,(t=new nn(Math.floor(this._width*this._pixelRatio),Math.floor(this._height*this._pixelRatio))).texture.name="EffectComposer.rt1"}else this._pixelRatio=1,this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new bs(Tt.copy),this.clock=new Ca}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(Math.floor(this._width*this._pixelRatio),Math.floor(this._height*this._pixelRatio))}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(Math.floor(this._width*this._pixelRatio),Math.floor(this._height*this._pixelRatio))}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t-1&&(r=o+1);this.insertPass(e,r)}enableAllPasses(){for(let e=0;e{var n=Xr&&Xr.tagName.toUpperCase()==="SCRIPT"&&Xr.src||new URL("configurator.iife.js",document.baseURI).href;return function(e){e=(e=e||{})!==void 0?e:{};var t,r,o=Object.assign;e.ready=new Promise((function(B,V){t=B,r=V}));var i,a,s,l,c,u,d=o({},e),f=typeof window=="object",h=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",u=()=>{c||(l=require("fs"),c=require("path"))},i=function(B,V){var Y=U(B);return Y?V?Y:Y.toString():(u(),B=c.normalize(B),l.readFileSync(B,V?null:"utf8"))},s=B=>{var V=i(B,!0);return V.buffer||(V=new Uint8Array(V)),V},a=(B,V,Y)=>{var le=U(B);le&&V(le),u(),B=c.normalize(B),l.readFile(B,(function(me,fe){me?Y(me):V(fe.buffer)}))},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",(function(B){if(!(B instanceof J))throw B})),process.on("unhandledRejection",(function(B){throw B})),e.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:typeof document<"u"&&document.currentScript&&(m=document.currentScript.src),n&&(m=n),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",i=B=>{try{var V=new XMLHttpRequest;return V.open("GET",B,!1),V.send(null),V.responseText}catch(le){var Y=U(B);if(Y)return(function(me){for(var fe=[],te=0;te255&&(de&=255),fe.push(String.fromCharCode(de))}return fe.join("")})(Y);throw le}},h&&(s=B=>{try{var V=new XMLHttpRequest;return V.open("GET",B,!1),V.responseType="arraybuffer",V.send(null),new Uint8Array(V.response)}catch(le){var Y=U(B);if(Y)return Y;throw le}}),a=(B,V,Y)=>{var le=new XMLHttpRequest;le.open("GET",B,!0),le.responseType="arraybuffer",le.onload=()=>{if(le.status==200||le.status==0&&le.response)V(le.response);else{var me=U(B);me?V(me.buffer):Y()}},le.onerror=Y,le.send(null)}),e.print||console.log.bind(console);var g,_,A=e.printErr||console.warn.bind(console);o(e,d),d=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(g=e.wasmBinary),e.noExitRuntime,typeof WebAssembly!="object"&&H("no native wasm support detected");var y=!1;function b(B){return e["_"+B]}function E(B,V,Y,le,me){var fe={string:function(ct){var Vt=0;if(ct!=null&&ct!==0){var En=1+(ct.length<<2);(function(Rt,pe,Te){(function(Ce,Zt,rt,rn){if(!(rn>0))return 0;for(var Di=rt,xo=rt+rn-1,Eo=0;Eo=55296&&jn<=57343&&(jn=65536+((1023&jn)<<10)|1023&Ce.charCodeAt(++Eo)),jn<=127){if(rt>=xo)break;Zt[rt++]=jn}else if(jn<=2047){if(rt+1>=xo)break;Zt[rt++]=192|jn>>6,Zt[rt++]=128|63&jn}else if(jn<=65535){if(rt+2>=xo)break;Zt[rt++]=224|jn>>12,Zt[rt++]=128|jn>>6&63,Zt[rt++]=128|63&jn}else{if(rt+3>=xo)break;Zt[rt++]=240|jn>>18,Zt[rt++]=128|jn>>12&63,Zt[rt++]=128|jn>>6&63,Zt[rt++]=128|63&jn}}Zt[rt]=0})(Rt,L,pe,Te)})(ct,Vt=I(En),En)}return Vt},array:function(ct){var Vt=I(ct.length);return(function(En,Rt){w.set(En,Rt)})(ct,Vt),Vt}};function te(ct){return V==="string"?(Vt=ct)?(function(Rt,pe,Te){for(var Ce=pe+Te,Zt=pe;Rt[Zt]&&!(Zt>=Ce);)++Zt;if(Zt-pe>16&&Rt.subarray&&P)return P.decode(Rt.subarray(pe,Zt));for(var rt="";pe>10,56320|1023&Eo)}}else rt+=String.fromCharCode((31&rn)<<6|Di)}else rt+=String.fromCharCode(rn)}return rt})(L,Vt,En):"":V==="boolean"?!!ct:ct;var Vt,En}var de=b(B),we=[],Ie=0;if(le)for(var Ne=0;Ne0&&(B+=V-B%V),B}function Q(B){x=B,e.HEAP8=w=new Int8Array(B),e.HEAP16=new Int16Array(B),e.HEAP32=new Int32Array(B),e.HEAPU8=L=new Uint8Array(B),e.HEAPU16=new Uint16Array(B),e.HEAPU32=new Uint32Array(B),e.HEAPF32=new Float32Array(B),e.HEAPF64=new Float64Array(B)}e.INITIAL_MEMORY;var re=[],G=[],se=[],ee=0,ie=null;function H(B){e.onAbort&&e.onAbort(B),A(B="Aborted("+B+")"),y=!0,B+=". Build with -s ASSERTIONS=1 for more info.";var V=new WebAssembly.RuntimeError(B);throw r(V),V}e.preloadedImages={},e.preloadedAudios={};var T,R,O="data:application/octet-stream;base64,";function W(B){return B.startsWith(O)}function ae(B){return B.startsWith("file://")}function ne(B){try{if(B==T&&g)return new Uint8Array(g);var V=U(B);if(V)return V;if(s)return s(B);throw"both async and sync fetching of the wasm failed"}catch(Y){H(Y)}}function oe(B){for(;B.length>0;){var V=B.shift();if(typeof V!="function"){var Y=V.func;typeof Y=="number"?V.arg===void 0?k(Y)():k(Y)(V.arg):Y(V.arg===void 0?null:V.arg)}else V(e)}}W(T="data:application/octet-stream;base64,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oCAoAgBGDQRBtKAgIABBAmoiBTYCACACIAZqLQAADQkgFCAFIARrrXxCA4NQBEAgBSEADAILQbCgICgCACEGQbigICgCACAFRgRAIAUhAgwFC0G0oCAgAEEDaiICNgIAIAUgBmotAAANCSAUIAIgBGutfEIDg1ANAEG4oCAoAgAgAkYEQEGwoCAoAgAhBgwFC0G0oCAgAEEEajYCAAwJCyACIQALIAFBsKAgKAIAIAAQDEEHIQMgDyABQZABakEYEA0NByABQQg2AgALAn9BtKAgKAIAIQBBuKAgKAIAIQUDQEEAIAAgBUYNARogASkDGCEUIAEoAgQhA0G0oCAgAEEBaiICNgIAQQdBsKAgKAIAIABqLQAAIBQgA62Ip0H/AXFHDQEaIAEgA0EIaiIDNgIEIAIhACADQSBJDQALIAFBADYCBCABQgA3AxhBAQsiA0EBRw0GIAFBCTYCACABQQw2AqwBC0EAIQMgASABKAKoASIAakGwAWpBtKAgKAIAIgJBsKAgKAIAakG4oCAoAgAgAmsiAiABKAKsASAAayIAIAAgAksbIgAQAkG0oCBBtKAgKAIAIABqNgIAIAFBACABKAKoASAAaiIAIAAgASgCrAFGIgAbNgKoASAARQ0FQQchAAJAIAEvALoBQdm0AUcNACABQbQBakEGQQAQAyABKACwAUcNACABNQC0ASABKQOAAUICiFINACABLQC4AQ0AQQFBByABKAIgIAEtALkBRhshAAsgACEDDAULIAEgBiACEAxBACEDDAQLIAEgFDcDMCAEQQBIBEAgASgCBCICRQRAIAFCADcDCAsgACAFIAAgBUsbIQQDQCAAIARGBEBBByEDDAYLIAAgCGotAAghAyABIABBAWoiADYCqAEgASABKQMIIANB/wBxrSACrYaEIhU3AwgCQCADQYABcUUEQCADDQEgAkUNAUEHIQMMBwtBByEDIAEgAkEHaiICNgIEIAJBP0cNAQwGCwsgAUEANgIECyABIBU3AzggBSAAa0ECSQRAQQchAwwECyABIABBAWoiAjYCqAEgACAIai0ACEEhRwRAQQYhAwwECyABIABBAmoiBDYCqAEgAiAIai0ACEEBRwRAQQYhAwwEC0EHIQMgBCAFRg0DIAEgAEEDajYCqAEgASgCsAkhAEEGIQICQCAEIAhqLQAIIgNBJ0sNACAA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")||(R=T,T=e.locateFile?e.locateFile(R,m):m+R);var F=[];function k(B){var V=F[B];return V||(B>=F.length&&(F.length=B+1),F[B]=V=C.get(B)),V}function q(B){try{return _.grow(B-x.byteLength+65535>>>16),Q(_.buffer),1}catch{}}var j=typeof atob=="function"?atob:function(B){var V,Y,le,me,fe,te,de="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",we="",Ie=0;B=B.replace(/[^A-Za-z0-9\+\/\=]/g,"");do V=de.indexOf(B.charAt(Ie++))<<2|(me=de.indexOf(B.charAt(Ie++)))>>4,Y=(15&me)<<4|(fe=de.indexOf(B.charAt(Ie++)))>>2,le=(3&fe)<<6|(te=de.indexOf(B.charAt(Ie++))),we+=String.fromCharCode(V),fe!==64&&(we+=String.fromCharCode(Y)),te!==64&&(we+=String.fromCharCode(le));while(Ie>>=0)>Y)return!1;for(var le=1;le<=4;le*=2){var me=V*(1+.2/le);if(me=Math.min(me,B+100663296),q(Math.min(Y,D(Math.max(B,me),65536))))return!0}return!1}};(function(){var B={a:z};function V(me,fe){var te,de=me.exports;e.asm=de,Q((_=e.asm.c).buffer),C=e.asm.o,te=e.asm.d,G.unshift(te),(function(){if(ee--,e.monitorRunDependencies&&e.monitorRunDependencies(ee),ee==0&&ie){var we=ie;ie=null,we()}})()}function Y(me){V(me.instance)}function le(me){return(function(){if(!g&&(f||h)){if(typeof fetch=="function"&&!ae(T))return fetch(T,{credentials:"same-origin"}).then((function(fe){if(!fe.ok)throw"failed to load wasm binary file at '"+T+"'";return fe.arrayBuffer()})).catch((function(){return ne(T)}));if(a)return new Promise((function(fe,te){a(T,(function(de){fe(new Uint8Array(de))}),te)}))}return Promise.resolve().then((function(){return ne(T)}))})().then((function(fe){return WebAssembly.instantiate(fe,B)})).then((function(fe){return fe})).then(me,(function(fe){A("failed to asynchronously prepare wasm: "+fe),H(fe)}))}if(ee++,e.monitorRunDependencies&&e.monitorRunDependencies(ee),e.instantiateWasm)try{return e.instantiateWasm(B,V)}catch(me){return A("Module.instantiateWasm callback failed with error: "+me),!1}(g||typeof WebAssembly.instantiateStreaming!="function"||W(T)||ae(T)||typeof fetch!="function"?le(Y):fetch(T,{credentials:"same-origin"}).then((function(me){return WebAssembly.instantiateStreaming(me,B).then(Y,(function(fe){return A("wasm streaming compile failed: "+fe),A("falling back to ArrayBuffer instantiation"),le(Y)}))}))).catch(r)})(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.d).apply(null,arguments)},e._init_decompressor=function(){return(e._init_decompressor=e.asm.e).apply(null,arguments)},e._decompress=function(){return(e._decompress=e.asm.f).apply(null,arguments)},e._get_in_buffer_ptr=function(){return(e._get_in_buffer_ptr=e.asm.g).apply(null,arguments)},e._get_out_buffer_ptr=function(){return(e._get_out_buffer_ptr=e.asm.h).apply(null,arguments)},e._in_buffer_set_pos=function(){return(e._in_buffer_set_pos=e.asm.i).apply(null,arguments)},e._in_buffer_set_size=function(){return(e._in_buffer_set_size=e.asm.j).apply(null,arguments)},e._out_buffer_set_pos=function(){return(e._out_buffer_set_pos=e.asm.k).apply(null,arguments)},e._out_buffer_set_size=function(){return(e._out_buffer_set_size=e.asm.l).apply(null,arguments)},e._get_curr_output_length=function(){return(e._get_curr_output_length=e.asm.m).apply(null,arguments)},e._is_input_end_reached=function(){return(e._is_input_end_reached=e.asm.n).apply(null,arguments)};var v,M=e.stackSave=function(){return(M=e.stackSave=e.asm.p).apply(null,arguments)},S=e.stackRestore=function(){return(S=e.stackRestore=e.asm.q).apply(null,arguments)},I=e.stackAlloc=function(){return(I=e.stackAlloc=e.asm.r).apply(null,arguments)};function J(B){this.name="ExitStatus",this.message="Program terminated with exit("+B+")",this.status=B}function $(B){function V(){v||(v=!0,e.calledRun=!0,y||(oe(G),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),(function(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)Y=e.postRun.shift(),se.unshift(Y);var Y;oe(se)})()))}ee>0||((function(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)Y=e.preRun.shift(),re.unshift(Y);var Y;oe(re)})(),ee>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),V()}),1)):V()))}if(e.cwrap=function(B,V,Y,le){var me=(Y=Y||[]).every((function(fe){return fe==="number"}));return V!=="string"&&me&&!le?b(B):function(){return E(B,V,Y,arguments)}},ie=function B(){v||$(),v||(ie=B)},e.run=$,e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return $(),e.ready}})();const b6=["","Memory allocation failed","Memory usage limit reached","Unsupported check; not verifying file integrity","Not an .xz file","Unsupported options in the .xz headers","File is corrupt","Unknown decompression bug"];class Wh{constructor(e){this.manager=e!==void 0?e:pb,this.crossOrigin="Anonymous",this.xz=null}init(){return this.xz?Promise.resolve():y6().then((e=>{this._emInitDecompressor=e.cwrap("init_decompressor","number"),this._emDecompress=e.cwrap("decompress","number"),this._emGetInBufferPtr=e.cwrap("get_in_buffer_ptr","number"),this._emGetOutBufferPtr=e.cwrap("get_out_buffer_ptr","number"),this._emInBufferSetPos=e.cwrap("in_buffer_set_pos",null,["number"]),this._emInBufferSetSize=e.cwrap("in_buffer_set_size",null,["number"]),this._emOutBufferSetPos=e.cwrap("out_buffer_set_pos",null,["number"]),this._emOutBufferSetSize=e.cwrap("out_buffer_set_size",null,["number"]),this._emGetCurrOutputLength=e.cwrap("get_curr_output_length","number"),this._emIsInputEndReached=e.cwrap("is_input_end_reached","number"),this.xz=e}))}load(e,t,r,o){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e);const i=this,a=na.get(e);if(a!==void 0)return i.manager.itemStart(e),setTimeout((function(){t&&t(a),i.manager.itemEnd(e)}),0),a;const s=this.init(),l=new XMLHttpRequest;return l.open("GET",e,!0),l.addEventListener("load",(function(c){const u=c.target.response;this.status===200||this.status===0?(this.status===0&&console.warn("v3d.XZLoader: HTTP Status 0 received."),s.then((()=>{i.decompressArrayBuffer(u,(function(d){setTimeout((function(){t&&t(d),i.manager.itemEnd(e),na.add(e,d)}),1)}),(function(d){r&&r((2+1*d)/3)}),(function(d){o&&o(d),i.manager.itemEnd(e),i.manager.itemError(e)}))}))):(o&&o(c),i.manager.itemEnd(e),i.manager.itemError(e))}),!1),r&&l.addEventListener("progress",(function(c){let u;u=c.lengthComputable?c.loaded/c.total:1,r(2*u/3)}),!1),l.addEventListener("error",(function(c){o&&o(c),i.manager.itemEnd(e),i.manager.itemError(e)}),!1),l.responseType="arraybuffer",l.send(null),i.manager.itemStart(e),l}setCrossOrigin(e){return this.crossOrigin=e,this}setPath(e){return this.path=e,this}decompressArrayBuffer(e,t,r,o){const i=this;function a(m){const g=i._emGetInBufferPtr();i.xz.HEAPU8.set(m,g),i._emInBufferSetPos(0),i._emInBufferSetSize(m.length),s()}function s(){i._emOutBufferSetPos(0)}const l=i._emInitDecompressor();if(l!=0)return console.error("XZLoader._emInitDecompressor: error code "+l+" ("+b6[l]+")"),void(o&&o(l));const c=new Uint8Array(e),u=c.length,d=[];let f=0,h=Math.min(524288,u),p=0;a(c.subarray(f,h)),(function m(){const g=i._emDecompress();if(g)console.error("XZLoader._emDecompress: error code "+g+" ("+b6[g]+")"),o&&o(g);else{const _=i._emGetCurrOutputLength();if(d.push((function(A){const y=i._emGetOutBufferPtr();return new Uint8Array(i.xz.HEAPU8.subarray(y,y+A))})(_)),s(),i._emIsInputEndReached()&&(f=h,h=Math.min(h+524288,u),a(c.subarray(f,h))),r&&r(f/u),f==h){const A=d.reduce((function(E,x,w,L){return E+x.length}),0),y=new Uint8Array(A);let b=0;d.forEach((function(E){y.set(E,b),b+=E.length})),t&&t(y.buffer)}else p++,p%2==0?setTimeout(m,1):m()}})()}}class u3 extends Ci{constructor(e){super(e),this.reversed=!1}load(e,t,r,o){const i=this,a=new Si(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.load(e,(function(s){t(i.parse(s))}),r,o)}parse(e){function t(r){var o,i=[];r.forEach((function(s){s.type.toLowerCase()==="m"?(o=[s],i.push(o)):s.type.toLowerCase()!=="z"&&o.push(s)}));var a=[];return i.forEach((function(s){var l={type:"m",x:s[s.length-1].x,y:s[s.length-1].y};a.push(l);for(var c=s.length-1;c>0;c--){var u=s[c];l={type:u.type},u.x2!==void 0&&u.y2!==void 0?(l.x1=u.x2,l.y1=u.y2,l.x2=u.x1,l.y2=u.y1):u.x1!==void 0&&u.y1!==void 0&&(l.x1=u.x1,l.y1=u.y1),l.x=s[c-1].x,l.y=s[c-1].y,a.push(l)}})),a}return typeof opentype>"u"?(console.warn("v3d.TTFLoader: The loader requires opentype.js. Make sure it's included before using the loader."),null):(function(r,o){for(var i=Math.round,a={},s=1e3/(r.unitsPerEm||2048),l=r.encoding.cmap.glyphIndexMap,c=Object.keys(l),u=0;u(f=m.indexOf(` +`))&&h=l.byteLength||!(p=r(l)))return t(1,"no header found");if(!(m=p.match(/^#\?(\S+)/)))return t(3,"bad initial token");for(h.valid|=1,h.programtype=m[1],h.string+=p+` +`;p=r(l),p!==!1;)if(h.string+=p+` +`,p.charAt(0)!=="#"){if((m=p.match(c))&&(h.gamma=parseFloat(m[1])),(m=p.match(u))&&(h.exposure=parseFloat(m[1])),(m=p.match(d))&&(h.valid|=2,h.format=m[1]),(m=p.match(f))&&(h.valid|=4,h.height=parseInt(m[1],10),h.width=parseInt(m[2],10)),2&h.valid&&4&h.valid)break}else h.comments+=p+` +`;return 2&h.valid?4&h.valid?h:t(3,"missing image size specifier"):t(3,"missing format specifier")})(a);if(s!==-1){const l=s.width,c=s.height,u=(function(d,f,h){const p=f;if(p<8||p>32767||d[0]!==2||d[1]!==2||128&d[2])return new Uint8Array(d);if(p!==(d[2]<<8|d[3]))return t(3,"wrong scanline width");const m=new Uint8Array(4*f*h);if(!m.length)return t(4,"unable to allocate buffer space");let g=0,_=0;const A=4*p,y=new Uint8Array(4),b=new Uint8Array(A);let E=h;for(;E>0&&_d.byteLength)return t(1);if(y[0]=d[_++],y[1]=d[_++],y[2]=d[_++],y[3]=d[_++],y[0]!=2||y[1]!=2||(y[2]<<8|y[3])!=p)return t(3,"bad rgbe scanline format");let x,w=0;for(;w128;if(C&&(x-=128),x===0||w+x>A)return t(3,"bad scanline data");if(C){const P=d[_++];for(let D=0;D0)return;this._traverseDisableOther(e),l.reflect(s).negate(),l.add(o),a.extractRotation(t.matrixWorld);const c=this.lookAtPosition;c.set(0,0,-1),c.applyMatrix4(a),c.add(i);const u=this.target;u.subVectors(o,c),u.reflect(s).negate(),u.add(o);const d=this.virtualCamera;d.position.copy(l),d.up.set(0,1,0),d.up.applyMatrix4(a),d.up.reflect(s),d.lookAt(u),d.far=t.far,d.updateMatrixWorld();const f=d.projectionMatrix;f.copy(t.projectionMatrix);const h=this.textureMatrix;h.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),h.multiply(f),h.multiply(d.matrixWorldInverse);const p=this.reflectorPlane;p.setFromNormalAndCoplanarPoint(s,o),p.applyMatrix4(d.matrixWorldInverse);const m=this.clipPlane;m.set(p.normal.x,p.normal.y,p.normal.z,p.constant),jh.x=(Math.sign(m.x)+f.elements[8])/f.elements[0],jh.y=(Math.sign(m.y)+f.elements[9])/f.elements[5],jh.z=-1,jh.w=(1+f.elements[10])/f.elements[14],m.multiplyScalar(2/m.dot(jh)),f.elements[2]=m.x,f.elements[6]=m.y,f.elements[10]=m.z+1-this.probeClipStart,f.elements[14]=m.w;const g=r.getRenderTarget(),_=r.xr.enabled,A=r.shadowMap.autoUpdate,y=r.useOIT;r.xr.enabled=!1,r.shadowMap.autoUpdate=!1,r.useOIT=!1,r.setRenderTarget(this.renderTarget),r.state.buffers.depth.setMask(!0),r.autoClear===!1&&r.clear(),r.render(e,d),r.xr.enabled=_,r.shadowMap.autoUpdate=A,r.useOIT=y,r.setRenderTarget(g);const b=t.viewport;b!==void 0&&r.state.viewport(b),f3.forEach(((E,x)=>{x.layers.mask=E})),f3.clear()}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)}copy(e){return super.copy(e),this.influenceDistance=e.influenceDistance,this.probeClipStart=e.probeClipStart,this.visibilityGroup=e.visibilityGroup,this.visibilityGroupInv=e.visibilityGroupInv,this}dispose(){this.renderTarget!==null&&(this.renderTarget.dispose(),this.renderTarget=null),this.dispatchEvent({type:"dispose"})}_isVisible(e){return this.visibilityGroup===null||!e.isMesh?!0:e.groupNames.indexOf(this.visibilityGroup)!==-1^this.visibilityGroupInv}}class S6{static init(e,t){e!==void 0&&t!==void 0||console.error("RectAreaLightUniformsLib: Missing LTC data (required in Verge3D)");const r=new Float32Array(e),o=new Float32Array(t);qe.LTC_FLOAT_1=new gs(r,64,64,1023,1015,300,1001,1001,1006,1003,1),qe.LTC_FLOAT_2=new gs(o,64,64,1023,1015,300,1001,1001,1006,1003,1),qe.LTC_FLOAT_1.name="RectArea.ltc1",qe.LTC_FLOAT_2.name="RectArea.ltc2",qe.LTC_FLOAT_1.needsUpdate=!0,qe.LTC_FLOAT_2.needsUpdate=!0;const i=new Uint16Array(e.length);e.forEach((function(s,l){i[l]=mc(s)}));const a=new Uint16Array(t.length);t.forEach((function(s,l){a[l]=mc(s)})),qe.LTC_HALF_1=new gs(i,64,64,1023,1016,300,1001,1001,1006,1003,1),qe.LTC_HALF_2=new gs(a,64,64,1023,1016,300,1001,1001,1006,1003,1),qe.LTC_HALF_1.needsUpdate=!0,qe.LTC_HALF_2.needsUpdate=!0}}class h3{constructor(e){this.isFont=!0,this.type="Font",this.data=e}generateShapes(e,t=100,r="left",o="topBaseline",i=-1,a=!1){const s=[],l=dye(e,t,this.data,r,o,i,a);for(let c=0,u=l.length;c1?.5*p-m:-t.ascender/2*c;break;case"bottom":f=p-i-t.descender*c;break;case"bottomBaseline":f=p-i}for(let g=0;g=0||this.clippingGroup===null)&&!e.isAuxClippingMesh}assignToObject(e,t=0){const r=this.plane,o=e.material,i=e.geometry;if(o.clippingPlanes=o.clippingPlanes||[],o.clippingPlanes.indexOf(r)==-1&&o.clippingPlanes.push(r),o.clipShadows=this.clipShadows,o.clipIntersection=this.clipIntersection,this.crossSection){this.cleanupAuxMeshes(e);const a=new pr;a.depthWrite=!1,a.depthTest=!1,a.colorWrite=!1,a.stencilWrite=!0,a.stencilFunc=519,a.clipShadows=this.clipShadows,a.clipIntersection=this.clipIntersection;const s=!!e.isSkinnedMesh,l=e.morphTargetInfluences,c=_e(l)&&l.length>0,u=a.clone();let d;u.name="ClipCrossSectionStencilBack",u.side=1,u.clippingPlanes=[r],u.stencilFail=34055,u.stencilZFail=34055,u.stencilZPass=34055,s?(d=new x0(i,u),d.skeleton=e.skeleton):d=new Mt(i,u),d.renderOrder=t,d.name="ClipCrossSectionStencilBack",d.isAuxClippingMesh=!0,c&&(d.morphTargetInfluences=l.slice(),d.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),e.add(d);const f=a.clone();let h;f.name="ClipCrossSectionStencilFront",f.side=0,f.clippingPlanes=[r],f.stencilFail=34056,f.stencilZFail=34056,f.stencilZPass=34056,s?(h=new x0(i,f),h.skeleton=e.skeleton):h=new Mt(i,f),h.renderOrder=t+.1,h.name="ClipCrossSectionStencilFront",h.isAuxClippingMesh=!0,c&&(h.morphTargetInfluences=l.slice(),h.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),e.add(h),o.isMeshNodeMaterial&&(this._crossMatProfile=o.profile)}}createCrossSectionPlane(e,t){this.cleanupAuxMeshes();const r=new i3("ClipCrossSectionColor",this.crossSectionColor,this.crossSectionOpacity,this._crossMatProfile);r.clippingPlanes=e.filter((a=>a!==this.plane)),r.clipShadows=this.clipShadows,r.clipIntersection=this.clipIntersection,r.stencilWrite=!0,r.stencilRef=0,r.stencilFunc=517,r.stencilFail=7681,r.stencilZFail=7681,r.stencilZPass=7681,r.side=this.crossSectionRenderSide,this.crossSectionOpacity<1&&(r.transparent=!0,r.premultipliedAlpha=!0,r.blending=5,r.blendEquation=100,r.blendSrc=201,r.blendDst=205);const o=new ms(this.crossSectionSize,this.crossSectionSize);this.negated?o.rotateX(-Math.PI/2):o.rotateX(Math.PI/2);const i=new Mt(o,r);i.name="ClipCrossSectionColor",i.isAuxClippingMesh=!0,i.renderOrder=t,i.onAfterRender=function(a){a.clearStencil()},this.add(i)}cleanupAuxMeshes(e=null){if(e)for(let t=e.children.length-1;t>=0;t--){const r=e.children[t];r.isAuxClippingMesh&&r.material.clippingPlanes[0]==this.plane&&(r.geometry.dispose(),r.material.dispose(),e.remove(r))}else for(let t=this.children.length-1;t>=0;t--){const r=this.children[t];r.isAuxClippingMesh&&(r.geometry.dispose(),r.material.dispose(),this.remove(r))}}copy(e){return super.copy(e),this.plane=e.plane,this.clippingGroup=e.clippingGroup,this.clipShadows=e.clipShadows,this.negated=e.negated,this.clipIntersection=e.clipIntersection,this.crossSection=e.crossSection,this.crossSectionColor.copy(e.crossSectionColor),this.crossSectionOpacity=e.crossSectionOpacity,this.crossSectionRenderSide=e.crossSectionRenderSide,this.crossSectionSize=e.crossSectionSize,this._crossMatProfile=e._crossMatProfile,this}}class id{constuctor(){this.isConstraint=!0,this.name="",this.type="Constraint",this.mute=!1}_updateObjMatrixWorld(e){e.matrixAutoUpdate&&e.matrix.compose(e.position,e.quaternion,e.scale),e.parent==null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(e.parent.matrixWorld,e.matrix)}update(e){this.mute}copy(e){return this.name=e.name,this.mute=e.mute,this}clone(){return new this.constructor().copy(this)}}class Ao extends id{constructor(e){super(),this.isTargetConstraint=!0,this.type="TargetConstraint",this.target=e}copy(e){return super.copy(e),this.target=e.target,this}clone(){return new this.constructor(this.target).copy(this)}}const I6=new Ue,pye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2);class R6 extends Ao{constructor(e){super(e),this.isChildOfConstraint=!0,this.type="ChildOfConstraint",this.offsetMatrix=new Ue,this.fixCameraLightRotation=!1}copy(e){return super.copy(e),this.offsetMatrix.copy(e.offsetMatrix),this.fixCameraLightRotation=e.fixCameraLightRotation,this}update(e){super.update(e),this.mute||(I6.multiplyMatrices(this.target.matrixWorld,this.offsetMatrix),I6.decompose(e.position,e.quaternion,e.scale),this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(pye))}}const yo=new N,mye=new It,gye=new N;class L6 extends Ao{constructor(e){super(e),this.isCopyLocationConstraint=!0,this.type="CopyLocationConstraint",this.useX=!0,this.useY=!0,this.useZ=!0,this.invertX=!1,this.invertY=!1,this.invertZ=!1,this.useOffset=!1,this.influence=1,this._firstIteration=!0,this._objPosInit=new N,this._offset=new N}copy(e){return super.copy(e),this.useX=e.useX,this.useY=e.useY,this.useZ=e.useZ,this.invertX=e.invertX,this.invertY=e.invertY,this.invertZ=e.invertZ,this.useOffset=e.useOffset,this.influence=e.influence,this._firstIteration=!1,this}update(e){super.update(e),this.mute||(this.target.matrixWorld.decompose(yo,mye,gye),this._firstIteration&&(this._updateObjMatrixWorld(e),e.getWorldPositionNU(this._objPosInit),this._offset.subVectors(yo,this._objPosInit),this._firstIteration=!1),this.useX?(this.invertX&&(yo.x=-yo.x),this.useOffset&&(yo.x-=this._offset.x)):yo.x=this._objPosInit.x,this.useY?(this.invertY&&(yo.y=-yo.y),this.useOffset&&(yo.y-=this._offset.y)):yo.y=this._objPosInit.y,this.useZ?(this.invertZ&&(yo.z=-yo.z),this.useOffset&&(yo.z-=this._offset.z)):yo.z=this._objPosInit.z,e.position.lerpVectors(this._objPosInit,yo,this.influence),e.parent&&e.parent.worldToLocal(e.position))}}const _ye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),p3=new N,ad=new It,m3=new N;class P6 extends Ao{constructor(e){super(e),this.isCopyRotationConstraint=!0,this.type="CopyRotationConstraint",this.useX=!0,this.useY=!0,this.useZ=!0,this.invertX=!1,this.invertY=!1,this.invertZ=!1,this.mixMode="REPLACE",this.influence=1,this.fixCameraLightRotation=!1,this._firstIteration=!0,this._objQuatInit=new It}copy(e){return super.copy(e),this.useX=e.useX,this.useY=e.useY,this.useZ=e.useZ,this.invertX=e.invertX,this.invertY=e.invertY,this.invertZ=e.invertZ,this.mixMode=e.mixMode,this.influence=e.influence,this.fixCameraLightRotation=e.fixCameraLightRotation,this._firstIteration=!1,this}update(e){super.update(e),this.mute||(this.target.matrixWorld.decompose(p3,ad,m3),this._firstIteration&&(this._updateObjMatrixWorld(e),e.matrixWorld.decompose(p3,this._objQuatInit,m3),this._firstIteration=!1),e.quaternion.copy(this._objQuatInit),(this.useX||this.useY||this.useZ)&&(this.mixMode=="REPLACE"||this.mixMode=="ADD"||(this.mixMode=="BEFORE"?ad.multiply(e.quaternion):this.mixMode=="AFTER"?ad.premultiply(e.quaternion):this.mixMode),e.quaternion.slerp(ad,this.influence)),e.parent&&(e.parent.matrixWorld.decompose(p3,ad,m3),e.quaternion.premultiply(ad.invert())),this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(_ye))}}const D6=new N,B6=new It,xn=new N;class N6 extends Ao{constructor(e){super(e),this.isCopyScaleConstraint=!0,this.type="CopyScaleConstraint",this.useX=!0,this.useY=!0,this.useZ=!0,this.power=1,this.useMakeUniform=!1,this.useOffset=!1,this.useAdd=!1,this.influence=1,this._objInitScale=new N,this._volumeScaleFactor=new N,this._firstIteration=!0}copy(e){return super.copy(e),this.useX=e.useX,this.useY=e.useY,this.useZ=e.useZ,this.power=e.power,this.useMakeUniform=e.useMakeUniform,this.useOffset=e.useOffset,this.useAdd=e.useAdd,this.influence=e.influence,this._firstIteration=!1,this}update(e){if(super.update(e),!this.mute){if(this.target.matrixWorld.decompose(D6,B6,xn),this._firstIteration&&(this._updateObjMatrixWorld(e),e.matrixWorld.decompose(D6,B6,this._objInitScale),this._volumeScaleFactor.set(Math.pow(xn.x-this._objInitScale.x,3),Math.pow(xn.y-this._objInitScale.y,3),Math.pow(xn.z-this._objInitScale.z,3)),this._firstIteration=!1),this.useMakeUniform){let t=1;this.useX&&(t*=xn.x),this.useY&&(t*=xn.y),this.useZ&&(t*=xn.z),t=Math.pow(Math.cbrt(t),this.power),xn.set(t,t,t),this.useOffset&&(this.useAdd?(xn.add(this._objInitScale),xn.addScalar(-1)):xn.multiply(this._objInitScale))}else xn.set(this.useX?Math.pow(xn.x,this.power):this._objInitScale.x,this.useY?Math.pow(xn.y,this.power):this._objInitScale.y,this.useZ?Math.pow(xn.z,this.power):this._objInitScale.z),this.useOffset&&(this.useAdd?xn.set(this.useX?xn.x+this._objInitScale.x-1:xn.x,this.useY?xn.y+this._objInitScale.y-1:xn.y,this.useZ?xn.z+this._objInitScale.z-1:xn.z):xn.set(this.useX?xn.x*this._objInitScale.x:xn.x,this.useY?xn.y*this._objInitScale.y:xn.y,this.useZ?xn.z*this._objInitScale.z:xn.z));e.scale.copy(this._objInitScale),e.scale.lerp(xn,this.influence)}}}const vye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),m1=new Ue,O6=new N,k6=new It,F6=new N;class V6 extends Ao{constructor(e){super(e),this.isCopyTransformsConstraint=!0,this.type="CopyTransformsConstraint",this.mixMode="REPLACE",this.influence=1,this.fixCameraLightRotation=!1,this._firstIteration=!0,this._objMatrixWorldInit=new Ue}copy(e){return super.copy(e),this.mixMode=e.mixMode,this.influence=e.influence,this.fixCameraLightRotation=e.fixCameraLightRotation,this._firstIteration=!0,this}update(e){super.update(e),this.mute||(this._firstIteration&&(this._updateObjMatrixWorld(e),this._objMatrixWorldInit.copy(e.matrixWorld),this._firstIteration=!1),m1.copy(this.target.matrixWorld),this.mixMode=="REPLACE"||(this.mixMode=="BEFORE"?m1.multiply(this._objMatrixWorldInit):this.mixMode=="AFTER"&&m1.premultiply(this._objMatrixWorldInit)),m1.decompose(O6,k6,F6),this._objMatrixWorldInit.decompose(e.position,e.quaternion,e.scale),e.position.lerp(O6,this.influence),e.quaternion.slerp(k6,this.influence),e.scale.lerp(F6,this.influence),this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(vye))}}const Aye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),g3=new N,vc=new It,_3=new N,U6=new N,ml=new N,gl=new N,sd=new N,v3={X:0,Y:1,Z:2,"-X":3,"-Y":4,"-Z":5},A3={0:new N(1,0,0),1:new N(0,1,0),2:new N(0,0,1),3:new N(-1,0,0),4:new N(0,-1,0),5:new N(0,0,-1)};class z6 extends Ao{constructor(e){super(e),this.isDampedTrackConstraint=!0,this.type="DampedTrackConstraint",this.trackAxis="X",this.influence=1,this.fixCameraLightRotation=!1,this._firstIteration=!0}copy(e){return super.copy(e),this.trackAxis=e.trackAxis,this.influence=e.influence,this.fixCameraLightRotation=e.fixCameraLightRotation,this._firstIteration=!1,this}update(e){if(super.update(e),!this.mute&&(this.target.matrixWorld.decompose(g3,vc,_3),this._firstIteration&&(this._updateObjMatrixWorld(e),this._firstIteration=!1),e.matrixWorld.decompose(U6,vc,_3),ml.subVectors(g3,U6),ml.length()!=0)){let t;if(ml.normalize(),gl.copy(A3[v3[this.trackAxis]]),gl.applyQuaternion(vc),gl.length()==0&&gl.copy(A3[v3[this.trackAxis]]),gl.normalize(),sd.crossVectors(gl,ml),t=gl.angleTo(ml),sd.length()t.x?t.copy(kr):t.x=Math.max(t.x,gn.x);break;case"Y":gn.y+=o*r.y,Fr.subVectors(t,gn),i=vr.dot(Fr),vr.multiplyScalar(i),kr.subVectors(Fr,vr).add(gn),kr.y>t.y?t.copy(kr):t.y=Math.max(t.y,gn.y);break;case"Z":gn.z+=o*r.z,Fr.subVectors(t,gn),i=vr.dot(Fr),vr.multiplyScalar(i),kr.subVectors(Fr,vr).add(gn),kr.z>t.z?t.copy(kr):t.z=Math.max(t.z,gn.z);break;case"-X":gn.x+=o*r.x,Fr.subVectors(t,gn),i=vr.dot(Fr),vr.multiplyScalar(i),kr.subVectors(Fr,vr).add(gn),kr.x=this.distance&&(this._clampSurf=1,this._distInit!=0&&(this._sfac=this.distance/this._distInit)):this.limitMode=="LIMITDIST_OUTSIDE"?this._distInit<=this.distance&&(this._clampSurf=1,this._distInit!=0&&(this._sfac=this.distance/this._distInit)):this.limitMode=="LIMITDIST_ONSURFACE"&&this._distInit-this.distance!=0&&(this._clampSurf=1,this._distInit!=0&&(this._sfac=this.distance/this._distInit)),this._clampSurf&&(e.position.lerpVectors(this._objPosInit,y3,(1-this._sfac)*this.influence),e.parent&&e.parent.worldToLocal(e.position)))}}const _l=new N,g1=new N,ld=new N,b3=new Ue;class j6 extends Ao{constructor(e=null){super(e),this.isLimitLocationConstraint=!0,this.type="LimitLocationConstraint",this.space=2,this.min=new N().setScalar(-1/0),this.max=new N().setScalar(1/0)}copy(e){return super.copy(e),this.min.copy(e.min),this.max.copy(e.max),this.space=e.space,this}update(e){if(super.update(e),!this.mute)switch(this.space){case 0:this._updateObjMatrixWorld(e),_l.setFromMatrixPosition(e.matrixWorld),_l.clamp(this.min,this.max),ld.copy(_l),e.parent!==null&&ld.applyMatrix4(b3.copy(e.parent.matrixWorld).invert()),e.position.copy(ld);break;case 1:this.target!==null&&(this._updateObjMatrixWorld(e),this._updateObjMatrixWorld(this.target),_l.setFromMatrixPosition(e.matrixWorld),g1.copy(_l),g1.applyMatrix4(b3.copy(this.target.matrixWorld).invert()),g1.clamp(this.min,this.max),_l.copy(g1),_l.applyMatrix4(this.target.matrixWorld),ld.copy(_l),e.parent!==null&&ld.applyMatrix4(b3.copy(e.parent.matrixWorld).invert()),e.position.copy(ld));break;default:e.position.clamp(this.min,this.max)}}}const Ia=new $i;class Q6 extends id{constructor(){super(),this.isLimitRotationConstraint=!0,this.type="LimitRotationConstraint",this.axis="Y",this.min=0,this.max=2*Math.PI}copy(e){return super.copy(e),this.axis=e.axis,this.min=e.min,this.max=e.max,this}update(e){super.update(e),this.mute||(this.axis=="X"?(Ia.setFromQuaternion(e.quaternion,"XYZ"),Ia.x=this._clampAngle(Ia.x,this.min,this.max)):this.axis=="Y"?(Ia.setFromQuaternion(e.quaternion,"YZX"),Ia.y=this._clampAngle(Ia.y,this.min,this.max)):this.axis=="Z"&&(Ia.setFromQuaternion(e.quaternion,"ZXY"),Ia.z=this._clampAngle(Ia.z,this.min,this.max)),e.quaternion.setFromEuler(Ia))}_clampAngle(e,t,r){return Math.abs(r-t)<2*Math.PI&&(e=r2(e,t,r)),e}}class $6 extends id{constructor(){super(),this.isLimitScaleConstraint=!0,this.type="LimitScaleConstraint",this.min=new N().setScalar(-1/0),this.max=new N().setScalar(1/0)}copy(e){return super.copy(e),this.min.copy(e.min),this.max.copy(e.max),this}update(e){super.update(e),this.mute||e.scale.clamp(this.min,this.max)}}const Eye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),x3=new N,Y6=new N,_1=new N,v1=new N,E3=new N,C3=new Vo,Cye=new N,X6=new N,q6=new It;class K6 extends Ao{constructor(e){super(e),this.isLockedTrackConstraint=!0,this.type="LockedTrackConstraint",this.trackAxis="X",this.lockAxis="Y",this.fixCameraLightRotation=!1}copy(e){return super.copy(e),this.trackAxis=e.trackAxis,this.lockAxis=e.lockAxis,this.fixCameraLightRotation=e.fixCameraLightRotation,this}update(e){if(super.update(e),this.mute||(_1.set(this.trackAxis=="X"?1:this.trackAxis=="-X"?-1:0,this.trackAxis=="Y"?1:this.trackAxis=="-Y"?-1:0,this.trackAxis=="Z"?1:this.trackAxis=="-Z"?-1:0),v1.set(this.lockAxis=="X"?1:0,this.lockAxis=="Y"?1:0,this.lockAxis=="Z"?1:0),Math.abs(_1.dot(v1))==1))return;x3.setFromMatrixPosition(e.matrixWorld),Y6.setFromMatrixPosition(this.target.matrixWorld),C3.setFromNormalAndCoplanarPoint(v1,x3),C3.projectPoint(Y6,E3).sub(x3);const t=Cye.crossVectors(_1,E3).dot(v1)>0?1:-1;e.setRotationFromAxisAngle(C3.normal,t*_1.angleTo(E3)),e.parent&&(e.parent.matrixWorld.decompose(X6,q6,X6),e.quaternion.premultiply(q6.invert())),this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(Eye)}}const Z6=new N(0,1,0),Sye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),J6=new Vo,eB=new N,tB=new N,Ra=new N,cd=new N,S3=new N,nB=new Ue,rB=new N,oB=new It;class iB extends Ao{constructor(e){super(e),this.isTrackToConstraint=!0,this.type="TrackToConstraint",this.trackAxis="X",this.upAxis="Y",this.fixCameraLightRotation=!1}copy(e){return super.copy(e),this.trackAxis=e.trackAxis,this.upAxis=e.upAxis,this.fixCameraLightRotation=e.fixCameraLightRotation,this}update(e){if(super.update(e),this.mute)return;const t=this.trackAxis[this.trackAxis.length-1],r=this.upAxis[this.upAxis.length-1],o=this.trackAxis[0]=="-",i=this.upAxis[0]=="-";if(t==r)return;eB.setFromMatrixPosition(e.matrixWorld),tB.setFromMatrixPosition(this.target.matrixWorld),Ra.subVectors(tB,eB),Ra.lengthSq()?Ra.normalize():Ra.set(0,-1,0),J6.set(Ra,0),Math.abs(Ra.dot(Z6))!=1?J6.projectPoint(Z6,cd).normalize():cd.set(0,0,-1),o&&Ra.negate(),i&&cd.negate();let a=t=="X"?Ra:r=="X"?cd:null,s=t=="Y"?Ra:r=="Y"?cd:null,l=t=="Z"?Ra:r=="Z"?cd:null;a?s?l||(l=S3.crossVectors(a,s)):s=S3.crossVectors(l,a):a=S3.crossVectors(s,l),nB.makeBasis(a,s,l),e.setRotationFromMatrix(nB),e.parent&&(e.parent.matrixWorld.decompose(rB,oB,rB),e.quaternion.premultiply(oB.invert())),this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(Sye)}}class aB extends Ao{constructor(e){super(e),this.isFixOrthoZoomConstraint=!0,this._orthoZoom=1}copy(e){super.copy(e),this._orthoZoom=e._orthoZoom}update(e){if(super.update(e),this.mute)return;const t=this.target;if(e.parent!==t||!t.isOrthographicCamera)return void console.error("FixOrthoZoom: object should be a direct child of the orthographic camera");const r=this._orthoZoom/t.zoom;e.position.multiplyScalar(r),e.scale.multiplyScalar(r),this._orthoZoom=t.zoom}}const sB=new N,wye=new N,A1=new It,ud=new Tn,Mi=new ni;class lB extends Ao{constructor(e){super(e),this.isCanvasFitConstraint=!0,this.type="CanvasFitConstraint",this.edgeH="NONE",this.edgeV="NONE",this.offset=0,this.fitShape="BOX",this.xr=null}copy(e){return super.copy(e),this.edgeH=e.edgeH,this.edgeV=e.edgeV,this.offset=e.offset,this.fitShape=e.fitShape,this.xr=e.xr,this}update(e){if(super.update(e),this.mute)return;if(e.parent!==this.target)return void console.error(`CanvasFitConstraint: object ${e.name} should be a direct child of the camera`);let t,r,o,i;t=this.xr&&this.xr.enabled&&this.xr.isPresenting?this.xr.getCamera():this.target;const a=this.edgeH=="LEFT"?-1:this.edgeH=="RIGHT"?1:0,s=this.edgeV=="BOTTOM"?-1:this.edgeV=="TOP"?1:0;t.isPerspectiveCamera&&(o=ih(t.fov/2),r=Math.atan(t.aspect*Math.tan(o)),this.edgeH=="LEFT"&&(r*=a),this.edgeV=="BOTTOM"&&(o*=s),i=Math.abs(e.position.z)),e.geometry;let l=0,c=0,u=0,d=0;if(e.matrix.compose(e.position,e.quaternion,e.scale),this.fitShape=="BOX")if(ud.makeEmpty(),e.resolveMultiMaterial().forEach((function(f){f.geometry&&(f.geometry.boundingBox==null&&f.geometry.computeBoundingBox(),ud.union(f.geometry.boundingBox))})),ud.isEmpty())l=-a*this.offset,c=-s*this.offset;else{ud.applyMatrix4(e.matrix);const f=ud.getCenter(sB).sub(e.position),h=ud.getSize(wye).addScalar(2*this.offset);l=-(.5*h.x*a+f.x),c=-(.5*h.y*s+f.y),u=h.x,d=h.y}else if(this.fitShape=="SPHERE")if(Mi.makeEmpty(),e.resolveMultiMaterial().forEach((function(f){f.geometry&&(f.geometry.boundingSphere===null&&f.geometry.computeBoundingSphere(),Mi.isEmpty()?Mi.copy(f.geometry.boundingSphere):Mi.union(f.geometry.boundingSphere))})),Mi.isEmpty())l=-a*this.offset,c=-s*this.offset;else{Mi.applyMatrix4(e.matrix),Mi.radius+=this.offset;const f=sB.copy(Mi.center).sub(e.position);l=-(Mi.radius*a+f.x),c=-(Mi.radius*s+f.y),t.isPerspectiveCamera&&(l/=Math.cos(r),c/=Math.cos(o)),u=2*Mi.radius,d=2*Mi.radius}else l=-a*this.offset,c=-s*this.offset;this.edgeH=="STRETCH"?(e.position.x=l,u!==0&&(e.scale.applyQuaternion(A1.copy(e.quaternion)),t.isPerspectiveCamera?e.scale.x*=2*i*Math.tan(r)/u:e.scale.x*=(t.right-t.left)/t.zoom/u,e.scale.applyQuaternion(A1.copy(e.quaternion).invert()))):this.edgeH!=="NONE"&&(t.isPerspectiveCamera?e.position.x=i*Math.tan(r)+l:e.position.x=(a<0?t.left:t.right)/t.zoom+l),this.edgeV=="STRETCH"?(e.position.y=c,d!==0&&(e.scale.applyQuaternion(A1.copy(e.quaternion)),t.isPerspectiveCamera?e.scale.y*=2*i*Math.tan(o)/d:e.scale.y*=(t.top-t.bottom)/t.zoom/d,e.scale.applyQuaternion(A1.copy(e.quaternion).invert()))):this.edgeV!=="NONE"&&(t.isPerspectiveCamera?e.position.y=i*Math.tan(o)+c:e.position.y=(s<0?t.bottom:t.top)/t.zoom+c)}}class cB extends id{constructor(){super(),this.isCanvasBreakpointsConstraint=!0,this.type="CanvasBreakpointsConstraint",this.minWidth=0,this.maxWidth=1/0,this.minHeight=0,this.maxHeight=1/0,this.orientation="ALL",this.appInstance=null}copy(e){return super.copy(e),this.minWidth=e.minWidth,this.maxWidth=e.maxWidth,this.minHeight=e.minHeight,this.maxHeight=e.maxHeight,this.orientation=e.orientation,this.appInstance=e.appInstance,this}update(e){if(super.update(e),this.mute||!this.appInstance)return;const t=this.appInstance.getWidth(),r=this.appInstance.getHeight();let o;switch(this.orientation){case"ALL":o=!0;break;case"LANDSCAPE":o=t/r>=1;break;case"PORTRAIT":o=t/r<1}if(this.appInstance.getCamera()!==e||t>=this.minWidth&&t<=this.maxWidth&&r>=this.minHeight&&r<=this.maxHeight&&o)t>=this.minWidth&&t<=this.maxWidth&&r>=this.minHeight&&r<=this.maxHeight&&o?e.traverse((i=>{i.internVisible=!0})):e.traverse((i=>{i.internVisible=!1}));else{let i=this.findAlternativeCamera(e,this.appInstance.scene,t,r);i&&this.appInstance.setCamera(i)}}findAlternativeCamera(e,t,r,o){let i,a,s=!1;return e&&t.traverse((function(l){if(!s&&l.isCamera&&l!=e)for(let c=0;c=1;break;case"PORTRAIT":i=r/o<1}r>=u.minWidth&&r<=u.maxWidth&&o>=u.minHeight&&o<=u.maxHeight&&i&&(a?(console.error("CanvasBreakpointsConstraint: two or more alternative cameras"),s=!0):a=l)}}})),a}}const uB=function(n){return!!n&&!!n.dtype&&new RegExp("function View[0-9]+d(:?"+n.dtype+")+").test(String(n.constructor))},w3=function(n){return!!n&&n.data!==void 0&&Array.isArray(n.shape)&&n.offset!==void 0&&n.stride!==void 0};function $r(n){return Array.isArray(n)||ArrayBuffer.isView(n)}function Sn(n){if(n){if(uB(n)||w3(n))return n.dtype==="generic"?Sn.GENERIC_NDARRAY:Sn.NDARRAY;if($r(n))return Sn.ARRAY_OF_ARRAYS;throw new Error("Unhandled data type. Got type: "+typeof n)}}function Mye(n){return n[0].toUpperCase()+n.slice(1)}Sn.ARRAY_OF_ARRAYS="Arr",Sn.NDARRAY="Nd",Sn.GENERIC_NDARRAY="GenNd",Sn.PACKED="PackArr";const Tye=function(n,e,t,r,o,i){var a,s=[],l=!1;for(a=0;a=0;r--){if(o[r]!==(Array.isArray(n[r])?n[r][1]:n[r])-1){o[r]++;break}o[r]=Array.isArray(n[r])?n[r][0]:0}},$h=function(n,e,t,r){var o,i=[];switch(Sn(r)){case Sn.NDARRAY:for(i.push(" const "+e+" = "+t+".data;"),i.push(" const "+e+"Offset = "+t+".offset;"),o=0;o1)throw new Error("Analytical derivative not implemented for rational b-splines with order n = "+E+".")}i&&(n="Basis"+n),a&&(n="Der"+a.join("_")+"_"+n);var x=fB[n];if(r)var w=typeof r=="function"?r:console.log;if(x)return r&&w(hB[n]),x.bind(e);var L=[],C="evaluate"+n,P=t.point;i&&(P=function(z,v){for(var M=[],S=0;S "+H+"[i][1] || a === undefined || isNaN(a)) {"),W(" throw new Error('Invalid Spline parameter in dimension '+i+'. Valid domain is ['+"+H+"[i][0]+', '+"+H+"[i][1]+']. but got t'+i+' = '+arguments[i + 1]+'.');"),W(" }"),W("}")),d=0;d "+R(d)+" + 1) {"),W(" m = 0.5 * (h + "+R(d)+") | 0;"),W(" if ("+Q([d,"m"])+" > "+ie(d)+") h = m;"),W(" else "+R(d)+" = m;"),W("}"),ae(` + // Fetch knots for dimension `+d+` +`),s=1-m[d];s<=m[d];s++)b[d]==="closed"?W(s<0?"let "+re([d,s+m[d]-1])+" = "+F(R(d)+" < "+-s,Q([d,0])+" + "+Q([d,[T(d),R(d),s]])+" - "+Q([d,[T(d)]]),Q([d,[R(d),s]]))+";":s>0?"let "+re([d,s+m[d]-1])+" = "+F(R(d)+" + "+s+" > "+T(d),Q([d,T(d)])+" + "+Q([d,s+" + "+R(d)+" - "+T(d)])+" - "+Q([d,0]),Q([d,[R(d),s]]))+";":"let "+re([d,s+m[d]-1])+" = "+Q([d,[R(d),s]])+";"):W("let "+re([d,s+m[d]-1])+" = "+Q([d,[R(d),s]])+";");else{for(ae(` + // Directly compute knot interval for dimension `+d+` +`),b[d]==="closed"?W(R(d)+" = ("+ie(d)+" | 0) % "+T(d)+";"):(W(R(d)+" = ("+ie(d)+" | 0);"),W("if ("+R(d)+" < "+m[d]+") "+R(d)+" = "+m[d]+";"),W("if ("+R(d)+" > "+T(d)+" - 1) "+R(d)+" = "+T(d)+" - 1;")),ae(` + // Compute and clamp knots for dimension `+d+` +`),s=1-m[d];s<=m[d];s++)W("let "+(f=re([d,s+m[d]-1]))+" = "+R(d)+" + "+s+";");if(b[d]==="clamped")for(s=1-m[d];s<=m[d];s++)f=re([d,s+m[d]-1]),s<0&&W("if ("+f+" < "+m[d]+") "+f+" = "+m[d]+";"),s>0&&W("if ("+f+" > "+T(d)+") "+f+" = "+T(d)+";");b[d]==="closed"&&(ae(` + // Wrap the B-Spline parameter for closed boundary`),W(ie(d)+" %= "+T(d)+";"))}for(d=0,c=[];d=0;d--)for(c[d]=[m[d],m[d]+1],s=0;ss;l--){var q=a&&m[d]-s-a[d]<=0;q?(W("m = 1 / ("+re([d,l-s+m[d]-1])+" - "+re([d,l-1])+");"),_&&(W("a = ("+ie(d)+" - "+re([d,l-1])+") * m;"),W("b = 1 - a;"))):(W("a = ("+ie(d)+" - "+re([d,l-1])+") / ("+re([d,l-s+m[d]-1])+" - "+re([d,l-1])+");"),W("b = 1 - a;")),_&&Qh(c,(function(z){var v=z.slice(),M=z.slice();v[d]=l,M[d]=l-1,q&&_&&W("h = "+se(v)+";"),W(se(v)+" = b * "+se(M)+" + a * "+se(v)+";")})),Qh(c,(function(z){var v,M,S,I=z.slice(),J=z.slice();if(I[d]=l,J[d]=l-1,q){var $=s+1;if(i)v=_?"h * "+se(J)+" / "+se(I)+" * ":"",M=G(I)+(_?" / h":""),S=G(J)+(_?" / "+se(J):""),W(G(I)+" = "+$+" * "+v+"("+M+" - "+S+") * m;");else{var B=I.slice(),V=J.slice();for(u=0;u= 0; "+a+"--) {");for(o=0;o=0;o--)h.push("}");h.push("return this;"),h.push("}");const g=new Function([h.join(` +`),"; return ",p].join(""))();return r&&console.log(h.join(` +`)),mB[n]=g,g.bind(e)};var gB={};const Pye=function(n,e,t,r,o){var i=gB[n];if(i)return i.bind(e);var a,s,l,c=e.degree,u=e.knots,d=e.splineDimension,f=e.boundary,h=[],p="support"+n,m=t.knot,g=Go("t"),_=r?"domain":"d",A=Go(r?"size":"s"),y=Go(r?"knotIndex":"i"),b=!0;for(l=0;l "+_+"[i][1] || a === undefined || isNaN(a)) {"),E(" throw new Error('Invalid Spline parameter in dimension '+i+'. Valid domain is ['+"+_+"[i][0]+', '+"+_+"[i][1]+']. but got t'+i+' = '+arguments[i + 1]+'.');"),E(" }"),E("}")),l=0;l "+y(l)+" + 1) {"),E(" m = 0.5 * (h + "+y(l)+") | 0;"),E(" if ("+m([l,"m"])+" > "+g(l)+") h = m;"),E(" else "+y(l)+" = m;"),E("}")):f[l]==="closed"?E(y(l)+" = ("+g(l)+" | 0) % "+A(l)+";"):(E(y(l)+" = ("+g(l)+" | 0);"),E("if ("+y(l)+" < "+c[l]+") "+y(l)+" = "+c[l]+";"),E("if ("+y(l)+" > "+A(l)+" - 1) "+y(l)+" = "+A(l)+" - 1;"));for(l=0,s=[];l0&&!$r(this.knots[0])&&(this.knots=[this.knots]),a=0;a0?1:-1;S1.setFromAxisAngle(t,i.angleTo(o)*s),e.multiply(S1)}else a<0&&(S1.setFromAxisAngle(t,Math.PI),e.multiply(S1));return e}_calcBankAngle(e,t,r,o){const i=dd.copy(t).add(r).normalize();return e*(fd.crossVectors(i,t).normalize().dot(o)>0?1:-1)}_calcCurvature(e,t){return dd.crossVectors(e,t).length()/Math.pow(e.length(),3)}_calcSecondDerivative(e,t,r,o){this.secondDerivativeEvaluatorForNonUniformBSplines(Ho,t);const i=dd.fromArray(Ho);this.derivativeEvaluatorForWeights1(Ho,t);const a=Ho[0];this.derivativeEvaluatorForWeights2(Ho,t);const s=Ho[0];this.derivativeEvaluatorForWeights0(Ho,t);const l=Ho[0];return e.copy(i).sub(fd.copy(o).multiplyScalar(2*a)),e.sub(fd.copy(r).multiplyScalar(s)),e.divideScalar(l),e}_limitAngle(e,t){return e>0?Math.min(e,t):Math.max(e,-t)}_calcChordLengths(e,t){let r=1/Math.max(1,t-1),o=0,i=0;const a=this.curve.domain;let s=a[0][0],l=a[0][1]-a[0][0];const c=dd,u=fd;this._calcPosition(c,s);for(let d=0;d=1)return 1;let r=e*t[t.length-1],o=0,i=0,a=t.length-1;for(;ot[i]?o=i+1:a=i-1;return r>t[a]?a+=(r-t[a])/(t[a+1]-t[a]):a-=1-(r-t[a-1])/(t[a]-t[a-1]),a/(t.length-1)}}const Vye=new It().setFromAxisAngle(new N(1,0,0),-Math.PI/2),bB=new N,Uye=new It,xB=new N,L3=new $i,w1=new Ue,P3=new Ue,EB={X:0,Y:1,Z:2,"-X":0,"-Y":1,"-Z":2},M1=["x","y","z"],zye=new N,Gye=new N,Hye=new N,D3=new $i;function B3(n,e,t,r=!1){if(e===t)return n;const o=n.y,i=n.z;return e==="Z_UP_RIGHT"&&t==="Y_UP_RIGHT"?(n.y=i,n.z=r?o:-o):e==="Y_UP_RIGHT"&&t==="Z_UP_RIGHT"?(n.y=r?i:-i,n.z=o):console.error("transformCoordsSpace: Unsupported coordinate space"),n}const CB=(function(){const n=new $i,e=new $i,t=new N;return function(r,o){const i=n.copy(r).reorder("YZX"),a=e.copy(i).makeAlternative(),s=t.setFromEuler(i).lengthSq(),l=t.setFromEuler(a).lengthSq();return o.copy(s-1?u[f]=l[f]+(1-o[M1[EB[this.mapToAxisFromAxis[d]]]])*(c[f]-l[f]):u[f]=l[f]+o[M1[EB[this.mapToAxisFromAxis[d]]]]*(c[f]-l[f])}if(this.mapTo=="POSITION")this.mixMode=="ADD"?u.add(e.position):this.mixMode,e.position.lerp(u,this.influence);else if(this.mapTo=="ROTATION"){const d=Uye;if(this.mixMode=="ADD"){const f=D3.set(0,0,0,"XYZ");this.coordSystem=="Z_UP_RIGHT"?(CB(e.rotation,f),B3(f,this.coordSystem,"Y_UP_RIGHT"),f.x+=u.x,f.y+=u.y,f.z+=u.z,f.order="YZX"):f.set(e.rotation.x+u.x,e.rotation.y+u.y,e.rotation.z+u.z),d.setFromEuler(f)}else{const f=D3.setFromVector3(u);this.coordSystem=="Z_UP_RIGHT"&&(f.order="YZX"),d.setFromEuler(f),this.mixMode=="AFTER"?d.premultiply(e.quaternion):this.mixMode=="BEFORE"?d.multiply(e.quaternion):this.mixMode}e.quaternion.slerp(d,this.influence)}else this.mapTo=="SCALE"&&(this.mixMode=="REPLACE"||this.mixMode=="MULTIPLY"&&u.multiply(e.scale),e.scale.lerp(u,this.influence));if(this.ownerSpace==0&&e.parent)e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrix.multiplyMatrices(w1.copy(e.parent.matrixWorld).invert(),e.matrixWorld),e.matrix.decompose(e.position,e.quaternion,e.scale);else if(this.ownerSpace==1){if(!this.ownerSpaceObj)return;e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorld.premultiply(w1.copy(this.ownerSpaceObj.matrixWorld)),e.matrix.copy(e.matrixWorld),e.parent&&e.matrix.premultiply(w1.copy(e.parent.matrixWorld).invert()),e.matrix.decompose(e.position,e.quaternion,e.scale)}this.mapTo=="ROTATION"&&this.fixCameraLightRotation&&(e.isCamera||e.isLight)&&e.quaternion.multiply(Vye)}}const wB=["IMAGE_AR","SKYDOME_LIGHT_AR","TEXTURE_BL","TEX_IMAGE_BL","TEX_ENVIRONMENT_BL","BITMAP_MX","BITMAP_ENV_MX","REFLECT_REFRACT_MX","FILE_MY","AI_SKYDOME_LIGHT_MY","OSL_NODE"];class MB extends Ci{constructor(e){super(e),this.ktx2Loader=null,this.pluginCallbacks=[],this.register((function(t){return new Qye(t)})),this.register((function(t){return new $ye(t)})),this.register((function(t){return new Xye(t)})),this.register((function(t){return new qye(t)})),this.register((function(t){return new Kye(t)})),this.register((function(t){return new Zye(t)})),this.register((function(t){return new Jye(t)})),this.register((function(t){return new e2e(t)})),this.register((function(t){return new t2e(t)})),this.register((function(t){return new n2e(t)})),this.register((function(t){return new r2e(t)})),this.onProgress=null}load(e,t,r,o){const i=this;let a;i.onProgress=r||function(){},a=this.resourcePath!==""?this.resourcePath:this.path!==""?this.path:Ea.extractUrlBase(e);const s=e.indexOf(".xz",e.length-3)!=-1;let l;s?l=new Wh(i.manager):(l=new Si(i.manager),l.setResponseType("arraybuffer"));const c=function(d){i.onProgress&&i.onProgress(.3*d*100)};let u=c;l instanceof Si&&(u=function(d){const f=d.lengthComputable?d.loaded/d.total:1;c(f)}),l.load(e,(function(d){try{i.parse(d,a,t,o,s)}catch(f){o!==void 0&&o(f.constructor===Error?f:new Error("v3d.GLTFLoader: Unable to parse model."))}}),u,o)}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(){return console.error("v3d.GLTFLoader: Mesh optimization is not supported, please use LZMA compression."),this}setDRACOLoader(){return console.error("v3d.GLTFLoader: Draco compression is not supported, please use LZMA compression."),this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,o,i){let a;const s={},l={};if(typeof e=="string")a=e;else if(Ea.decodeText(new Uint8Array(e,0,4))===TB){try{s[Hn.KHR_BINARY_GLTF]=new Yye(e)}catch(f){return void(o&&o(f))}a=s[Hn.KHR_BINARY_GLTF].content}else a=Ea.decodeText(new Uint8Array(e));const c=JSON.parse(a);if(c.asset===void 0||c.asset.version[0]<2)return void(o&&o(new Error("v3d.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=this,d=new h2e(c,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,loadBinXZ:i,onProgress:function(f){u.onProgress&&u.onProgress(f)}});for(let f=0;f=0&&l[h]===void 0&&console.warn('v3d.GLTFLoader: Unknown extension "'+h+'".')}d.setExtensions(s),d.setPlugins(l),d.parse((function(f){u.onProgress&&u.onProgress(100),r(f)}),o)}parseAsync(e,t){const r=this;return new Promise((function(o,i){r.parse(e,t,o,i)}))}}function Wye(){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 Hn={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_TEXTURE_BASISU:"KHR_texture_basisu",EXT_TEXTURE_WEBP:"EXT_texture_webp",S8S_V3D_ANIMATION:"S8S_v3d_animation",S8S_V3D_CAMERA:"S8S_v3d_camera",S8S_V3D_MATERIALS:"S8S_v3d_materials",S8S_V3D_MESH:"S8S_v3d_mesh",S8S_V3D_NODE:"S8S_v3d_node",S8S_V3D_SCENE:"S8S_v3d_scene",S8S_V3D_TEXTURE:"S8S_v3d_texture",S8S_V3D_LIGHTS:"S8S_v3d_lights",S8S_V3D_LIGHT_PROBES:"S8S_v3d_light_probes",S8S_V3D_CURVES:"S8S_v3d_curves",S8S_V3D_CLIPPING_PLANES:"S8S_v3d_clipping_planes"};class jye{constructor(){this.name=Hn.KHR_MATERIALS_UNLIT}getMaterialType(){return pr}extendParams(e,t,r){const o=[];e.color=new Ge(1,1,1),e.opacity=1;const i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const a=i.baseColorFactor;e.color.fromArray(a),e.opacity=a[3]}i.baseColorTexture!==void 0&&o.push(r.assignTexture(e,"map",i.baseColorTexture,3001))}return Promise.all(o)}}class Qye{constructor(e){this.parser=e,this.name=Hn.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,r=t.json,o=r.textures[e];if(!o.extensions||!o.extensions[this.name])return null;const i=o.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0)throw new Error("v3d.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,i.source,a)}}class $ye{constructor(e){this.parser=e,this.name=Hn.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,r=this.parser,o=r.json,i=o.textures[e];if(!i.extensions||!i.extensions[t])return null;const a=i.extensions[t],s=o.images[a.source];let l=r.textureLoader;if(s.uri){const c=r.options.manager.getHandler(s.uri);c!==null&&(l=c)}return this.detectSupport().then((function(c){if(c)return r.loadTextureImage(e,a.source,l);if(o.extensionsRequired&&o.extensionsRequired.indexOf(t)>=0)throw new Error("v3d.GLTFLoader: WebP required by asset but unsupported.");return r.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}}const TB="glTF",IB={JSON:1313821514,BIN:5130562};class Yye{constructor(e){this.name=Hn.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:Ea.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==TB)throw new Error("v3d.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("v3d.GLTFLoader: Legacy binary file detected.");const r=this.header.length-12,o=new DataView(e,12);let i=0;for(;i(d&&(s.target=d),o=Promise.resolve(s),t.cache.add(r,o),o)))}createNodeAttachment(e){const t=this,r=this.parser,o=r.json.nodes[e],i=(o.extensions&&o.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then((function(a){return r._getNodeRef(t.cache,i,a)}))}}class qye{constructor(e){this.parser=e,this.name=Hn.S8S_V3D_LIGHT_PROBES,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let r=0,o=t.length;r"u")return null;const u=new u3;return u.setCrossOrigin(t.options.crossOrigin),new Promise((function(d,f){u.load(Ea.resolveURL(s,t.options.path),d,void 0,f)})).then((function(d){return new h3(d)}),(function(d){return null}))})).then((function(c){return l===!0&&URL.revokeObjectURL(s),o=Promise.resolve(c),t.cache.add(r,o),o}))}_loadCurve(e){const t=this.parser,r="curve:"+e;let o=t.cache.get(r);if(o)return o;const i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).curves||[])[e];let s,l=a.type;const c=[];return c.push(this._loadFont(a.font)),a.material!==void 0?c.push(t.getDependency("material",a.material)):c.push(BB(t.cache)),Promise.all(c).then((function(u){const d=u[0],f=u[1];if(d===null&&(l="empty"),l==="font"){const h=a.bevelSize>0||a.bevelThickness>0,p=new Ih(a.text,{font:d,size:a.size,height:a.height,curveSegments:a.curveSegments,bevelEnabled:h,bevelThickness:a.bevelThickness,bevelSize:a.bevelSize,bevelSegments:a.bevelSegments,alignX:a.alignX,alignY:a.alignY,lineHeight:a.lineHeight,scaledEmSize:a.scaledEmSize});s=new Mt(p,f)}else s=new kt;return s.name=t.createUniqueName(a.name||"curve_"+e),o=Promise.resolve(s),t.cache.add(r,o),o}))}createNodeAttachment(e){const t=this,r=this.parser,o=r.json.nodes[e],i=(o.extensions&&o.extensions[this.name]||{}).curve;return i===void 0?null:this._loadCurve(i).then((function(a){return r._getNodeRef(t.cache,i,a)}))}}class Zye{constructor(e){this.parser=e,this.name=Hn.S8S_V3D_CLIPPING_PLANES,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let r=0,o=t.length;r-1&&(e.match(/(\d+).(\d+).(\d+)/)||(e+=" v0.0.0"),VR(e,"4.10.0",2)<0&&console.warn("Loading glTF asset in older version of Verge3D runtime. Please update your application!"))}afterRoot(e){const t=this.parser,r=t.json,o=r.scenes[r.scene||0],i=e.scene,a=_e(o.extensions)?o.extensions[Hn.S8S_V3D_SCENE]:void 0,s=[],l=[],c=[];let u;return u=o&&a&&_e(a.worldMaterial)?t.getDependency("material",a.worldMaterial):Promise.resolve(),u.then((d=>{const f={};d&&(f.material=d),e.world=f})).then((()=>(t.assignedMaterials.forEach((function(d){d.isMeshNodeMaterial&&d.traverseNodes((function(f){f.originData.type==="TEX_COORD_BL"&&_e(f.originData.object)&&f.originData.object>-1&&(s.push(t.getDependency("node",f.originData.object)),l.push(f),c.push(d))}))})),Promise.all(s)))).then((d=>{for(let p=0;p{c.ownerSpaceObj=u})),_e(s.targetSpaceObj)&&r.getDependency("node",s.targetSpaceObj).then((u=>{c.targetSpaceObj=u})),c.useMotionExtrapolate=s.useMotionExtrapolate,c.mixMode=s.mixMode,c.influence=s.influence,c.fixCameraLightRotation=!!_e(s.fixCameraLightRotation)&&s.fixCameraLightRotation}c&&(c.name=s.name,c.mute=s.mute,e.constraints.push(c))}return e}))}}class t2e{constructor(e){this.name=Hn.S8S_V3D_CAMERA,this.parser=e}extendCameraParams(e,t){const r=this.parser,o=t.extensions&&t.extensions[this.name];if(!o)return Promise.resolve(e);if(e.controlSettings=new n3(o.controls,o.enablePan,o.rotateSpeed,o.moveSpeed),e.viewportFit.type=3,_e(o.viewportFitType))switch(o.viewportFitType){case"VERTICAL":e.viewportFit.type=1;break;case"HORIZONTAL":e.viewportFit.type=2;break;case"AUTO":e.viewportFit.type=3;break;case"FILL":e.viewportFit.type=4;break;case"OVERSCAN":e.viewportFit.type=5}_e(o.viewportFitInitialAspect)&&(e.viewportFit.initialAspect=o.viewportFitInitialAspect),_e(o.orbitMinDistance)&&(e.controlSettings.orbitMinDistance=o.orbitMinDistance),_e(o.orbitMaxDistance)&&(e.controlSettings.orbitMaxDistance=o.orbitMaxDistance),_e(o.orbitMinZoom)&&(e.controlSettings.orbitMinZoom=o.orbitMinZoom),_e(o.orbitMaxZoom)&&(e.controlSettings.orbitMaxZoom=o.orbitMaxZoom),_e(o.orbitMinPolarAngle)&&(e.controlSettings.orbitMinPolarAngle=o.orbitMinPolarAngle),_e(o.orbitMaxPolarAngle)&&(e.controlSettings.orbitMaxPolarAngle=o.orbitMaxPolarAngle),_e(o.orbitMinAzimuthAngle)&&(e.controlSettings.orbitMinAzimuthAngle=o.orbitMinAzimuthAngle),_e(o.orbitMaxAzimuthAngle)&&(e.controlSettings.orbitMaxAzimuthAngle=o.orbitMaxAzimuthAngle);const i=[];if(_e(o.orbitTarget))if(o.orbitTarget instanceof Array){const a=new kt;a.position.fromArray(o.orbitTarget),i.push(Promise.resolve(a))}else i.push(r.getDependency("node",o.orbitTarget));else i.push(Promise.resolve());return _e(o.fpsCollisionMaterial)?i.push(r.getDependency("material",o.fpsCollisionMaterial)):i.push(Promise.resolve()),_e(o.fpsGazeLevel)&&(e.controlSettings.gazeLevel=o.fpsGazeLevel),_e(o.fpsStoryHeight)&&(e.controlSettings.storyHeight=o.fpsStoryHeight),_e(o.enablePointerLock)&&(e.controlSettings.enablePointerLock=o.enablePointerLock),Promise.all(i).then((a=>(a[0]&&(e.controlSettings.orbitTarget=a[0]),a[1]&&(e.controlSettings.collisionMaterial=a[1]),e)))}}class n2e{constructor(e){this.name=Hn.S8S_V3D_MATERIALS,this.parser=e}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ta:null}extendMaterialParams(e,t){const r=this.parser.json,o=r.materials[e];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const i=o.extensions[this.name],a=[];if(_e(i.nodeGraph)){const s=ta.nodeGraphFromExtGraph(i.nodeGraph);t.nodeGraph=s,ta.nodeGraphTraverse(s,(c=>{const u=c.originData;wB.indexOf(u.type)>-1&&_e(u.texture)?a.push(this.assignTextureNode(u)):u.type=="RAMP_MY"&&(u.wrapS=T1[u.wrapS]||1e3,u.wrapT=T1[u.wrapT]||1e3)}));const l=r.extensions&&r.extensions[this.name]||{};if(l&&l.nodeGraphs){t.additionalNodeGraphs={};for(let c in l.nodeGraphs){const u=ta.nodeGraphFromExtGraph(l.nodeGraphs[c]);t.additionalNodeGraphs[c]=u,ta.nodeGraphTraverse(u,(d=>{const f=d.originData;wB.indexOf(f.type)>-1&&a.push(this.assignTextureNode(f))}))}}}return _e(i.profile)&&(t.profile=i.profile),_e(i.renderSide)&&(t.side=DB[i.renderSide]),_e(i.useShadows)&&(t.receiveShadow=i.useShadows),_e(i.useCastShadows)&&(t.castShadow=i.useCastShadows),_e(i.depthWrite)&&(t.depthWrite=i.depthWrite),_e(i.depthPrepass)&&(t.depthPrepass=i.depthPrepass),_e(i.depthTest)&&(t.depthTest=i.depthTest),_e(i.dithering)&&(t.dithering=i.dithering),_e(i.materialIndex)&&(t.materialIndex=i.materialIndex),i.alphaToCoverage===!0&&(t.alphaToCoverage=!0),_e(i.gtaoVisible)&&(t.gtaoVisible=i.gtaoVisible),delete t.metalness,delete t.roughness,Promise.all(a)}assignTextureNode(e){return this.parser.getDependency("texture",e.texture).then((function(t){e.texture=t}))}assignTransparency(e,t,r){const o=t.extensions[this.name]||{};if(e.premultipliedAlpha=r==Kh.BLEND,r==Kh.BLEND)if(_e(o.blendMode)){const i=o.blendMode;e.blending=5,_e(i.blendEquation)&&(e.blendEquation=PB[i.blendEquation]),_e(i.blendEquationAlpha)&&(e.blendEquationAlpha=PB[i.blendEquationAlpha]),_e(i.srcRGB)&&(e.blendSrc=I1[i.srcRGB]),_e(i.dstRGB)&&(e.blendDst=I1[i.dstRGB]),_e(i.srcAlpha)&&(e.blendSrcAlpha=I1[i.srcAlpha]),_e(i.dstAlpha)&&(e.blendDstAlpha=I1[i.dstAlpha])}else e.useAddTransparency()?e.blending=2:VB(e)}}class r2e{constructor(e){this.parser=e,this.name=Hn.S8S_V3D_TEXTURE,this.textureLoaderRGBE=new d3,this.textureLoaderRGBE.setCrossOrigin(this.parser.options.crossOrigin),this.textureLoaderRGBE.setRequestHeader(this.parser.options.requestHeader)}loadTexture(e){const t=this.name,r=this.parser,o=r.json,i=o.textures[e];if(!i.extensions||!i.extensions[t])return null;const a=i.extensions[t];if(!_e(a.source))return null;const s=o.images[a.source];let l=r.textureLoader;if((s.uri||"").split(".").pop()=="hdr"||s.mimeType=="image/vnd.radiance"?l=this.textureLoaderRGBE:(s.uri||"").split(".").pop()!="xz"&&s.mimeType!="application/x-xz"||(l=new Wh),s.uri){const c=r.options.manager.getHandler(s.uri);c!==null&&(l=c)}return r.loadTextureImage(e,a.source,l)}extendTextureParams(e,t,r){const o=this.name;if(!t.extensions||!t.extensions[o])return null;const i=t.extensions[o],a=i.colorSpace.startsWith("linear")||i.colorSpace=="non-color"?3e3:3001;e.encoding=a,(r instanceof d3||r instanceof Wh)&&(e.minFilter=1006),_e(i.anisotropy)&&(e.anisotropy=i.anisotropy),_e(i.uvTransform)&&(e.matrix=new ao().fromArray(i.uvTransform),e.matrixAutoUpdate=!1)}}class RB extends qu{constructor(e,t,r,o){super(e,t,r,o)}copySampleValue_(e){const t=this.resultBuffer,r=this.sampleValues,o=this.valueSize,i=e*o*3+o;for(let a=0;a!==o;a++)t[a]=r[i+a];return t}interpolate_(e,t,r,o){const i=this.resultBuffer,a=this.sampleValues,s=this.valueSize,l=2*s,c=3*s,u=o-t,d=(r-t)/u,f=d*d,h=f*d,p=e*c,m=p-c,g=-2*h+3*f,_=h-f,A=1-g,y=_-f+d;for(let b=0;b!==s;b++){const E=a[m+b+s],x=a[m+b+l]*u,w=a[p+b+s],L=a[p+b]*u;i[b]=A*E+y*x+g*w+_*L}return i}}const o2e=new It;class i2e extends RB{interpolate_(e,t,r,o){const i=super.interpolate_(e,t,r,o);return o2e.fromArray(i).normalize().toArray(i),i}}const Cs={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},qh={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},LB={9728:1003,9729:1006,9984:1004,9985:1007,9986:1005,9987:1008},T1={33071:1001,33648:1002,10497:1e3},PB={32774:100,32778:101,32779:102},I1={0:200,1:201,768:202,769:203,770:204,771:205,772:206,773:207,774:208,775:209,776:210},N3={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},a2e={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Ss={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences",intensity:"intensity",power:"power"},s2e={CUBICSPLINE:void 0,LINEAR:2301,STEP:2300},Kh={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},DB={FRONT:0,BACK:1,DOUBLE:2,TWO_PASS_DOUBLE:3};function BB(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Xu({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:0,receiveShadow:!0,castShadow:!0})),n.DefaultMaterial}function Zh(n,e,t){for(const r in t.extensions)n[r]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[r]=t.extensions[r])}function yc(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("v3d.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function l2e(n,e,t){let r=!1,o=!1,i=!1;for(let c=0,u=e.length;c0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}new Ue;class h2e{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.onProgress=t.onProgress||function(){},this.cache=new Wye,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,o=!1,i=-1;typeof navigator<"u"&&(r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,o=navigator.userAgent.indexOf("Firefox")>-1,i=o?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||r||o&&i<98?this.textureLoader=new gb(this.options.manager):this.textureLoader=new FP(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Si(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0),this.assignedMaterials=[]}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const r=this,o=this.json,i=this.extensions;this.cache.removeAll(),this._invokeAll((function(a){return a._markDefs&&a._markDefs()})),Promise.all(this._invokeAll((function(a){return a.beforeRoot&&a.beforeRoot()}))).then((function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])})).then((function(a){const s={scene:a[0][o.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:o.asset,parser:r,userData:{}};Zh(i,s,o),yc(s,o),Promise.all(r._invokeAll((function(l){return l.afterRoot&&l.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let o=0,i=t.length;o{const l=this.associations.get(a);l!=null&&this.associations.set(s,l);for(const[c,u]of a.children.entries())i(u,s.children[c])};return i(r,o),o.name+="_instance_"+e.uses[t]++,o}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&p.setY(w,b[E*s+1]),s>=3&&p.setZ(w,b[E*s+2]),s>=4&&p.setW(w,b[E*s+3]),s>=5)throw new Error("v3d.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return p}))}loadTexture(e){const t=this.json,r=this.options,o=t.textures[e].source,i=t.images[o];let a=this.textureLoader;if(i.uri){const s=r.manager.getHandler(i.uri);s!==null&&(a=s)}return this.loadTextureImage(e,o,a)}loadTextureImage(e,t,r){const o=this,i=this.json,a=i.textures[e],s=i.images[t],l=(s.uri||s.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];const c=this.loadImageSource(t,r).then((function(u){u.flipY=!1,u.name=a.name||s.name||"";const d=(i.samplers||{})[a.sampler]||{};return u.magFilter=LB[d.magFilter]||1006,u.minFilter=LB[d.minFilter]||1008,u.wrapS=T1[d.wrapS]||1e3,u.wrapT=T1[d.wrapT]||1e3,o._invokeAll((function(f){return f.extendTextureParams&&f.extendTextureParams(u,a,r)})),o.associations.set(u,{textures:e}),u})).catch((function(){return null}));return this.textureCache[l]=c,c}loadImageSource(e,t){const r=this,o=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then((d=>d.clone()));const a=o.images[e],s=self.URL||self.webkitURL;let l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=r.getDependency("bufferView",a.bufferView).then((function(d){c=!0;const f=new Blob([d],{type:a.mimeType});return l=s.createObjectURL(f),l}));else if(a.uri===void 0)throw new Error("v3d.GLTFLoader: Image "+e+" is missing URI and bufferView");const u=Promise.resolve(l).then((function(d){return new Promise((function(f,h){let p=f;t.isImageBitmapLoader===!0&&(p=function(m){const g=new $n(m);g.needsUpdate=!0,f(g)}),t.load(Ea.resolveURL(d,i.path),p,void 0,h)}))})).then((function(d){return d instanceof ArrayBuffer?r.plugins[Hn.S8S_V3D_TEXTURE].textureLoaderRGBE.loadAsync(s.createObjectURL(new Blob([d],{type:"image/vnd.radiance"}))):Promise.resolve(d)})).then((function(d){return c===!0&&s.revokeObjectURL(l),d.userData.mimeType=a.mimeType||f2e(a.uri),d})).catch((function(d){return console.error("v3d.GLTFLoader: Couldn't load texture",l),new $n}));return this.sourceCache[e]=u,u}assignTexture(e,t,r,o){return this.getDependency("texture",r.index).then((function(i){return i?(r.texCoord===void 0||r.texCoord==0||t==="aoMap"&&r.texCoord==1||console.warn("v3d.GLTFLoader: Custom UV set "+r.texCoord+" for texture "+t+" not yet supported."),o!==void 0&&(i.encoding=o),e[t]=i,i):null}))}assignFinalMaterial(e,t,r){const o=e.geometry;let i=e.material;const a=o.attributes.tangent===void 0,s=o.attributes.color!==void 0&&!i.isMeshNodeMaterial,l=o.attributes.normal===void 0,c=i.isMeshNodeMaterial&&(i.nodeValue.length||i.nodeRGB.length),u=i.isMeshNodeMaterial&&i.hasNode("TEX_COORD_BL"),d=i.isMeshNodeMaterial&&Object.getOwnPropertyNames(t).length>0&&i.hasNode("UVMAP_BL"),f=i.isMeshNodeMaterial&&Object.getOwnPropertyNames(r).length>0&&(i.hasNode("ATTRIBUTE_BL")||i.hasNode("VERTEX_COLOR_BL"));if(e.isPoints){const h="PointsMaterial:"+i.uuid;let p=this.cache.get(h);p||(p=new $2,Nr.prototype.copy.call(p,i),p.color.copy(i.color),p.map=i.map,p.sizeAttenuation=!1,this.cache.add(h,p)),i=p}else if(e.isLine){const h="LineBasicMaterial:"+i.uuid;let p=this.cache.get(h);p||(p=new _r,Nr.prototype.copy.call(p,i),p.color.copy(i.color),this.cache.add(h,p)),i=p}if(a||s||l||c||u||d||f){let h="ClonedMaterial:"+i.uuid+":";a&&(h+="derivative-tangents:"),s&&(h+="vertex-colors:"),l&&(h+="flat-shading:");const p=ji();c&&(h=p),u&&(h=p),d&&(h=p),f&&(h=p);let m=this.cache.get(h);m||(m=i.clone(),s&&(m.vertexColors=!0),l&&(m.flatShading=!0),a&&(m.normalScale&&(m.normalScale.y*=-1),m.clearcoatNormalScale&&(m.clearcoatNormalScale.y*=-1)),m.isMeshNodeMaterial&&(Object.assign(m.nodeUVAliases,t),Object.assign(m.nodeVCAliases,r),m.updateNodeGraph()),this.cache.add(h,m),this.associations.set(m,this.associations.get(i))),i=m}i.aoMap&&o.attributes.uv2===void 0&&o.attributes.uv!==void 0&&o.setAttribute("uv2",o.attributes.uv),e.material=i,this.assignedMaterials.includes(i)||this.assignedMaterials.push(i)}getMaterialType(){return Xu}loadMaterial(e){const t=this,r=this.json,o=this.extensions,i=r.materials[e];let a;const s={},l=i.extensions||{},c=[];if(i.doubleSided===!0&&(s.side=2),l[Hn.KHR_MATERIALS_UNLIT]){const d=o[Hn.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(s,i,t))}else{const d=i.pbrMetallicRoughness||{};if(s.color=new Ge(1,1,1),s.opacity=1,Array.isArray(d.baseColorFactor)){const f=d.baseColorFactor;s.color.fromArray(f),s.opacity=f[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(s,"map",d.baseColorTexture,3001)),s.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,s.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(s,"metalnessMap",d.metallicRoughnessTexture)),c.push(t.assignTexture(s,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne((function(f){return f.getMaterialType&&f.getMaterialType(e)})),c.push(Promise.all(this._invokeAll((function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,s)}))))}const u=i.alphaMode||Kh.OPAQUE;if(u===Kh.BLEND?(s.transparent=!0,a!==ta&&(s.depthWrite=!1)):(s.transparent=!1,u===Kh.MASK&&(s.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&a!==pr&&(c.push(t.assignTexture(s,"normalMap",i.normalTexture)),s.normalScale=new be(1,1),i.normalTexture.scale!==void 0)){const d=i.normalTexture.scale;s.normalScale.set(d,d)}return i.occlusionTexture!==void 0&&a!==pr&&(c.push(t.assignTexture(s,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==pr&&(s.emissive=new Ge().fromArray(i.emissiveFactor)),i.emissiveTexture!==void 0&&a!==pr&&c.push(t.assignTexture(s,"emissiveMap",i.emissiveTexture,3001)),Promise.all(c).then((function(){const d=new a(s);i.name&&(d.name=i.name),d.map&&(d.map.encoding=3001),d.emissiveMap&&(d.emissiveMap.encoding=3001);const f=t.plugins[Hn.S8S_V3D_MATERIALS];return d.isMeshNodeMaterial&&f.assignTransparency(d,i,u),d.isMeshStandardMaterial&&d.normalScale&&f&&_e(f.profile)&&f.profile=="max"&&(d.normalScale.y=-d.normalScale.y),yc(d,i),t.associations.set(d,{materials:e}),i.extensions&&Zh(o,d,i),d}))}createUniqueName(e){const t=e;let r=t;for(let o=1;this.nodeNamesUsed[r];++o)r=t+"_"+o;return this.nodeNamesUsed[r]=!0,r}loadGeometries(e){const t=this;this.extensions;const r=this.primitiveCache,o=[];for(let i=0,a=e.length;i0&&c2e(A,i),A.name=t.createUniqueName(i.name||"mesh_"+e),yc(A,i),_.extensions&&Zh(o,A,_);const b={},E={};if(A.material.isMeshNodeMaterial&&l){if(l.uvLayers)for(let x in l.uvLayers)b[x]=kB(l.uvLayers[x]);if(l.colorLayers)for(let x in l.colorLayers)E[x]=FB(l.colorLayers[x])}t.assignFinalMaterial(A,b,E),f.push(A)}for(let p=0,m=f.length;p-1)C=hc,P="constraints["+L.path.match(/".*"/g)[0]+"]."+L.path.match(/[^\\.]*$/g)[0];else{let se;C=Nh,L.path.indexOf("nodeValue")>-1?(se=L.path.match(/".*"/g)[0],P="material.nodeValue["+se+"]"):L.path.indexOf("nodeRGB")>-1&&(se=L.path.match(/".*"/g)[0],P="material.nodeRGB["+se+"]")}}const D=b.name?b.name:b.uuid,Q=w.interpolation!==void 0?s2e[w.interpolation]:2301,re=[];if(Ss[L.path]===Ss.weights)b.traverse((function(se){se.morphTargetInfluences&&re.push(se.name?se.name:se.uuid)}));else if(L.path.indexOf("material")>-1){const se=l[5];b.traverse((function(ee){if(!ee.isMesh||!ee.material.isMeshNodeMaterial)return;let ie=!1;if(L.extras){ie=se[L.extras.material].name===ee.material.name;const H=L.path.match(/\["(.*)"\]/);ie=ie&&H!==null&&ee.material.findNodeByName(H[1])!==null}else ie=!0;ie&&re.push(ee.name?ee.name:ee.uuid)}))}else re.push(D);let G=x.array;if(x.normalized){const se=O3(G.constructor),ee=new Float32Array(G.length);for(let ie=0,H=G.length;ie1?new qi:s.length===1?s[0]:new kt,l!==s[0])for(let c=0,u=s.length;c{o._invokeOne((function(c){if(l!==s)return c.extendNodeParams&&c.extendNodeParams(l,i)}))})),o._invokeOne((function(l){return l.extendNodeParams&&l.extendNodeParams(s,i)}))}))}loadScene(e){const t=this.json,r=this.extensions,o=this.json.scenes[e],i=this,a=new jr;o.name&&(a.name=i.createUniqueName(o.name)),yc(a,o),o.extensions&&Zh(r,a,o);const s=o.nodes||[],l=[];for(let c=0,u=s.length;c{const u=new Map;for(const[d,f]of i.associations)(d instanceof Nr||d instanceof $n)&&u.set(d,f);return c.traverse((d=>{const f=i.associations.get(d);f!=null&&u.set(d,f)})),u})(a),a}))}}function NB(n,e,t,r){const o=t.nodes[n];return r.getDependency("node",n).then((function(i){return o.skin===void 0?i:r.getDependency("skin",o.skin).then((function(a){return i.traverse((function(s){s.isSkinnedMesh&&s.bind(a,s.matrixWorld)})),i}))})).then((function(i){e.add(i),(i.isDirectionalLight||i.isSpotLight)&&i.isFreeLight&&e.add(i.target);const a=[];if(o.children){const s=o.children;for(let l=0,c=s.length;l-1?kB(n):n.indexOf("COLOR_")>-1?FB(n):""}function kB(n){return n=="TEXCOORD_0"?"uv":"uv"+String(Number(n.split("TEXCOORD_")[1])+1)}function FB(n){return n=="COLOR_0"?"color":"color"+String(Number(n.split("COLOR_")[1])+1)}function VB(n){n.blending=5,n.blendEquation=100,n.blendSrc=201,n.blendDst=205}const UB=new Ge;class zB extends ti{constructor(e,t,r=512,o=512){super(),this.scene=e,this.camera=t,this.width=r,this.height=o,this.distance=.1,this.factor=1,this.precision=1,this.bentNormals=!1,this.noiseTexture=this.createNoiseTexture(),this.fsQuad=new Xi(null);const i=new P2;i.type=1014,this.renderTargetNormalDepth=new nn(this.width,this.height,{format:1023,depthTexture:i,depthBuffer:!0}),this.renderTargetNormalDepth.texture.name="GTAO.normal",this.renderTargetNormalDepth.depthTexture.name="GTAO.depth",this.renderTargetGTAO=new nn(this.width,this.height),this.renderTargetGTAO.texture.name="GTAO.gtao",this.renderTargetBlurX=new nn(this.width,this.height),this.renderTargetBlurX.texture.name="GTAO.blur",this.renderTarget=new nn(this.width,this.height),this.renderTarget.texture.name="GTAO.rt",this.materialNormal=new EP({}),this.materialGTAO=new Dn({type:"GTAO",defines:{ORTHO_CAMERA:0,CALC_BENT_NORMALS:0},extensions:{derivatives:!0},uniforms:{tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},occlDistance:{value:.1},factor:{value:1},occlPrecision:{value:1},mainCameraProjMat:{value:new Ue},resolution:{value:new be}},vertexShader:Qe.pp_plane_vert,fragmentShader:Qe.pp_gtao_frag}),this.materialBlur=new Dn({type:"GTAOBlur",defines:{},uniforms:{tDiffuse:{value:null},tNormal:{value:null},direction:{value:new be},resolution:{value:new be}},customPrepTokens:{BLUR_RADIUS_PX:2},vertexShader:Qe.pp_plane_vert,fragmentShader:Qe.pp_gtao_blur_frag}),this._layerMasks={}}setCamera(e){this.camera=e}setSize(e,t){this.width=e,this.height=t,this.renderTargetNormalDepth.setSize(e,t),this.renderTargetGTAO.setSize(e,t),this.renderTargetBlurX.setSize(e,t),this.renderTarget.setSize(e,t),this.materialGTAO.uniforms.mainCameraProjMat.value.copy(this.camera.projectionMatrix),this.materialGTAO.uniforms.resolution.value.set(this.renderTargetGTAO.width,this.renderTargetGTAO.height),this.materialBlur.uniforms.resolution.value.set(this.renderTargetGTAO.width,this.renderTargetGTAO.height)}dispose(){this.dispatchEvent({type:"dispose"}),this.renderTargetNormalDepth.dispose(),this.renderTargetGTAO.dispose(),this.renderTargetBlurX.dispose(),this.renderTarget.dispose(),this.materialNormal.dispose(),this.materialGTAO.dispose(),this.materialBlur.dispose(),this.noiseTexture.dispose()}_saveLayers(){this.scene.traverse((e=>this._layerMasks[e.id]=e.layers.mask))}_setupLayers(){this.scene.traverse((e=>{e.layers.disableAll();const t=e instanceof Mt&&e.material&&!e.material.gtaoVisible,r=e instanceof Mt&&e.material&&e.material.isMeshNodeMaterial&&(e.material.alphaTest>0||e.material.alphaToCoverage);t?e.layers.enable(0):r?e.layers.enable(1):e.layers.enable(2)}))}_restoreLayers(){this.scene.traverse((e=>e.layers.mask=this._layerMasks[e.id]))}_setupNodeAlphaClipHashMaterials(){this.scene.traverse((e=>{e instanceof Mt&&e.material&&e.material.isMeshNodeMaterial&&(e.material.defines.NORMAL_OUTPUT=Number(e.material.alphaTest>0||e.material.alphaToCoverage),e.material.needsUpdate=!0)}))}_restoreNodeAlphaClipHashMaterials(){this.scene.traverse((e=>{e instanceof Mt&&e.material&&e.material.isMeshNodeMaterial&&(e.material.defines.NORMAL_OUTPUT=0,e.material.needsUpdate=!0)}))}render(e){this._saveLayers(),this._setupLayers(),this.camera.layers.disableAll(),this.camera.layers.enable(1),this._setupNodeAlphaClipHashMaterials(),this._renderOverride(e,null,this.renderTargetNormalDepth,8355839,1,!0),this._restoreNodeAlphaClipHashMaterials(),this.camera.layers.disableAll(),this.camera.layers.enable(2),this._renderOverride(e,this.materialNormal,this.renderTargetNormalDepth,null,null,!0),this._restoreLayers(),this.materialGTAO.defines.ORTHO_CAMERA=this.camera.isOrthographicCamera?1:0,this.materialGTAO.defines.CALC_BENT_NORMALS=this.bentNormals?1:0,this.materialGTAO.needsUpdate=!0,this.materialGTAO.uniforms.tNormal.value=this.renderTargetNormalDepth.texture,this.materialGTAO.uniforms.tDepth.value=this.renderTargetNormalDepth.depthTexture,this.materialGTAO.uniforms.tNoise.value=this.noiseTexture,this.materialGTAO.uniforms.occlDistance.value=this.distance,this.materialGTAO.uniforms.factor.value=this.factor,this.materialGTAO.uniforms.occlPrecision.value=this.precision,this.materialGTAO.uniforms.mainCameraProjMat.value.copy(this.camera.projectionMatrix),this.materialGTAO.uniforms.resolution.value.set(this.renderTargetGTAO.width,this.renderTargetGTAO.height),this._renderPass(e,this.materialGTAO,this.renderTargetGTAO),this.materialBlur.uniforms.tDiffuse.value=this.renderTargetGTAO.texture,this.materialBlur.map=this.renderTargetGTAO.texture,this.materialBlur.uniforms.tNormal.value=this.renderTargetNormalDepth.texture,this.materialBlur.uniforms.direction.value.set(1,0),this.materialBlur.uniforms.resolution.value.set(this.renderTargetGTAO.width,this.renderTargetGTAO.height),this._renderPass(e,this.materialBlur,this.renderTargetBlurX),this.materialBlur.uniforms.tDiffuse.value=this.renderTargetBlurX.texture,this.materialBlur.map=this.renderTargetBlurX.texture,this.materialBlur.uniforms.direction.value.set(0,1),this.materialBlur.uniforms.resolution.value.set(this.renderTargetBlurX.width,this.renderTargetBlurX.height),this._renderPass(e,this.materialBlur,this.renderTarget)}_renderOverride(e,t,r,o,i,a){const s=e.getRenderTarget(),l=e.getClearColor(UB),c=e.getClearAlpha(),u=e.autoClear,d=this.scene.background;e.setRenderTarget(r),o!=null&&(e.setClearColor(o),e.setClearAlpha(i??0),e.clear()),e.autoClear=!1,a&&(this.scene.background=null),t&&(this.scene.overrideMaterial=t),e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.setRenderTarget(s),e.setClearColor(l),e.setClearAlpha(c),e.autoClear=u,this.scene.background=d}_renderPass(e,t,r,o,i){const a=e.getRenderTarget(),s=e.getClearColor(UB),l=e.getClearAlpha(),c=e.autoClear;e.setRenderTarget(r),o!=null&&(e.setClearColor(o),e.setClearAlpha(i??0),e.clear()),e.autoClear=!1,this.fsQuad.material=t,this.fsQuad.render(e),e.setRenderTarget(a),e.setClearColor(s),e.setClearAlpha(l),e.autoClear=c}createNoiseTexture(){const e=new Uint8Array([101,192,145,80,53,136,86,207,229,131,240,6,58,41,171,13,199,63,175,128,113,55,246,66,115,213,157,59,243,114,68,169,255,60,216,5,200,37,250,65,170,48,153,108,125,211,137,29,120,82,38,213,25,198,15,150,33,131,173,16,140,180,9,206,134,20,117,176,99,222,124,190,95,33,198,221,86,68,241,157,227,142,253,96,72,135,169,102,204,253,89,195,50,233,94,38,185,86,235,72,149,163,25,2,146,75,254,14,164,189,0,100,49,187,162,8,181,222,240,52,7,73,41,109,210,123,76,150,226,161,44,11,242,51,107,232,212,116,177,54,141,37,207,77,115,19,59,235,110,42,83,122,160,184,224,148,2,164,248,24,203,109,129,192,208,138,83,182,61,132,28,229,96,121,224,173,248,197,88,127,147,29,193,210,139,96,237,30,63,191,102,54,69,178,32,93,63,170,36,247,17,201,80,155,245,18,60,133,151,32,219,206,165,67,230,20,57,12,171,128,84,221,139,13,236,146,220,252,20,120,222,150,99,166,43,108,196,183,89,45,9,107,74,49,4,100,175,117,246,71,198,113,241,39,174,119,46,82,1,157,105,195,72,9,127,239,217,6,69,145,211,166,230,181,240,136,190,251,87,155,35,219,143,50,22,159,213,92,191,127,212,41,135,237,50,206,88,58,176,118,36,234,27,114,64,93,157,119,21,214,45,129,187,105,92,208,182,66,6,249,27,167,62,185,78,172,29,160,188,25,139,249,161,84,130,254,203,14,37,226,59,143,77,238,0,166,18,254,79,133,103,153,205,113,94,246,12,216,100,116,227,76,209,48,97,186,1,53,144,192,82,169,108,179,28,198,65,228,42,151,122,197,233,53,74,222,24,146,123,56,141,255,3,151,106,20,200,220,73,174,104,216,131,248,7,209,156,86,112,136,177,58,223,11,36,140,241,8,195,178,232,85,200,43,65,180,240,133,61,149,120,231,22,46,71,30,92,230,121,52,242,215,97,26,110,186,89,172,158,102,50,70,34,156,15,189,126,91,34,168,10,245,39,91,163,243,152,202,140,42,188,17,163,8,203,77,156,237,63,118,32,130,251,165,112,208,98,235,161,213,228,81,110,194,178,14,125,185,111,61,173,103,253,71,144,39,125,250,45,207,15,217,177,202,88,1,226,132,75,26,56,12,119,203,46,137,66,209,77,220,3,238,19,80,129,218,179,90,193,168,132,98,146,81,19,235,142,59,183,44,250,174,104,144,69,155,251,97,230,145,33,99,49,159,212,196,31,56,110,225,22,62,2,183,245,55,123,40,106,215,17,150,116,218,194,238,31,186,0,23,55,162,241,194,135,87,118,147,236,4,158,244,75,117,228,35,109,194,67,155,78,168,199,91,64,8,135,47,88,169,212,129,181,111,11,65,170,227,40,68,176,95,201,46,142,209,154,90,165,218,255,188,232,27,121,244,35,163,79,206,124,242,103,72,223,83,204,123,25,247,10,191,111,136,26,85,187,18,236,51,134,7,144,13,99,48,138,227,190,101,223,24,153,60,41,149,30,255,45,152,184,103,78,162,51,252,217,128,171,104,70,197,30,84,114,57,176,205,70,4,148,54,253,181,113,6,231,191,134,172,95,220,56,211,141,233,205,16,66,40,224,5,122,243,179,211,226,127,247,158,85,111,174,126,15,73,202,167,87,215,17,116,3,71,130,19,35,90,124,154,182,98,248,148,57,156,96,43,73,196,34,16,218,237,42,208,94,143,38,247,122,67,52,201,234,164,249,177,199,61,1,108,76,167,31,204,80,231,22,170,0,147,93,120,183,64,28,161,239,57,185,105,28,159,139,184,106,40,81,114,145,242,219,190,239,53,138,112,11,187,133,107,204,239,168,54,141,102,193,81,221,134,9,216,78,229,244,90,23,153,225,10,95,160,43,132,23,214,195,89,47,215,252,62,38,82,228,21,214,251,2,151,109,21,175,197,149,44,5,173,64,210,52,196,69,29,172,83,118,13,154,236,175,119,26,159,137,112,189,44,131,75,171,121,49,232,92,126,62,101,205,130,117,250,138,180,125,207,254,58,225,97,67,37,142,74,98,182,210,7,68,152,202,94,34,243,200,70,39,252,166,16,224,188,32,84,21,100,231,12,106,148,199,178,249,164,5,229,55,245,87,165,234,105,14,225,60,184,140,158,214,27,115,143,74,51,162,147,238,47,76,167,36,137,3,48,126,104,201,189,128,18,47,124,31,244,180,160,115,23,10,101,79,179,193,233,93,246,107,217,4,192,154,221,91,186,234,79,24,219,85,33,152,223]),t=new Uint8Array([7,87,145,233,57,15,124,219,7,163,132,35,222,160,41,99,10,23,228,253,53,207,65,214,94,146,248,134,214,15,97,230,201,181,41,105,189,206,171,100,146,78,188,106,177,87,141,232,198,122,70,178,149,26,124,174,16,55,115,35,70,179,158,111,74,241,122,159,29,90,47,242,23,229,213,16,245,72,26,183,58,136,205,43,86,239,139,226,77,188,203,86,224,144,50,30,135,62,11,218,255,68,156,185,59,121,91,49,199,152,219,109,243,162,14,221,113,192,3,100,42,152,233,168,22,123,251,210,153,191,99,173,139,114,2,133,201,32,169,135,64,118,1,47,89,31,102,76,154,35,63,164,255,127,9,62,106,187,4,91,44,222,17,80,39,209,237,82,107,251,148,11,231,174,208,130,194,171,234,184,248,121,216,199,110,28,212,137,240,77,164,232,25,128,247,150,57,193,20,160,44,211,75,191,96,37,81,254,147,66,8,140,54,21,177,89,74,51,175,93,39,199,55,115,84,202,104,179,230,124,97,222,64,177,27,111,239,158,17,57,105,219,42,209,95,132,231,13,144,244,194,157,226,18,143,180,66,166,48,5,74,32,169,142,7,241,128,52,216,137,185,228,26,124,84,166,189,71,38,158,221,115,1,65,123,102,250,216,34,242,140,113,212,188,249,85,118,197,156,89,5,70,116,167,202,153,240,114,4,246,203,100,46,185,84,31,209,173,6,130,196,22,225,91,155,61,16,49,103,229,36,206,173,249,46,92,12,73,33,223,142,60,172,126,22,234,135,246,151,75,52,97,161,79,182,12,235,132,207,150,184,20,78,143,101,28,196,235,134,178,53,195,24,108,82,215,150,55,168,110,43,189,233,144,207,59,125,44,168,108,34,220,69,166,244,58,225,125,149,63,213,104,253,93,155,184,11,250,73,96,201,8,218,88,14,117,223,105,247,193,71,88,254,122,3,132,191,113,10,181,40,83,0,162,127,41,210,235,122,36,195,18,228,65,131,176,253,38,19,165,0,146,27,203,178,54,96,234,43,159,90,218,245,112,191,229,18,79,66,137,51,160,180,141,118,164,30,101,154,71,137,94,217,56,238,134,17,153,200,80,29,204,67,23,155,52,172,33,145,198,175,7,223,103,87,244,41,79,236,204,51,186,81,199,176,112,77,224,40,110,170,223,144,251,174,131,98,205,73,121,247,97,238,116,29,204,62,2,213,183,145,24,125,241,228,45,31,129,160,92,188,246,62,6,102,50,116,15,240,140,10,218,59,45,151,83,167,255,130,157,107,55,92,219,110,5,61,147,252,8,212,51,12,140,75,126,183,215,83,194,43,226,88,165,109,187,21,215,68,39,192,20,239,198,12,68,174,159,99,121,192,70,231,177,119,209,237,19,154,33,232,163,65,180,29,200,129,4,231,135,182,98,147,76,118,165,136,248,40,211,14,85,169,107,25,151,100,36,164,197,92,58,136,2,123,106,148,252,75,210,162,53,120,9,233,217,46,28,226,83,128,195,245,224,38,141,205,61,249,86,48,227,114,255,186,207,77,236,16,56,39,102,85,30,247,203,60,87,179,103,186,56,152,22,180,131,53,236,81,15,190,134,175,8,72,147,24,99,48,215,192,172,139,240,196,149,108,168,17,127,157,252,1,206,114,74,161,98,3,186,156,120,221,27,108,211,129,40,170,242,158,131,91,115,225,20,178,71,45,222,142,197,36,66,145,93,234,34,198,67,217,109,243,45,67,161,237,54,195,224,85,112,6,32,69,155,9,64,123,212,3,94,242,76,113,214,25,170,49,220,119,148,28,170,90,10,200,143,80,95,153,18,64,202,175,220,250,42,208,96,163,254,133,185,21,52,230,190,126,244,138,13,86,254,58,138,211,125,179,251,34,2,183,248,126,143,54,187,78,136,235,193,50,32,82,117,173,161,98,9,82,63,105,187,19,205,37,230,76,21,104,60,167,119,214,106,37,227,13,101,120,167,25,109,146,227,201,60,238,38,148,206,181,42,163,236,176,128,107,154,184,50,225,208,133,232,49,73,165,90,239,152,204,0,89,182,72,11,156,101,217,14,130,252,111,227,5,72,95,47,196,0,245,94,149,13,84,27,150,193,19,181,68,30,48,243,61,221,127,246,24,138,190,69,88,57,26,141,210,151,220,249,67,117,166,35,194,112,176,202,95,237,139,208,111,129,216,190,142,37,171,197,81,47,119,229,159,200,171,79,120,33,133,169,23,213,80,138,238,69,44,253,63,117,4,56,250,172,78,157,93,116,6,104,162,241,31,182,1,103,46,243,189,59]),r=new Uint8Array(2048);for(let i=0;i<1024;i++)r[2*i]=e[i],r[2*i+1]=t[i];const o=new gs(r,32,32,1030,1009);return o.name="GTAO.noise",o.wrapS=1e3,o.wrapT=1e3,o.needsUpdate=!0,o}}class _2e{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e{const o=this._getIdleWorker();o!==-1?(this._initWorker(o),this.workerStatus|=1<e.terminate())),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const k3=new WeakMap;let F3=0;class Pa extends Ci{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new _2e,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('v3d.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}detectSupport(e){return this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc")&&e.extensions.has("WEBGL_compressed_texture_s3tc_srgb"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},e.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}init(){if(!this.transcoderPending){const e=new Si(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),r=new Si(this.manager);r.setPath(this.transcoderPath),r.setResponseType("arraybuffer"),r.setWithCredentials(this.withCredentials);const o=r.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,o]).then((([i,a])=>{const s=Pa.BasisWorker.toString(),l=["/* constants */","let _EngineFormat = "+JSON.stringify(Pa.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(Pa.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Pa.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([l])),this.transcoderBinary=a,this.workerPool.setWorkerCreator((()=>{const c=new Worker(this.workerSourceURL),u=this.transcoderBinary.slice(0);return c.postMessage({type:"init",config:this.workerConfig,transcoderBinary:u},[u]),c}))})),F3>0&&console.warn("v3d.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),F3++}return this.transcoderPending}load(e,t,r,o){if(this.workerConfig===null)throw new Error("v3d.KTX2Loader: Missing initialization with `.detectSupport(renderer)`.");const i=new Si(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials);const a=new dl;return i.load(e,(s=>{if(k3.has(s))return k3.get(s).promise.then(t).catch(o);this._createTexture([s]).then((function(l){a.copy(l),a.needsUpdate=!0,t&&t(a)})).catch(o)}),r,o),a}_createTextureFrom(e){const{mipmaps:t,width:r,height:o,format:i,type:a,error:s,dfdTransferFn:l,dfdFlags:c}=e;if(a==="error")return Promise.reject(s);const u=new dl(t,r,o,i,1009);return u.minFilter=t.length===1?1006:1008,u.magFilter=1006,u.generateMipmaps=!1,u.needsUpdate=!0,u.encoding=l===2?3001:3e3,u.premultiplyAlpha=!!(1&c),u}_createTexture(e,t={}){const r=t,o=this.init().then((()=>this.workerPool.postMessage({type:"transcode",buffers:e,taskConfig:r},e))).then((i=>this._createTextureFrom(i.data)));return k3.set(e[0],{promise:o}),o}dispose(){return URL.revokeObjectURL(this.workerSourceURL),this.workerPool.dispose(),F3--,this}}Pa.BasisFormat={ETC1S:0,UASTC_4x4:1},Pa.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16},Pa.EngineFormat={RGBAFormat:1023,RGBA_ASTC_4x4_Format:37808,RGBA_BPTC_Format:36492,RGBA_ETC2_EAC_Format:37496,RGBA_PVRTC_4BPPV1_Format:35842,RGBA_S3TC_DXT5_Format:33779,RGB_ETC1_Format:36196,RGB_ETC2_Format:37492,RGB_PVRTC_4BPPV1_Format:35840,RGB_S3TC_DXT1_Format:33776},Pa.BasisWorker=function(){let n,e,t;const r=_EngineFormat,o=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",(function(u){const d=u.data;switch(d.type){case"init":n=d.config,f=d.transcoderBinary,e=new Promise((h=>{t={wasmBinary:f,onRuntimeInitialized:h},BASIS(t)})).then((()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("v3d.KTX2Loader: Please update Basis Universal transcoder.")}));break;case"transcode":e.then((()=>{try{const{width:h,height:p,hasAlpha:m,mipmaps:g,format:_,dfdTransferFn:A,dfdFlags:y}=(function(E){const x=new t.KTX2File(new Uint8Array(E));function w(){x.close(),x.delete()}if(!x.isValid())throw w(),new Error("v3d.KTX2Loader: Invalid or unsupported .ktx2 file");const L=x.isUASTC()?i.UASTC_4x4:i.ETC1S,C=x.getWidth(),P=x.getHeight(),D=x.getLevels(),Q=x.getHasAlpha(),re=x.getDFDTransferFunc(),G=x.getDFDFlags(),{transcoderFormat:se,engineFormat:ee}=(function(H,T,R,O){let W,ae;const ne=H===i.ETC1S?s:l;for(let oe=0;oe1&&e.multiplyScalar(1/t),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}var hd=function(){var n=0,e=document.createElement("div");function t(u){return e.appendChild(u.dom),u}function r(u){for(var d=0;d=i+1e3&&(s.update(1e3*a/(u-i),100),i=u,a=0,c)){var d=performance.memory;c.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return u},update:function(){o=this.end()}}};hd.Panel=function(n,e,t){var r=1/0,o=0,i=Math.round,a=i(window.devicePixelRatio||1),s=80*a,l=48*a,c=3*a,u=2*a,d=3*a,f=15*a,h=74*a,p=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*a+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=t,g.fillRect(0,0,s,l),g.fillStyle=e,g.fillText(n,c,u),g.fillRect(d,f,h,p),g.fillStyle=t,g.globalAlpha=.9,g.fillRect(d,f,h,p),{dom:m,update:function(_,A){r=Math.min(r,_),o=Math.max(o,_),g.fillStyle=t,g.globalAlpha=1,g.fillRect(0,0,s,f),g.fillStyle=e,g.fillText(i(_)+" "+n+" ("+i(r)+"-"+i(o)+")",c,u),g.drawImage(m,d+a,f,h-a,p,d,f,h-a,p),g.fillRect(d+h-a,f,a,p),g.fillStyle=t,g.globalAlpha=.9,g.fillRect(d+h-a,f,a,i((1-_/A)*p))}}};const Jh=new N,ep=new N;class A2e extends ai{constructor(e,t=1,r=16711680){var a;const o=new At;if((a=e.geometry)==null?void 0:a.attributes.normal){const s=e.geometry.attributes.normal.count,l=new mt(2*s*3,3);o.setAttribute("position",l)}super(o,new _r({color:r,toneMapped:!1})),this.object=e,this.size=t,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){var o,i;const e=this.geometry.attributes.position,t=(o=this.object.geometry)==null?void 0:o.attributes.position,r=(i=this.object.geometry)==null?void 0:i.attributes.normal;if(e&&t&&r){let a=0;for(let s=0,l=t.count;s65535?new Uint32Array(new e(4*n)):new Uint16Array(new e(2*n))}function T2e(n,e){if(!n.index){const t=n.attributes.position.count,r=M2e(t,e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);n.setIndex(new Xe(r,1));for(let o=0;ol-c));for(let l=0;la.offset-s.offset)),o=r[r.length-1];o.count=Math.min(t-o.offset,o.count);let i=0;return r.forEach((({count:a})=>i+=a)),t!==i}function U3(n,e,t,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0,d=1/0,f=1/0,h=1/0,p=-1/0,m=-1/0,g=-1/0;for(let _=6*e,A=6*(e+t);_l&&(l=x),yp&&(p=y);const w=n[_+2],L=n[_+3],C=w-L,P=w+L;Cc&&(c=P),wm&&(m=w);const D=n[_+4],Q=n[_+5],re=D-Q,G=D+Q;reu&&(u=G),Dg&&(g=D)}r[0]=i,r[1]=a,r[2]=s,r[3]=l,r[4]=c,r[5]=u,o[0]=d,o[1]=f,o[2]=h,o[3]=p,o[4]=m,o[5]=g}function R2e(n,e=null,t=null,r=null){const o=n.attributes.position,i=n.index?n.index.array:null,a=pd(n),s=o.normalized;let l;e===null?(l=new Float32Array(6*a),t=0,r=a):(l=e,t=t||0,r=r||a);const c=o.array,u=o.offset||0,d=["getX","getY","getZ"];for(let f=t;fw&&(w=b),E>w&&(w=E);const L=(w-x)/2,C=2*A;l[p+C+0]=x+L,l[p+C+1]=L+(Math.abs(x)+L)*S2e}}return l}function ir(n,e,t){return t.min.x=e[n],t.min.y=e[n+1],t.min.z=e[n+2],t.max.x=e[n+3],t.max.y=e[n+4],t.max.z=e[n+5],t}function QB(n){let e=-1,t=-1/0;for(let r=0;r<3;r++){const o=n[r+3]-n[r];o>t&&(t=o,e=r)}return e}function $B(n,e){e.set(n)}function YB(n,e,t){let r,o;for(let i=0;i<3;i++){const a=i+3;r=n[i],o=e[i],t[i]=ro?r:o}}function R1(n,e,t){for(let r=0;r<3;r++){const o=e[n+2*r],i=e[n+2*r+1],a=o-i,s=o+i;at[r+3]&&(t[r+3]=s)}}function tp(n){const e=n[3]-n[0],t=n[4]-n[1],r=n[5]-n[2];return 2*(e*t+t*r+r*e)}const L2e=(n,e)=>n.candidate-e.candidate,vl=new Array(32).fill().map((()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0}))),L1=new Float32Array(6);function P2e(n,e,t,r,o,i){let a=-1,s=0;if(i===0)a=QB(e),a!==-1&&(s=(e[a]+e[a+3])/2);else if(i===1)a=QB(n),a!==-1&&(s=D2e(t,r,o,a));else if(i===2){const l=tp(n);let c=1.25*o;const u=6*r,d=6*(r+o);for(let f=0;f<3;f++){const h=e[f],p=(e[f+3]-h)/32;if(o<8){const m=[...vl];m.length=o;let g=0;for(let A=u;A=E.candidate?R1(A,t,E.rightCacheBounds):(R1(A,t,E.leftCacheBounds),E.count++)}}for(let A=0;A<_;A++){const y=m[A],b=y.count,E=o-y.count,x=y.leftCacheBounds,w=y.rightCacheBounds;let L=0;b!==0&&(L=tp(x)/l);let C=0;E!==0&&(C=tp(w)/l);const P=1+1.25*(L*b+C*E);P=32&&(A=31);const y=vl[A];y.count++,R1(_,t,y.bounds)}const m=vl[31];$B(m.bounds,m.rightCacheBounds);for(let _=30;_>=0;_--){const A=vl[_],y=vl[_+1];YB(A.bounds,y.rightCacheBounds,A.rightCacheBounds)}let g=0;for(let _=0;_<31;_++){const A=vl[_],y=A.count,b=A.bounds,E=vl[_+1].rightCacheBounds;y!==0&&(g===0?$B(b,L1):YB(b,L1,L1)),g+=y;let x=0,w=0;g!==0&&(x=tp(L1)/l);const L=o-g;L!==0&&(w=tp(E)/l);const C=1+1.25*(x*g+w*L);C=l;)s--;if(!(a=l;)s--;if(!(aO2e)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return np[t+6]=c/4,c=H3(c,s),np[t+7]=l,c}}function F2e(n,e){const t=(n.index?n.index.count:n.attributes.position.count)/3,r=t>65536,o=r?4:2,i=e?new SharedArrayBuffer(t*o):new ArrayBuffer(t*o),a=r?new Uint32Array(i):new Uint16Array(i);for(let s=0,l=a.length;s=i&&(_=!0,a&&(console.warn(`MeshBVH: Max depth of ${i} reached when generating BVH. Consider increasing maxDepth.`),console.warn(f))),w<=s||C>=i)return y(x+w),E.offset=x,E.count=w,E;const P=P2e(E.boundingData,L,e,x,w,l);if(P.axis===-1)return y(x+w),E.offset=x,E.count=w,E;const D=p(d,h,e,x,w,P);if(D===x||D===x+w)y(x+w),E.offset=x,E.count=w;else{E.splitAxis=P.axis;const Q=new z3,re=x,G=D-x;E.left=Q,U3(e,re,G,Q.boundingData,g),b(Q,re,G,g,C+1);const se=new z3,ee=D,ie=w-G;E.right=se,U3(e,ee,ie,se.boundingData,g),b(se,ee,ie,g,C+1)}return E})(A,t,r,g),A;function y(b){c&&c(b/m)}}function U2e(n,e){const t=n.geometry;e.indirect&&(n._indirectBuffer=F2e(t,e.useSharedArrayBuffer),I2e(t,e.range)&&!e.verbose&&console.warn('MeshBVH: Provided geometry contains groups or a range that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),n._indirectBuffer||T2e(t,e);const r=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,o=R2e(t),i=e.indirect?WB(t,e.range):jB(t,e.range);n._roots=i.map((a=>{const s=V2e(n,o,a.offset,a.count,e),l=G3(s),c=new r(32*l);return k2e(0,s,c),c}))}class ws{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let r=1/0,o=-1/0;for(let i=0,a=e.length;io?s:o}this.min=r,this.max=o}setFromPoints(e,t){let r=1/0,o=-1/0;for(let i=0,a=t.length;io?l:o}this.min=r,this.max=o}isSeparated(e){return this.min>e.max||e.min>this.max}}ws.prototype.setFromBox=(function(){const n=new N;return function(e,t){const r=t.min,o=t.max;let i=1/0,a=-1/0;for(let s=0;s<=1;s++)for(let l=0;l<=1;l++)for(let c=0;c<=1;c++){n.x=r.x*s+o.x*(1-s),n.y=r.y*l+o.y*(1-l),n.z=r.z*c+o.z*(1-c);const u=e.dot(n);i=Math.min(u,i),a=Math.max(u,a)}this.min=i,this.max=a}})();const z2e=(function(){const n=new N,e=new N,t=new N;return function(r,o,i){const a=r.start,s=n,l=o.start,c=e;t.subVectors(a,l),n.subVectors(r.end,r.start),e.subVectors(o.end,o.start);const u=t.dot(c),d=c.dot(s),f=c.dot(c),h=t.dot(s),p=s.dot(s)*f-d*d;let m,g;m=p!==0?(u*d-h*f)/p:0,g=(u+m*d)/f,i.x=m,i.y=g}})(),W3=(function(){const n=new be,e=new N,t=new N;return function(r,o,i,a){z2e(r,o,n);let s=n.x,l=n.y;if(s>=0&&s<=1&&l>=0&&l<=1)return r.at(s,i),void o.at(l,a);if(s>=0&&s<=1)return l<0?o.at(0,a):o.at(1,a),void r.closestPointToPoint(a,!0,i);if(l>=0&&l<=1)return s<0?r.at(0,i):r.at(1,i),void o.closestPointToPoint(i,!0,a);{let c,u;c=s<0?r.start:r.end,u=l<0?o.start:o.end;const d=e,f=t;return r.closestPointToPoint(u,!0,e),o.closestPointToPoint(c,!0,t),d.distanceToSquared(u)<=f.distanceToSquared(c)?(i.copy(d),void a.copy(u)):(i.copy(c),void a.copy(f))}}})(),G2e=(function(){const n=new N,e=new N,t=new Vo,r=new wa;return function(o,i){const{radius:a,center:s}=o,{a:l,b:c,c:u}=i;if(r.start=l,r.end=c,r.closestPointToPoint(s,!0,n).distanceTo(s)<=a||(r.start=l,r.end=u,r.closestPointToPoint(s,!0,n).distanceTo(s)<=a)||(r.start=c,r.end=u,r.closestPointToPoint(s,!0,n).distanceTo(s)<=a))return!0;const d=i.getPlane(t);if(Math.abs(d.distanceToPoint(s))<=a){const f=d.projectPoint(s,e);if(i.containsPoint(f))return!0}return!1}})();function j3(n){return Math.abs(n)<1e-15}class Li extends Br{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map((()=>new N)),this.satBounds=new Array(4).fill().map((()=>new ws)),this.points=[this.a,this.b,this.c],this.sphere=new ni,this.plane=new Vo,this.needsUpdate=!0}intersectsSphere(e){return G2e(e,this)}update(){const e=this.a,t=this.b,r=this.c,o=this.points,i=this.satAxes,a=this.satBounds,s=i[0],l=a[0];this.getNormal(s),l.setFromPoints(s,o);const c=i[1],u=a[1];c.subVectors(e,t),u.setFromPoints(c,o);const d=i[2],f=a[2];d.subVectors(t,r),f.setFromPoints(d,o);const h=i[3],p=a[3];h.subVectors(r,e),p.setFromPoints(h,o),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(s,e),this.needsUpdate=!1}}Li.prototype.closestPointToSegment=(function(){const n=new N,e=new N,t=new wa;return function(r,o=null,i=null){const{start:a,end:s}=r,l=this.points;let c,u=1/0;for(let d=0;d<3;d++){const f=(d+1)%3;t.start.copy(l[d]),t.end.copy(l[f]),W3(t,r,n,e),c=n.distanceToSquared(e),c=2){(b===1?_.start:_.end).copy(h),y=2;break}if(y++,y===2&&b===-1)break}}return y}return function(m,g=null,_=!1){this.needsUpdate&&this.update(),m.isExtendedTriangle?m.needsUpdate&&m.update():(n.copy(m),n.update(),m=n);const A=this.plane,y=m.plane;if(Math.abs(A.normal.dot(y.normal))>1-1e-10){const b=this.satBounds,E=this.satAxes;t[0]=m.a,t[1]=m.b,t[2]=m.c;for(let L=0;L<4;L++){const C=b[L],P=E[L];if(r.setFromPoints(P,t),C.isSeparated(r))return!1}const x=m.satBounds,w=m.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let L=0;L<4;L++){const C=x[L],P=w[L];if(r.setFromPoints(P,e),C.isSeparated(r))return!1}for(let L=0;L<4;L++){const C=E[L];for(let P=0;P<4;P++){const D=w[P];if(i.crossVectors(C,D),r.setFromPoints(i,e),o.setFromPoints(i,t),r.isSeparated(o))return!1}}return g&&(_||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),g.start.set(0,0,0),g.end.set(0,0,0)),!0}{const b=p(this,y,d);if(b===1&&m.containsPoint(d.end))return g&&(g.start.copy(d.end),g.end.copy(d.end)),!0;if(b!==2)return!1;const E=p(m,A,f);if(E===1&&this.containsPoint(f.end))return g&&(g.start.copy(f.end),g.end.copy(f.end)),!0;if(E!==2)return!1;if(d.delta(s),f.delta(l),s.dot(l)<0){let P=f.start;f.start=f.end,f.end=P}const x=d.start.dot(s),w=d.end.dot(s),L=f.start.dot(s),C=f.end.dot(s);return(x===C||L===w||w0?g.start.copy(d.start):g.start.copy(f.start),c.subVectors(d.end,f.end),c.dot(s)<0?g.end.copy(d.end):g.end.copy(f.end)),!0)}}})(),Li.prototype.distanceToPoint=(function(){const n=new N;return function(e){return this.closestPointToPoint(e,n),e.distanceTo(n)}})(),Li.prototype.distanceToTriangle=(function(){const n=new N,e=new N,t=["a","b","c"],r=new wa,o=new wa;return function(i,a=null,s=null){const l=a||s?r:null;if(this.intersectsTriangle(i,l))return(a||s)&&(a&&l.getCenter(a),s&&l.getCenter(s)),0;let c=1/0;for(let u=0;u<3;u++){let d;const f=t[u],h=i[f];this.closestPointToPoint(h,n),d=h.distanceToSquared(n),dnew N)),this.satAxes=new Array(3).fill().map((()=>new N)),this.satBounds=new Array(3).fill().map((()=>new ws)),this.alignedSatBounds=new Array(3).fill().map((()=>new ws)),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),r&&this.matrix.copy(r)}set(e,t,r){this.min.copy(e),this.max.copy(t),this.matrix.copy(r),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}bo.prototype.update=function(){const n=this.matrix,e=this.min,t=this.max,r=this.points;for(let l=0;l<=1;l++)for(let c=0;c<=1;c++)for(let u=0;u<=1;u++){const d=r[1*l|2*c|4*u];d.x=l?t.x:e.x,d.y=c?t.y:e.y,d.z=u?t.z:e.z,d.applyMatrix4(n)}const o=this.satBounds,i=this.satAxes,a=r[0];for(let l=0;l<3;l++){const c=i[l],u=o[l],d=r[1<new wa)),t=new Array(12).fill().map((()=>new wa)),r=new N,o=new N;return function(i,a=0,s=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(i))return(s||l)&&(i.getCenter(o),this.closestPointToPoint(o,r),i.closestPointToPoint(r,o),s&&s.copy(r),l&&l.copy(o)),0;const c=a*a,u=i.min,d=i.max,f=this.points;let h=1/0;for(let m=0;m<8;m++){const g=f[m];o.copy(g).clamp(u,d);const _=g.distanceToSquared(o);if(_new Li))}}const Pi=new H2e;class W2e{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=r=>{t&&e.push(t),t=r,this.float32Array=new Float32Array(r),this.uint16Array=new Uint16Array(r),this.uint32Array=new Uint32Array(r)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const Wn=new W2e;let Al,md;const gd=[],D1=new Q3((()=>new Tn));function j2e(n,e,t,r,o,i){Al=D1.getPrimitive(),md=D1.getPrimitive(),gd.push(Al,md),Wn.setBuffer(n._roots[e]);const a=$3(0,n.geometry,t,r,o,i);Wn.clearBuffer(),D1.releasePrimitive(Al),D1.releasePrimitive(md),gd.pop(),gd.pop();const s=gd.length;return s>0&&(md=gd[s-1],Al=gd[s-2]),a}function $3(n,e,t,r,o=null,i=0,a=0){const{float32Array:s,uint16Array:l,uint32Array:c}=Wn;let u=2*n;if(Wo(u,l)){const d=di(n,c),f=Ti(u,l);return ir(n,s,Al),r(d,f,!1,a,i+n,Al)}{let w=function(C){const{uint16Array:P,uint32Array:D}=Wn;let Q=2*C;for(;!Wo(Q,P);)Q=2*(C=Ii(C));return di(C,D)},L=function(C){const{uint16Array:P,uint32Array:D}=Wn;let Q=2*C;for(;!Wo(Q,P);)Q=2*(C=Ri(C,D));return di(C,D)+Ti(Q,P)};const d=Ii(n),f=Ri(n,c);let h,p,m,g,_=d,A=f;if(o&&(m=Al,g=md,ir(_,s,m),ir(A,s,g),h=o(m),p=o(g),p(rp.copy(e).clamp(u.min,u.max),rp.distanceToSquared(e)),intersectsBounds:(u,d,f)=>f{u.closestPointToPoint(e,rp);const f=e.distanceToSquared(rp);return f=169,bc=new N,xc=new N,Ec=new N,B1=new be,N1=new be,O1=new be,ZB=new N,JB=new N,eN=new N,op=new N;function Y2e(n,e,t,r,o,i,a,s){let l;if(l=i===1?n.intersectTriangle(r,t,e,!0,o):n.intersectTriangle(e,t,r,i!==2,o),l===null)return null;const c=n.origin.distanceTo(o);return cs?null:{distance:c,point:o.clone()}}function X2e(n,e,t,r,o,i,a,s,l,c,u){bc.fromBufferAttribute(e,i),xc.fromBufferAttribute(e,a),Ec.fromBufferAttribute(e,s);const d=Y2e(n,bc,xc,Ec,op,l,c,u);if(d){const f=new N;Br.getBarycoord(op,bc,xc,Ec,f),r&&(B1.fromBufferAttribute(r,i),N1.fromBufferAttribute(r,a),O1.fromBufferAttribute(r,s),d.uv=Br.getInterpolation(op,bc,xc,Ec,B1,N1,O1,new be)),o&&(B1.fromBufferAttribute(o,i),N1.fromBufferAttribute(o,a),O1.fromBufferAttribute(o,s),d.uv1=Br.getInterpolation(op,bc,xc,Ec,B1,N1,O1,new be)),t&&(ZB.fromBufferAttribute(t,i),JB.fromBufferAttribute(t,a),eN.fromBufferAttribute(t,s),d.normal=Br.getInterpolation(op,bc,xc,Ec,ZB,JB,eN,new N),d.normal.dot(n.direction)>0&&d.normal.multiplyScalar(-1));const h={a:i,b:a,c:s,normal:new N,materialIndex:0};Br.getNormal(bc,xc,Ec,h.normal),d.face=h,d.faceIndex=i,$2e&&(d.barycoord=f)}return d}function k1(n,e,t,r,o,i,a){const s=3*r;let l=s+0,c=s+1,u=s+2;const d=n.index;n.index&&(l=d.getX(l),c=d.getX(c),u=d.getX(u));const{position:f,normal:h,uv:p,uv1:m}=n.attributes,g=X2e(t,f,h,p,m,l,c,u,e,i,a);return g?(g.faceIndex=r,o&&o.push(g),g):null}function Ar(n,e,t,r){const o=n.a,i=n.b,a=n.c;let s=e,l=e+1,c=e+2;t&&(s=t.getX(s),l=t.getX(l),c=t.getX(c)),o.x=r.getX(s),o.y=r.getY(s),o.z=r.getZ(s),i.x=r.getX(l),i.y=r.getY(l),i.z=r.getZ(l),a.x=r.getX(c),a.y=r.getY(c),a.z=r.getZ(c)}function q2e(n,e,t,r,o,i,a,s){const{geometry:l,_indirectBuffer:c}=n;for(let u=r,d=r+o;ub&&(b=P),DE&&(E=D),Qx&&(x=Q)}return(l[f+0]!==_||l[f+1]!==A||l[f+2]!==y||l[f+3]!==b||l[f+4]!==E||l[f+5]!==x)&&(l[f+0]=_,l[f+1]=A,l[f+2]=y,l[f+3]=b,l[f+4]=E,l[f+5]=x,!0)}{const g=f+8,_=a[f+6],A=g+h,y=_+h;let b=p,E=!1,x=!1;e?b||(E=e.has(A),x=e.has(y),b=!E&&!x):(E=!0,x=!0);const w=b||x;let L=!1;(b||E)&&(L=d(g,h,b));let C=!1;w&&(C=d(_,h,b));const P=L||C;if(P)for(let D=0;D<3;D++){const Q=g+D,re=_+D,G=l[Q],se=l[Q+3],ee=l[re],ie=l[re+3];l[f+D]=Gie?se:ie}return P}}}function yl(n,e,t,r,o){let i,a,s,l,c,u;const d=1/t.direction.x,f=1/t.direction.y,h=1/t.direction.z,p=t.origin.x,m=t.origin.y,g=t.origin.z;let _=e[n],A=e[n+3],y=e[n+1],b=e[n+3+1],E=e[n+2],x=e[n+3+2];return d>=0?(i=(_-p)*d,a=(A-p)*d):(i=(A-p)*d,a=(_-p)*d),f>=0?(s=(y-m)*f,l=(b-m)*f):(s=(b-m)*f,l=(y-m)*f),!(i>l||s>a)&&((s>i||isNaN(i))&&(i=s),(l=0?(c=(E-g)*h,u=(x-g)*h):(c=(x-g)*h,u=(E-g)*h),!(i>u||c>a)&&((c>i||i!=i)&&(i=c),(u=r))}function ebe(n,e,t,r,o,i,a,s){const{geometry:l,_indirectBuffer:c}=n;for(let u=r,d=r+o;u=0;let h,p;f?(h=Ii(n),p=Ri(n,l)):(h=Ri(n,l),p=Ii(n));const m=yl(h,a,r,o,i)?q3(h,e,t,r,o,i):null;if(m){const _=m.point[d];if(f?_<=a[p+u]:_>=a[p+u+3])return m}const g=yl(p,a,r,o,i)?q3(p,e,t,r,o,i):null;return m&&g?m.distance<=g.distance?m:g:m||g||null}}const F1=new Tn,_d=new Li,vd=new Li,ip=new Ue,tN=new bo,V1=new bo;function abe(n,e,t,r){Wn.setBuffer(n._roots[e]);const o=K3(0,n,t,r);return Wn.clearBuffer(),o}function K3(n,e,t,r,o=null){const{float32Array:i,uint16Array:a,uint32Array:s}=Wn;let l=2*n;if(o===null&&(t.boundingBox||t.computeBoundingBox(),tN.set(t.boundingBox.min,t.boundingBox.max,r),o=tN),!Wo(l,a)){const c=n+8,u=s[n+6];return ir(c,i,F1),o.intersectsBox(F1)&&K3(c,e,t,r,o)?!0:(ir(u,i,F1),!!(o.intersectsBox(F1)&&K3(u,e,t,r,o)))}{const c=e.geometry,u=c.index,d=c.attributes.position,f=t.index,h=t.attributes.position,p=di(n,s),m=Ti(l,a);if(ip.copy(r).invert(),t.boundsTree)return ir(n,i,V1),V1.matrix.copy(ip),V1.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>V1.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(r),_.b.applyMatrix4(r),_.c.applyMatrix4(r),_.needsUpdate=!0;for(let A=3*p,y=3*(m+p);AZ3.distanceToBox(E),intersectsBounds:(E,x,w)=>w{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:w=>ap.distanceToBox(w),intersectsBounds:(w,L,C)=>C{for(let C=w,P=w+L;Cb&&(b=Q),reE&&(E=re),Gx&&(x=G)}}return(l[f+0]!==_||l[f+1]!==A||l[f+2]!==y||l[f+3]!==b||l[f+4]!==E||l[f+5]!==x)&&(l[f+0]=_,l[f+1]=A,l[f+2]=y,l[f+3]=b,l[f+4]=E,l[f+5]=x,!0)}{const g=f+8,_=a[f+6],A=g+h,y=_+h;let b=p,E=!1,x=!1;e?b||(E=e.has(A),x=e.has(y),b=!E&&!x):(E=!0,x=!0);const w=b||x;let L=!1;(b||E)&&(L=d(g,h,b));let C=!1;w&&(C=d(_,h,b));const P=L||C;if(P)for(let D=0;D<3;D++){const Q=g+D,re=_+D,G=l[Q],se=l[Q+3],ee=l[re],ie=l[re+3];l[f+D]=Gie?se:ie}return P}}}function hbe(n,e,t,r,o,i,a){Wn.setBuffer(n._roots[e]),J3(0,n,t,r,o,i,a),Wn.clearBuffer()}function J3(n,e,t,r,o,i,a){const{float32Array:s,uint16Array:l,uint32Array:c}=Wn,u=2*n;if(Wo(u,l))ebe(e,t,r,di(n,c),Ti(u,l),o,i,a);else{const d=Ii(n);yl(d,s,r,i,a)&&J3(d,e,t,r,o,i,a);const f=Ri(n,c);yl(f,s,r,i,a)&&J3(f,e,t,r,o,i,a)}}const pbe=["x","y","z"];function mbe(n,e,t,r,o,i){Wn.setBuffer(n._roots[e]);const a=ex(0,n,t,r,o,i);return Wn.clearBuffer(),a}function ex(n,e,t,r,o,i){const{float32Array:a,uint16Array:s,uint32Array:l}=Wn;let c=2*n;if(Wo(c,s))return tbe(e,t,r,di(n,l),Ti(c,s),o,i);{const u=XB(n,l),d=pbe[u],f=r.direction[d]>=0;let h,p;f?(h=Ii(n),p=Ri(n,l)):(h=Ri(n,l),p=Ii(n));const m=yl(h,a,r,o,i)?ex(h,e,t,r,o,i):null;if(m){const _=m.point[d];if(f?_<=a[p+u]:_>=a[p+u+3])return m}const g=yl(p,a,r,o,i)?ex(p,e,t,r,o,i):null;return m&&g?m.distance<=g.distance?m:g:m||g||null}}const z1=new Tn,Ad=new Li,yd=new Li,sp=new Ue,nN=new bo,G1=new bo;function gbe(n,e,t,r){Wn.setBuffer(n._roots[e]);const o=tx(0,n,t,r);return Wn.clearBuffer(),o}function tx(n,e,t,r,o=null){const{float32Array:i,uint16Array:a,uint32Array:s}=Wn;let l=2*n;if(o===null&&(t.boundingBox||t.computeBoundingBox(),nN.set(t.boundingBox.min,t.boundingBox.max,r),o=nN),!Wo(l,a)){const c=n+8,u=s[n+6];return ir(c,i,z1),o.intersectsBox(z1)&&tx(c,e,t,r,o)?!0:(ir(u,i,z1),!!(o.intersectsBox(z1)&&tx(u,e,t,r,o)))}{const c=e.geometry,u=c.index,d=c.attributes.position,f=t.index,h=t.attributes.position,p=di(n,s),m=Ti(l,a);if(sp.copy(r).invert(),t.boundsTree)return ir(n,i,G1),G1.matrix.copy(sp),G1.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>G1.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(r),_.b.applyMatrix4(r),_.c.applyMatrix4(r),_.needsUpdate=!0;for(let A=p,y=m+p;Anx.distanceToBox(E),intersectsBounds:(E,x,w)=>w{if(e.boundsTree){const w=e.boundsTree;return w.shapecast({boundsTraverseOrder:L=>lp.distanceToBox(L),intersectsBounds:(L,C,P)=>P{for(let P=L,D=L+C;Pnew Tn)),bd=new Tn,xd=new Tn,rx=new Tn,ox=new Tn;let ix=!1;function Ebe(n,e,t,r){if(ix)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");ix=!0;const o=n._roots,i=e._roots;let a,s=0,l=0;const c=new Ue().copy(t).invert();for(let u=0,d=o.length;ul.slice())),index:a?a.array.slice():null,indirectBuffer:i?i.slice():null}:{roots:o,index:a?a.array:null,indirectBuffer:i},s}static deserialize(e,t,r={}){r={setIndex:!0,indirect:!!e.indirectBuffer,...r};const{index:o,roots:i,indirectBuffer:a}=e,s=new Q1(t,{...r,[V3]:!0});if(s._roots=i,s._indirectBuffer=a||null,r.setIndex){const l=t.getIndex();if(l===null){const c=new Xe(e.index,1,!1);t.setIndex(c)}else l.array!==o&&(l.array.set(o),l.needsUpdate=!0)}return s}get indirect(){return!!this._indirectBuffer}constructor(e,t={}){if(!e.isBufferGeometry)throw new Error("MeshBVH: Only BufferGeometries are supported.");if((t=Object.assign({...Cbe,[V3]:!1},t)).useSharedArrayBuffer&&!xbe())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[V3]||(U2e(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Tn))),this.resolveTriangleIndex=t.indirect?r=>this._indirectBuffer[r]:r=>r}refit(e=null){return(this.indirect?fbe:J2e)(this,e)}traverse(e,t=0){const r=this._roots[t],o=new Uint32Array(r),i=new Uint16Array(r);(function a(s,l=0){const c=2*s,u=i[c+15]===65535;if(u){const d=o[s+6],f=i[c+14];e(l,u,new Float32Array(r,4*s,6),d,f)}else{const d=s+8,f=o[s+6],h=o[s+7];e(l,u,new Float32Array(r,4*s,6),h)||(a(d,l+1),a(f,l+1))}})(0)}raycast(e,t=0,r=0,o=1/0){const i=this._roots,a=this.geometry,s=[],l=t.isMaterial,c=Array.isArray(t),u=a.groups,d=l?t.side:t,f=this.indirect?hbe:rbe;for(let h=0,p=i.length;h!!d(f,h,p,m,g)||r(f,h,this,s,p,m,t)}else a||(a=s?(d,f,h,p)=>r(d,f,this,s,h,p,t):(d,f,h)=>h);let l=!1,c=0;const u=this._roots;for(let d=0,f=u.length;d{const m=this.resolveTriangleIndex(p);Ar(a,3*m,s,l)}:p=>{Ar(a,3*p,s,l)},u=Pi.getPrimitive(),d=e.geometry.index,f=e.geometry.attributes.position,h=e.indirect?p=>{const m=e.resolveTriangleIndex(p);Ar(u,3*m,d,f)}:p=>{Ar(u,3*p,d,f)};if(i){const p=(m,g,_,A,y,b,E,x)=>{for(let w=_,L=_+A;wj1.intersectsBox(r),intersectsTriangle:r=>j1.intersectsTriangle(r)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,r={},o={},i=0,a=1/0){return(this.indirect?bbe:dbe)(this,e,t,r,o,i,a)}closestPointToPoint(e,t={},r=0,o=1/0){return Q2e(this,e,t,r,o)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach((t=>{ir(0,new Float32Array(t),rN),e.union(rN)})),e}}class Sbe extends Mt{}function oN(n,e,t){return n===null?null:(n.point.applyMatrix4(e.matrixWorld),n.distance=n.point.distanceTo(t.ray.origin),n.object=e,n)}const $1=new Tu,iN=new N,aN=new Ue,wbe=Mt.prototype.raycast,Mbe=Sbe.prototype.raycast,sN=new N,Yr=new Mt,Y1=[];function lN(n,e){this.isBatchedMesh?Tbe.call(this,n,e):Ibe.call(this,n,e)}function Tbe(n,e){if(this.boundsTrees){const t=this.boundsTrees,r=this._drawInfo||this._instanceInfo,o=this._drawRanges||this._geometryInfo,i=this.matrixWorld;Yr.material=this.material,Yr.geometry=this.geometry;const a=Yr.geometry.boundsTree,s=Yr.geometry.drawRange;Yr.geometry.boundingSphere===null&&(Yr.geometry.boundingSphere=new ni);for(let l=0,c=r.length;lFind out how to fix this here.';return void nr.showWebGLErrorMessage(this.container,a)}Wr.legacyMode=!1;const o={};o.alpha=!!_e(t.alpha)&&t.alpha,o.depth=!_e(t.depth)||t.depth,o.stencil=!_e(t.stencil)||t.stencil,o.antialias=!_e(t.antialias)||t.antialias,o.premultipliedAlpha=!_e(t.premultipliedAlpha)||t.premultipliedAlpha,o.preserveDrawingBuffer=!!_e(t.preserveDrawingBuffer)&&t.preserveDrawingBuffer,nr.isSafariWithMultisamplingBug()&&(console.warn("v3d.App: disabling buggy context AA on Safari 15.4"),o.antialias=!1),this.renderer=new U2(o),m6.prepareRenderer(this.renderer),this.clearBkgOnLoad=!1,this.registerServiceKeys=!0,this.frameRateDivider=1,this.enableRender=!0,this.disableRenderTrigger=0,this.ssaaOnPause=!1,this.renderer.setSize(this.container.offsetWidth,this.container.offsetHeight),this.renderer.outputEncoding=3001,this.container.appendChild(this.renderer.domElement),this.container.classList.add("v3d-container"),this.renderer.domElement.classList.add("v3d-canvas"),this.container.setAttribute("translate","no"),this._onContextRestoreCb=()=>{this._onContextRestore()},this.renderer.domElement.addEventListener("webglcontextrestored",this._onContextRestoreCb),this.loader=new MB;const i=new Pa().setTranscoderPath(Gg()).detectSupport(this.renderer);this.loader.setKTX2Loader(i),At.prototype.computeBoundsTree=cN,At.prototype.disposeBoundsTree=uN,Mt.prototype.raycast=lN,this.actions=[],this._envIBLMode=0,this._envLightProbe=null,this._resizeCb=null,this._loadSceneURL="",this._loadingTime=0,this._webxrSave={background:null,postprocessing:null,useOIT:!1},this.cssRenderer=null,this.cssScene=null,this.stats=null,vo.drawWatermark(this),vo.addToAppList(this)}_updateRendererFromGLTF(e){const t=this,r=nr.checkHalfFloatTex(this.renderer,!0),o=this.renderer.capabilities.isWebGL2;if(e.renderer.shadowMap&&(this.renderer.shadowMap.enabled=e.renderer.shadowMap.enabled,this.renderer.shadowMap.type=e.renderer.shadowMap.type,r||this.renderer.shadowMap.type!==3||(this.renderer.shadowMap.type=2,e.scene.traverse((function(a){a.isLight&&a.castShadow&&a.shadow&&(a.shadow.bias/=100)})))),this.aaMethod=e.renderer.aaMethod??"AUTO",this.aaMethod==="AUTO"||o||(console.warn("v3d.App: setting anti-aliasing to Auto for WebGL 1.0 renderer"),this.aaMethod="AUTO"),this.useHDR=!!(e.renderer.useHDR&&r),this.useHDR&&!o&&(console.warn("v3d.App: disabling HDR for WebGL 1.0 renderer"),this.useHDR=!1),this.renderer.useOIT=e.renderer.useOIT??!1,this.renderer.useOIT&&!o&&(console.warn("v3d.App: disabling order-independent transparency for WebGL 1.0 renderer"),this.renderer.useOIT=!1),this.renderer.unitsScaleFactor=e.renderer.unitsScaleFactor??1,e.renderer.toneMapping)for(let a=0;a{a.isMesh&&(s.layers.set(7),s.isMaterialGeneratedMesh&&a.parent.layers.set(7))})),i=!0)})),i&&(o?(t.useHiDPIRenderPass=!0,t.renderer.setPixelRatio(window.devicePixelRatio)):console.warn("v3d.App: disabling HiDPI pass for WebGL 1.0 renderer")),t.useHiDPIRenderPass&&e.scene.traverse((function(a){a.isLight&&a.layers.enable(7)}))}_updateMeshesRaycastFromGLTF(e){e.scene&&e.scene.traverse((function(t){const r=t.geometry;t.isMesh&&r.computeBoundsTree&&Object.keys(r.morphAttributes).length===0&&r.computeBoundsTree({verbose:!1})}))}_prepareReflProbesFromGLTF(e){e.scene&&e.scene.traverse((t=>{if(t.isCubeReflectionProbe)this._prepareEnvMapProbe(t);else if(t.isPlaneReflectionProbe){let r=this._checkMSAA(this.renderer,4);r>0&&t.makeMultisampleRenderTarget(r)}}))}_prepareEnvMapProbe(e){switch(e.setSize(this._pmremMaxTileSize),this._envIBLMode){case 0:e.onUpdate=t=>this.generateRTargetPMREM(t);break;case 1:case 2:e.onUpdate=()=>null}}_prepareReflProbesEncoding(e,t){e.traverse((r=>{(r.isCubeReflectionProbe||r.isPlaneReflectionProbe)&&r.setEncoding(t)}))}_prepareEnvMapProbeWorld(){if(this._envIBLMode==2)return;const e=new jr;e.worldMaterial=this.scene.worldMaterial,this.scene.worldEnvMapProbe===null&&(this.scene.worldEnvMapProbe=new l3(this._pmremMaxTileSize),this.scene.worldEnvMapProbe.influenceType=0,this.scene.worldEnvMapProbe.parallaxType=0);const t=this.scene.worldEnvMapProbe;switch(this._envIBLMode){case 0:t.onUpdate=r=>this.generateRTargetPMREM(r);break;case 1:t.onUpdate=r=>{const o=r.clone();o.setSize(this._lightProbeCubemapRes,this._lightProbeCubemapRes),nr.checkHalfFloatReadPixels(this.renderer)?o.texture.type=1016:nr.checkFloatReadPixels(this.renderer)?o.texture.type=1015:(console.warn("v3d.App: Target platform does not support reading pixels in float format, expect quality loss."),o.texture.type=1009),o.texture.format=1023,o.texture.encoding=3e3;const i=new Gh(r.texture);return i.render(this.renderer,o),i.dispose(),this._disposeEnvLightProbe(),this._envLightProbe=GB.fromCubeRenderTarget(this.renderer,o),this.scene.add(this._envLightProbe),o.dispose(),null}}t.update(e,this.renderer)}_updateMaterialsFromGLTF(e){const t=this;e.scene&&e.scene.traverse((function(r){const o=r.material;o&&t.useHDR&&(o.toneMapped=!1,o.useFloatTex=nr.checkFloatTex(t.renderer,!0),o.isMeshNodeMaterial&&o.updateNodeGraph(!0))}))}_updateAnimationsFromGLTF(e,t){const r=this;!r.mixer&&e.animations&&e.animations.length&&(r.mixer=new sD(r.scene)),(e.animations||[]).forEach((function(o){const i=t.getObjectById(o.nodeId);if(i){let a;o.clip.objectUUID=i.uuid,a=i.id==t.id||i.name!==""&&i.name!=="root"&&i.name!=="."&&i.name!==t.name&&i.name!==t.uuid?r.mixer.clipAction(o.clip,t):r.mixer.clipAction(o.clip,i),a.setLoop(o.loop,o.repetitions,!0),a.startAt(o.startAt+r.mixer.time),a.clampWhenFinished=!0,o.auto?a.play():(a.stop(),a.paused=!0),a.objectUUID=i.uuid,r.actions.push(a)}}))}_traverseSceneForTexUniforms(e,t){e.traverse((function(r){r.material&&(Array.isArray(r.material)?r.material:[r.material]).forEach((function(o){o.program!==void 0&&t(r,o,o.program.getTexUniformCount())}))}))}_checkMSAA(e,t){return Math.min(t,e.capabilities.maxSamples)}_precompileSceneAsync(e,t,r,o){const i=this,a=i.compileCallbacks;for(let l=0;l=1&&i.renderer.setRenderTarget(s),o&&o(100*l)}))}_handleAlphaToCoverage(e){this.scene.traverse((function(t){const r=t.material;r&&r.alphaToCoverage&&(e>0?(r.transparent=!1,r.premultipliedAlpha=!1,r.blending=0):r.alphaToCoverage=!1)}))}_onContextRestore(e){this.scene&&this.scene.worldMaterial&&(this.updateEnvironment(this.scene.worldMaterial),this.updateReflectionProbes(this.scene))}assignClippingPlanes(e){const t=this;let r=[],o=[],i=[],a=-1e3;e.traverse((function(s){s.isClippingPlaneObject&&(r.push(s),o.push(s.plane),e.traverse((function(l){s.needsClippingPlane(l)&&s.assignToObject(l,a++)})),i.push(a++))}));for(let s=0;s8&&console.warn(`v3d.App: Material "${f.name}" on object "${d.name}" exceeds iOS limit of 8 textures (has ${h}).`)})),i.removeEventListener("afterFirstRender",c)},u=i.postprocessing?i.postprocessing.composer.renderTarget1:null;i._precompileSceneAsync(i.scene,i.camera,u,(function(d){const f=(60+.4*d)/1;r&&r(f),i.preloader&&i.preloader.onUpdate(f),f>=100&&(i._updateMeshesRaycastFromGLTF(a),i.addEventListener("afterFirstRender",c),t&&setTimeout((function(){i.scene.visible=!0,i.scene.disableChildRendering=!1,i.updateReflectionProbes(i.scene),i._loadingTime=performance.now()-i._loadingTime,i.dispatchEvent({...Obe}),t(i.scene)}),16),a=null)})),i.clearBkgOnLoad&&(i.scene.background=null),i.registerServiceKeys&&vo.registerServiceKeys(i)}),(function(a){const s=.6*a/1;r&&r(s),i.preloader&&i.preloader.onUpdate(s)}),(function(a){console.error(a),o&&o(a)})),window.removeEventListener("resize",this._resizeCb,!1),this._resizeCb=function(){i.onResize&&i.onResize()},window.addEventListener("resize",this._resizeCb,!1)):o&&o("WebGL not found")}appendScene(e,t,r,o,i,a){const s=this;s.renderer?(i===void 0&&(i=!0),a===void 0&&(a=!0),s.preloader&&s.preloader.onUpdate(0),this.loader.load(e,(function(l){const c=l.scene||new jr,u=[];c.traverse((function(h){(h.isCamera&&!i||h.isLight&&!a)&&u.push(h)})),u.forEach((function(h){s.unload(h)})),s.scene&&(s.scene.add(c),s._prepareReflProbesFromGLTF(l),s._updateMaterialsFromGLTF(l),s._updateAnimationsFromGLTF(l,c),s.scene.updateWorldMatrix(!1,!0));const d=s.postprocessing?s.postprocessing.composer.renderTarget1:null,f=s.scene||c;s.assignClippingPlanes(f),s.updateConstraints(f),c.visible=!1,c.disableChildRendering=!0,s._precompileSceneAsync(f,s.camera||new fh,d,(function(h){const p=(60+.4*h)/1;r&&r(p),s.preloader&&s.preloader.onUpdate(p),p>=100&&(s._updateMeshesRaycastFromGLTF(l),s._traverseSceneForTexUniforms(c,(function(m,g,_){_>8&&console.warn(`v3d.App: Material "${g.name}" on object "${m.name}" exceeds iOS limit of 8 textures (has ${_}).`)})),t&&setTimeout((function(){c.visible=!0,c.disableChildRendering=!1,s.updateReflectionProbes(s.scene),t(c)}),16),l=null)}))}),(function(l){const c=.6*l/1;r&&r(c),s.preloader&&s.preloader.onUpdate(c)}),(function(l){console.error(l),o&&o(l)}))):o&&o("WebGL not found")}unload(e){const t=this;function r(o){if(o.isAnnotation)o.dispose();else if(o.isLight&&o.shadow&&o.shadow.isLightShadow)o.shadow.dispose();else if(o.isCamera&&o.controlSettings&&o.controlSettings.orbitTarget)r(o.controlSettings.orbitTarget);else if(o.isScene){const i=o.worldMaterial;i!==null&&(o3(i),i.dispose()),o.worldEnvMapProbe!==null&&(o.worldEnvMapProbe.dispose(),o.worldEnvMapProbe=null)}else if(o.isMesh){o.geometry.dispose(),o.geometry.disposeBoundsTree&&o.geometry.disposeBoundsTree();const i=o.material;o3(i),i.dispose()}}if(e||(e=t.scene),e===t.scene){if(t.scene&&(t.scene.traverse(r),t.disposeEnvironment()),t.scene=null,t.disableControls(),t.camera=null,t.mixer&&(t.mixer.stopAllAction(),t.actions.forEach((function(o){t.mixer.uncacheAction(o.getClip(),o.getRoot())}))),t.mixer=null,t.actions=[],t.postprocessing){if(t.postprocessing.composer)for(let o in t.postprocessing){const i=t.postprocessing[o];(i instanceof xi||i instanceof c3)&&i.dispose()}t.disablePostprocessing()}t.postprocessing=null,Xi.dispose(),t.renderer&&t.renderer.disposeInternalCaches(),vo.unregisterServiceKeys(t),t.useHiDPIRenderPass=!1,t.renderer.setPixelRatio(1)}else if(t.scene&&(e.traverse(r),e.parent&&e.parent.remove(e)),t.mixer)for(let o=t.actions.length-1;o>=0;o--){const i=t.actions[o];d6(t.scene,i)||(i.stop(),t.mixer.uncacheAction(i.getClip(),i.getRoot()),t.actions.splice(o,1))}}dispose(){this.scene&&this.unload(),this.renderer&&(this.renderer.forceContextLoss(),this.renderer.dispose(),this.renderer.domElement.removeEventListener("webglcontextrestored",this._onContextRestoreCb),this._onContextRestoreCb=null,this.renderer.domElement.parentElement===this.container&&this.container.removeChild(this.renderer.domElement)),this.renderer=null,this.disableCSSRenderer(),this.loader=null,window.removeEventListener("resize",this._resizeCb,!1),this._resizeCb=null,this.renderCallbacks.length=0,this.compileCallbacks.length=0,vo.removeFromAppList(this),na.clear(),this.dispatchEvent({...Dbe}),delete this._listeners}getWidth(){return this.container.offsetWidth}getHeight(){return this.container.offsetHeight}onResize(){if(!this.renderer)return;this.enableRender&&!this.ssaaOnPause||(this.enableRendering(),this.disableRendering(1));const e=this.getWidth(),t=this.getHeight();if(this.renderer.setSize(e,t),this.cssRenderer&&this.cssRenderer.setSize(e,t),this.postprocessing&&(this.postprocessing.gtaoGenerator&&this.postprocessing.gtaoGenerator.setSize(e,t),this.postprocessing.composer.setSize(e,t)),this.scene){this.scene.traverse((i=>{i.isPlaneReflectionProbe&&i.setSize(e,t)}));const r=e/t,o=this.camera;if(o.isPerspectiveCamera){const i=o.aspect{t.isPlaneReflectionProbe&&t.update(this.scene,this.camera,this.renderer)}))),this.renderer.gtaoMapEnabled=!0,this.postprocessing){const t=this.postprocessing.gtaoGenerator;t&&t.render(this.renderer),this.postprocessing.composer.render(this.elapsed)}else e&&this.renderer.render(this.scene,this.camera);if(e&&this.useHiDPIRenderPass){const t=this.camera.layers.mask,r=this.scene.background,o=this.renderer.autoClear,i=this.renderer.useOIT;this.camera.layers.set(7),this.scene.background=null,this.renderer.autoClear=!1,this.renderer.useOIT=!1,this.renderer.clearDepth(),this.renderer.render(this.scene,this.camera),this.camera.layers.mask=t,this.scene.background=r,this.renderer.autoClear=o,this.renderer.useOIT=i}this.cssRenderer&&this.cssRenderer.render(this.cssScene,this.camera),this.renderer.gtaoMapEnabled=!1,this.dispatchEvent({...Lbe})}enableControls(e){const t=this.camera;if(!t.controlSettings)return;const r=t.controlSettings.type;if(!(this.controls&&t===this.controls.object&&(this.controls instanceof Zb&&r==="ORBIT"||this.controls instanceof t3&&r==="FLYING"||this.controls instanceof e3&&r==="FIRST_PERSON")))switch(this.disableControls(),r){case"ORBIT":this.controls=new Zb(t,e||this.renderer.domElement);break;case"FLYING":this.controls=new t3(t,e||this.renderer.domElement);break;case"FIRST_PERSON":this.controls=new e3(t,e||this.renderer.domElement);break;default:this.controls=null}this.controls&&(t.controlSettings.assignToControls(this.controls,this.scene),this.controls.update())}disableControls(){this.controls&&(this.controls.dispose(),this.controls=null)}setCamera(e){let t=[];if(this.camera)for(let r=this.camera.children.length-1;r>=0;r--){const o=this.camera.children[r];o instanceof JP&&(t.push(o),o.removeFromParent())}if(this.camera=e,this.postprocessing){const r=this.postprocessing.composer.passes;for(let o=0;o{m.removeEventListener("dispose",b),this.renderer.disposeGTAO()};m.addEventListener("dispose",b),this.renderer.gtaoMap=m.renderTarget.texture}m.distance=i.distance,m.factor=i.factor,m.precision=i.precision,m.bentNormals=i.bentNormals;break;case"outline":let g;this.postprocessing.outlinePass?g=this.postprocessing.outlinePass:(g=new Ma(new be(this.getWidth(),this.getHeight()),this.scene,this.camera),r.insertPass(g,a),this.postprocessing.outlinePass=g),g.edgeStrength=i.edgeStrength,g.edgeGlow=i.edgeGlow,g.edgeThickness=i.edgeThickness,g.pulsePeriod=i.pulsePeriod,g.visibleEdgeColor.fromArray(i.visibleEdgeColor),g.hiddenEdgeColor.fromArray(i.hiddenEdgeColor),g.hiddenEdgeColor.setW(Number(i.renderHiddenEdge));break;case"ssr":if(!nr.checkHalfFloatTex(this.renderer,!1)){console.warn("v3d.App: disabling SSR since your hardware does not support half float textures");break}const _=_e(i.useRefract)&&i.useRefract,A=_e(i.simpleRefraction)&&i.simpleRefraction;let y;y=_&&!A?this.postprocessing.ssrPassRefract:_&&A?this.postprocessing.ssrPassSimpleRefract:this.postprocessing.ssrPassReflect,y||(y=new RD(this.scene,this.camera),r.insertPassAfter(y,[this.postprocessing.renderPass,this.postprocessing.ssrPassRefract,this.postprocessing.ssrPassReflect,this.postprocessing.ssrPassSimpleRefract]),_&&!A?this.postprocessing.ssrPassRefract=y:_&&A?this.postprocessing.ssrPassSimpleRefract=y:this.postprocessing.ssrPassReflect=y),y.useRefract=_,y.simpleRefraction=A,_e(i.objects)&&(y.objects=i.objects),_e(i.intensity)&&(y.intensity=i.intensity),_e(i.steps)&&(y.steps=i.steps),_e(i.stride)&&(y.stride=i.stride),_e(i.binarySearchSteps)&&(y.binarySearchSteps=i.binarySearchSteps),_e(i.renderTargetScale)&&(y.renderTargetScale=i.renderTargetScale),_e(i.thickness)&&(y.thickness=i.thickness),_e(i.maxDistance)&&(y.maxDistance=i.maxDistance),_e(i.jitter)&&(y.jitter=i.jitter),_e(i.renderAfter)&&(y.renderAfter=i.renderAfter),this.onResize&&this.onResize();break;default:console.error(`v3d.App: wrong postprocessing effect "${i.type}"`)}}if(r.passes.length==1){const o=new bs(Tt.copy);r.passes.push(o),this.postprocessing.copyPass=o}}disablePostprocessing(e,t){if(!this.postprocessing)return;const r=this.postprocessing.gtaoGenerator;!t&&r&&(r.dispose(),this.postprocessing.gtaoGenerator=null);const o=["afterimagePass","bloomPass","brightnessContrastPass","bokehPass","grayscalePass","ssrPassReflect","ssrPassRefract","ssrPassSimpleRefract"];e||o.push("outlinePass");const i=this.postprocessing.composer;for(let a=0;a0&&(this.postprocessing.ssrPassRefract||this.postprocessing.ssrPassReflect))return;const r=this;this.scene.traverse((function(i){i.isAnnotationControl&&(i.update(r.camera),i.doUpdate=!e)}));const o=this.postprocessing.composer;if(e>0&&o.passes[0]instanceof o1){let i;this.postprocessing.ssaaRenderPass?i=this.postprocessing.ssaaRenderPass:(i=new Fh(this.scene,this.camera),this.postprocessing.ssaaRenderPass=i,t&&i.addEventListener("iteration",(function(a){a.frame==e*e-1&&(o.enableAllPasses(),o.renderToScreen=!0,o.passes[o.passes.length-1].renderToScreen=!0,r.disableRenderTrigger=1)}))),i.sampleLevel=e||4,o.passes[0]=i,this.postprocessing.fxaaPass&&o.passes.splice(o.passes.length-1,1),t&&(i.iterative=!0,i.iterativeFrame=0,o.disableAllPasses(),o.renderToScreen=!1,i.enabled=!0)}else e>0?(o.passes[0].sampleLevel=e||4,t&&(ssaaRenderPass.iterative=!0,ssaaRenderPass.iterativeFrame=0,o.disableAllPasses(),o.renderToScreen=!1,ssaaRenderPass.enabled=!0)):e==0&&o.passes[0]instanceof Fh&&(o.passes[0]=this.postprocessing.renderPass,this.postprocessing.fxaaPass&&o.passes.push(this.postprocessing.fxaaPass),o.enableAllPasses(),o.renderToScreen=!0)}updateEnvironment(e){const t=this.renderer.xr.enabled;if(this.renderer.xr.enabled=!1,this.disposeEnvironment(),e.toneMapped=!1,this.scene.background!==null){const r=this.renderer.toneMapping===0?e.worldMaterialColor():null;r!==null?this.scene.background=r:(this.scene.background=A6(this.renderer,e,this.worldCubemapRes,{encoding:3001,format:1023,generateMipmaps:!0,minFilter:1008,type:1016}).texture,this.scene.backgroundToneMapped=!this.useHDR)}this._envIBLMode===0&&new gh(this.renderer,this._pmremMaxTileSize,!0).compileCubemapShader(),this._prepareEnvMapProbeWorld(),this.renderer.xr.enabled=t}disposeEnvironment(){this._disposeEnvLightProbe();let e=this.scene.background;e&&e&&(e.isTexture||e.isCubeTexture)&&e.dispose()}_disposeEnvLightProbe(){this._envLightProbe!==null&&(this.scene.remove(this._envLightProbe),this._envLightProbe=null)}updateReflectionProbes(e){e.traverse((t=>{t.isCubeReflectionProbe&&t.update(this.scene,this.renderer)}))}generateRTargetPMREM(e){if(!e.isWebGLCubeRenderTarget)return null;const t=new gh(this.renderer,this._pmremMaxTileSize,!0),r=t.fromCubemap(e.texture);return t.dispose(),r}initWebXR(e,t,r,o,i,a){r=r||function(){},o=o||function(){},i=i||function(){},a=a||{};const s=this;function l(f){s.xrSession.removeEventListener("end",l),i();for(let h=0;h=0;p--){const m=h.children[p];m.name.indexOf(h.name)>-1&&(m.geometry.dispose(),m.material.dispose(),h.remove(m))}}const d={optionalFeatures:[t]};e=="immersive-ar"&&(d.optionalFeatures.push("hit-test"),a.domOverlay&&(d.optionalFeatures.push("dom-overlay"),d.domOverlay={root:s.container})),navigator.xr.requestSession(e,d).then((function(f){s._webxrSave.postprocessing=s.postprocessing,s.postprocessing=null,s._webxrSave.useOIT=s.renderer.useOIT,s.renderer.useOIT=!1,s.renderer.xr.setReferenceSpaceType(t),s.xrSession=f,f.addEventListener("end",l);const h=e=="immersive-vr"?2:1;for(let p=0;p{e.push(t)})),e.forEach((t=>{t.removeFromParent()})),this.cssScene=null}}enableDebugMode(e){this.hasDebugMode(e)&&this.disableDebugMode(e),this.scene.traverse((t=>{let r=null,o=!1;if(!this._debugHelpers.includes(t)&&!this._debugHelpers.includes(t.parent)){if(e=="wireframes"&&t.isMesh)r=new y2e(t,"white");else if(e=="lights")t.isDirectionalLight?(r=new AD(t,.5,"yellow"),o=!0):t.isSpotLight?(r=new dD(t,"yellow"),o=!0):t.isPointLight?(r=new pD(t,.1,"yellow"),o=!0):t.isRectAreaLight&&(r=new v2e(t,"yellow"));else if(e=="skeletons"&&t.isBone){let i=!1;t.traverseAncestors((a=>{a.isBone&&(i=!0)})),i||(r=new fD(t))}else e=="normals"&&t.isMesh&&(r=new A2e(t,.1));r!==null&&(r.name=t.name+"Helper",r.visible=t.visible,t.add(r),o&&r.update(),this._debugHelpers.push(r),this._debugModes.add(e))}}))}disableDebugMode(e){const t={wireframes:["WireframeHelper"],lights:["DirectionalLightHelper","SpotLightHelper","PointLightHelper","RectAreaLightHelper"],skeletons:["SkeletonHelper"],normals:["VertexNormalsHelper"]};for(let r=this._debugHelpers.length-1;r>=0;r--){const o=this._debugHelpers[r];t[e].includes(o.type)&&(o.removeFromParent(),this._debugHelpers.splice(r,1))}this._debugModes.delete(e)}hasDebugMode(e){return this._debugModes.has(e)}}function kbe(){console.error("v3d.SSAOPass has been removed, use v3d.GTAOMapGenerator instead")}function Fbe(){console.error("v3d.BlenderTextGeometry has been removed, use v3d.TextGeometry instead.")}function Vbe(){console.error("v3d.BlenderTextBufferGeometry has been removed, use v3d.TextGeometry instead.")}function Ube(){console.error("v3d.AnimationLoader has been removed, use glTF format for asset loading.")}function zbe(){console.error("v3d.BufferGeometryLoader has been removed, use glTF format for asset loading.")}function Gbe(){console.error("v3d.MaterialLoader has been removed, use glTF format for asset loading.")}function Hbe(){console.error("v3d.ObjectLoader has been removed, use glTF format for asset loading.")}class Wbe extends O0{constructor(e){console.error("v3d.MeshPhongMaterial has been removed, use node-based or standard material instead."),super(e)}}class jbe extends O0{constructor(e){console.error("v3d.MeshToonMaterial has been removed, use node-based material instead."),super(e)}}class Qbe extends O0{constructor(e){console.error("v3d.MeshMatcapMaterial has been removed, use node-based material instead."),super(e)}}At.prototype.toJSON=function(){return console.error("v3d.BufferGeometry.toJSON() has been removed, use glTF format for export."),{}},kt.prototype.toJSON=function(){return console.error("v3d.Object3D.toJSON() has been removed, use glTF format for export."),{}},Nr.prototype.toJSON=function(){return console.error("v3d.Material.toJSON() has been removed, use glTF format for export."),{}},Object.defineProperty(ab.prototype,"iridescence",{get:()=>(console.warn("v3d.MeshPhysicalMaterial: iridescence has been removed, use node-based material instead."),0),set(n){console.warn("v3d.MeshPhysicalMaterial: iridescence has been renamed, use node-based material instead.")}}),Object.defineProperty(ab.prototype,"sheen",{get:()=>(console.warn("v3d.MeshPhysicalMaterial: sheen has been removed, use node-based material instead."),0),set(n){console.warn("v3d.MeshPhysicalMaterial: sheen has been renamed, use node-based material instead.")}}),ta.nodeGraphDiffuse=function(n,e,t){return console.error("v3d.MeshNodeMaterial.nodeGraphDiffuse has been deprecated. Use v3d.MaterialUtils.createDiffuseMaterial instead."),i3("",n,e,t).nodeGraph};const $be=2,Ybe=2;function Xbe(){console.error("v3d.InterleavedBufferAttribute has been removed, use tightly packed buffers instead.")}function qbe(){console.error("v3d.InstancedInterleavedBuffer has been removed, use tightly packed buffers instead.")}function Kbe(){console.error("v3d.InterleavedBuffer has been removed, use tightly packed buffers instead.")}var hN={calcCameraZoomToObjectsParams:(function(){var n=new Tn,e=new ni;return function(t,r,o,i,a){var s=n.makeEmpty();r.forEach((function(c){s.expandByObject(c)}));var l=s.getBoundingSphere(e);hN.calcCameraZoomToSphereParams(t,l,o,i,a)}})(),calcCameraZoomToSphereParams:(function(){const n=new N;return function(e,t,r,o,i){if(e.isOrthographicCamera){let a=Math.min(e.top,e.right);i[0]=a/t.radius,r.setFromMatrixPosition(e.matrixWorld),o.copy(t.center)}else{let a=ih(e.fov/2);e.aspect<1&&(a=Math.atan(e.aspect*Math.tan(a)));let s=t.radius/Math.sin(a);const l=e.getWorldDirection(n);r.copy(t.center).addScaledVector(l,-s),o.copy(t.center)}}})()},X1={normalizeDialectOptions:function(n){var e={delimiter:",",doublequote:!0,lineterminator:` +`,quotechar:'"',skipinitialspace:!0,skipinitialrows:0};for(var t in n)e[t.toLowerCase()]=n[t];return e},parse:function(n,e){(!e||e&&!e.lineterminator)&&(n=X1.normalizeLineTerminator(n,e));var t=X1.normalizeDialectOptions(e);n=X1.chomp(n,t.lineterminator);var r,o,i="",a=!1,s=!1,l="",c=[],u=[];for(o=function(d){var f=String.prototype.trim?function(h){return h.trim()}:function(h){return h.replace(/^\s*/,"").replace(/\s*$/,"")};return s!==!0&&(d===""?d=null:t.skipinitialspace===!0&&(d=f(d)),/^\d+$/.test(d)?d=parseInt(d,10):/^\d*\.\d+$|^\d+\.\d*$/.test(d)&&(d=parseFloat(d,10))),d},r=0;rE?(w=y>g?Math.min(p+this.offset,y):Math.max(h-this.offset,y),x=(w-y)/b+A):(x=A=0;--r)if(e[r].src.search(/ammo.wasm.js/)>-1){t=!0;break}return new Promise((function(r,o){t&&window.Ammo?(console.warn("You have ammo.wasm.js assigned in app html, please remove it"),r()):t&&!window.Ammo?(console.warn("You have ammo.wasm.js assigned in app html, please remove it and resave Puzzles"),import(Gg("ammo.wasm.js")).then((a=>{let s=a.default;s?new s().then((l=>{window.Ammo=l,r()})):o(new Error("Failed to load physics module"))}))):r()}))}async loadLogic(e,t,r){try{const o=await this._getLogicPromise(e);return await this._getAmmoJSPromise(),t&&t(),o}catch(o){console.error(o),r&&r(o)}}async loadEditorWithLogic(e,t,r,o){try{let i=null;await this._getEditorPromise(e+n3e);try{i=await this._getLogicViaEditorPromise(e,t)}catch(a){if(a.name!=="LogicFileLoadError")throw a}return await this._getAmmoJSPromise(),r&&r(),i}catch(i){console.error(i),o&&o(i)}}}function K1(n){Mt.call(this),this.type="CubeTextureHelper",this.geometry=new nc(2,2,2,1,1,1),this.geometry.computeBoundingSphere(),this.material=new pr,this.material.envMap=n}K1.prototype=Object.create(Mt.prototype),K1.prototype.constructor=K1;class mN extends kt{constructor(e){super(),this.isAnnotationControl=!0,this.doUpdate=!0,this.projected=new N,this.container=e,this.updatedCallback=null}clone(){return new this.constructor(this.container).copy(this)}update(e){if(this.doUpdate){var t=this.projected;this.getWorldPosition(t).project(e);var r=this.container.offsetWidth,o=this.container.offsetHeight,i=(.5+t.x/2)*r,a=(.5-t.y/2)*o;t.x=i,t.y=a;var s=t.z<=1&&i>=0&&i<=r&&a>=0&&a<=o;this.visible=s,this.updatedCallback&&this.updatedCallback(t.x,t.y,s)}}}var ax=new _0,Z1=new N,sx=new N,gN=new N;class o3e extends mN{constructor(e,t,r){super(e),this.isAnnotation=!0,this.type="Annotation",this.character=t,this.dialogContents=r,this.annotation=document.createElement("div"),this.annotation.innerHTML=t,this.annotation.className="v3d-annotation",this.container.appendChild(this.annotation),this.annotationDialogVisible=!1,this.annotationDialog=document.createElement("div"),this.annotationDialog.innerHTML=r,this.annotationDialog.className="v3d-annotation-dialog",this.annotation.appendChild(this.annotationDialog),this.fadeObscured=!0,this.obscured=!1;var o=!1,i=this;function a(s){s.target==i.annotation?i.annotationDialog.innerHTML.length==0||i.obscured||(i.annotationDialogVisible=!i.annotationDialogVisible,i.annotationDialog.style.visibility=i.annotationDialogVisible?"visible":"hidden",i.annotationDialogVisible?i.annotation.style.zIndex="2":i.annotation.style.zIndex="1"):s.target.className.indexOf("v3d-annotation")>-1&&(i.annotationDialogVisible=!1,i.annotationDialog.style.visibility="hidden",i.annotation.style.zIndex=i.obscured?"auto":"1")}this._touchstartCb=function(s){a(s),o=!0},document.body.addEventListener("touchstart",this._touchstartCb,!1),this._mousedownCb=function(s){o||a(s),o=!1},document.body.addEventListener("mousedown",this._mousedownCb,!1)}raycast(){}clone(){return new this.constructor(this.container,this.character,this.dialogContents).copy(this)}update(e){if(super.update(e),this.doUpdate){var t=this.projected,r=this.annotation;if(r.style.transform="translate("+t.x+"px, "+t.y+"px)",r.style.visibility=this.visible?"visible":"hidden",this.annotationDialog.style.visibility=this.visible&&this.annotationDialogVisible?"visible":"hidden",this.fadeObscured){e.getWorldPositionNU(Z1),this.getWorldPositionNU(sx),gN.copy(sx).sub(Z1).normalize(),ax.set(Z1,gN),ax.far=Z1.distanceTo(sx);var o=ax.intersectObject(this.findRoot(),!0);o.length>1||o.length==1&&o[0].object!=this.parent?(r.classList.add("v3d-annotation-transparent"),this.obscured=!0,r.style.zIndex="auto",this.annotationDialog.style.visibility="hidden"):(r.classList.remove("v3d-annotation-transparent"),r.style.zIndex=this.annotationDialog.style.visibility=="visible"?"2":"1",this.obscured=!1)}}}setDialogVisibility(e){e?(this.annotationDialogVisible=!0,this.annotationDialog.style.visibility="visible",this.annotation.style.zIndex="2"):(this.annotationDialogVisible=!1,this.annotationDialog.style.visibility="hidden",this.annotation.style.zIndex="1")}dispose(){var e=this.annotation.parentElement;e&&e.removeChild(this.annotation),document.body.removeEventListener("touchstart",this._touchstartCb,!1),document.body.removeEventListener("mousedown",this._mousedownCb,!1)}}const _N=new N,J1=new It,i3e=new It;function a3e(n,e,t){const r=n.parent;r&&!r.isScene&&(_N.copy(e).applyQuaternion(n.quaternion).applyQuaternion(r.quaternion),r.position.add(_N.multiplyScalar(t)))}function s3e(n,e,t){const r=n.parent;r&&!r.isScene&&(J1.setFromAxisAngle(e,t),J1.premultiply(n.quaternion),J1.premultiply(r.quaternion),r.quaternion.multiplyQuaternions(J1,i3e.copy(n.quaternion).invert()))}var l3e=Object.freeze({__proto__:null,rotateVRCamera:s3e,translateVRCamera:a3e}),c3e=`.v3d-container {overflow: hidden;z-index: 0;}.v3d-canvas {position: absolute;top: 0;bottom: 0;left: 0;right: 0;z-index: -1;}.v3d-simple-preloader-background {background-color: #fff;position: absolute;top: 0;bottom: 0;left: 0;right: 0;z-index: 1;height: 100%;width: 100%;}.v3d-simple-preloader-container {--v3d-preloader-img-width: 120px;--v3d-preloader-img-height: 120px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: calc(var(--v3d-preloader-img-width) + 60px);height: calc(var(--v3d-preloader-img-height) + 60px);}.v3d-simple-preloader-bar {background: linear-gradient(90deg, #1458ae, #4388e0);width: 0%;height: 3px;margin: 15px -1px;border: 1px solid;border-radius: 50px;border-color: #2b70c7;}.v3d-simple-preloader-logo {width: var(--v3d-preloader-img-width);height: var(--v3d-preloader-img-height);background-image: url('data:image/svg+xml,%3C%3Fxml version="1.0" encoding="UTF-8" standalone="no"%3F%3E%3Csvg width="120" height="120" viewBox="0 0 31.75 31.75" version="1.1" id="svg5409" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns%23" xmlns:cc="http://creativecommons.org/ns%23" xmlns:dc="http://purl.org/dc/elements/1.1/"%3E%3Cdefs id="defs5403"%3E%3ClinearGradient xlink:href="%23linearGradient3077" id="linearGradient4375" gradientUnits="userSpaceOnUse" x1="172.91336" y1="78.689407" x2="193.7847" y2="53.806618" gradientTransform="matrix(1.1562901,0,0,1.1583991,-194.29093,208.80811)" /%3E%3ClinearGradient id="linearGradient3077"%3E%3Cstop style="stop-color:%230048a5;stop-opacity:1" offset="0" id="stop3073" /%3E%3Cstop style="stop-color:%234b86d1;stop-opacity:1" offset="1" id="stop3075" /%3E%3C/linearGradient%3E%3C/defs%3E%3Cmetadata id="metadata5406"%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=""%3E%3Cdc:format%3Eimage/svg+xml%3C/dc:format%3E%3Cdc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cg id="layer1" transform="translate(0,-270.54167)"%3E%3Cpath style="display:inline;fill:url(%23linearGradient4375);fill-opacity:1;stroke:none;stroke-width:0.9171;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 15.945207,270.5417 c -1.669933,-0.007 -3.344811,1.1051 -7.2273169,3.32785 -7.76503612,4.4455 -7.2281318,3.52338 -7.2677439,12.48309 -0.03948,8.95973 -0.56829626,8.03286 7.1571159,12.5471 7.7254249,4.51422 6.6598479,4.50948 14.4248479,0.064 7.765036,-4.4455 7.228132,-3.52338 7.267744,-12.48309 0.03948,-8.95973 0.568296,-8.03287 -7.157116,-12.5471 -3.862718,-2.25711 -5.527635,-3.38445 -7.197531,-3.39185 z m -0.0132,2.85167 c 1.6836,0.007 3.363685,0.8128 6.115359,2.4207 5.503323,3.21577 6.107199,4.27438 6.078963,10.65695 -0.02832,6.3826 -0.641388,7.43578 -6.172923,10.60259 -5.531523,3.16682 -6.748576,3.16139 -12.2518993,-0.0544 -5.503299,-3.21578 -6.1071633,-4.27439 -6.0789633,-10.65697 0.02844,-6.38259 0.6413884,-7.43577 6.1729353,-10.6026 2.7657613,-1.5834 4.4529153,-2.37377 6.1365283,-2.3663 z m -0.154249,1.6177 c -2.694169,0.0343 -5.683359,3.07006 -7.236352,6.07548 -1.5776528,3.05311 -2.4803533,5.94456 -2.1086051,9.65753 0.1618801,1.61652 1.6983849,3.67982 3.5378539,4.71425 -0.3909602,-3.2062 -0.1707481,-6.34306 0.5400002,-8.94693 0.71076,-2.60387 2.83223,-6.82883 5.337159,-6.82316 2.504954,0.006 4.626375,4.22704 5.337123,6.83091 0.710725,2.60386 0.930961,5.74073 0.539989,8.94693 1.839481,-1.03442 3.375985,-3.09779 3.537853,-4.71432 0.371749,-3.71296 -0.53082,-6.60428 -2.108485,-9.6574 -1.547604,-2.99499 -4.52153,-6.01988 -7.24846,-6.08267 -0.0426,-9.5e-4 -0.08532,-10e-4 -0.128028,-6.2e-4 z m 0.131713,8.9184 a 2.4731483,2.4776591 0 0 0 -1.188637,0.29153 2.4731483,2.4776591 0 0 0 -1.017889,3.35228 2.4731483,2.4776591 0 0 0 3.34619,1.01974 2.4731483,2.4776591 0 0 0 1.017877,-3.35231 2.4731483,2.4776591 0 0 0 -2.157541,-1.31124 z" id="path4130" /%3E%3C/g%3E%3C/svg%3E');background-size: 100% 100%;background-repeat: no-repeat;margin: 20px auto;}.v3d-annotation {position: absolute;top: -0.7em;left: -0.5em;width: auto;min-width: 1em;height: 1.4em;padding: 0.3em 0.5em;border: 1px solid #fff;border-radius: 2em;font-size: 16px;font-family: sans-serif;line-height: 1.4em;color: #fff;text-align: center;user-select: none;background: rgba(0, 0, 0, 0.8);}.v3d-annotation-transparent {opacity: 0.5;}.v3d-annotation-dialog {position: absolute;top: 85%;left: 85%;font-family: sans-serif;user-select: none;padding: 1em;min-width: 200px;color: #fff;background: rgba(0, 0, 0, 0.8);border-radius: 1em;font-size: 12px;line-height: 1.2;transition: opacity .5s;visibility: hidden;}.v3d-mobile-forward {position: absolute;width: 62px;height: 62px;bottom: 31px;left: 50%;margin-left: -31px;background-image: url('data:image/svg+xml,%3C%3Fxml version="1.0" encoding="UTF-8" standalone="no"%3F%3E%3Csvg width="62" height="62" viewBox="0 0 16.404167 16.404167" version="1.1" id="svg2719" sodipodi:docname="move_forward.svg" inkscape:version="1.1.2 (b8e25be833, 2022-02-05)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns%23" xmlns:cc="http://creativecommons.org/ns%23" xmlns:dc="http://purl.org/dc/elements/1.1/"%3E%3Csodipodi:namedview id="namedview7548" pagecolor="%23505050" bordercolor="%23eeeeee" borderopacity="1" inkscape:pageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" showgrid="false" inkscape:snap-global="false" inkscape:zoom="7.1451613" inkscape:cx="42.266366" inkscape:cy="15.814898" inkscape:window-width="1920" inkscape:window-height="1137" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg2719" /%3E%3Cdefs id="defs2713"%3E%3ClinearGradient gradientTransform="translate(-524.2581,-935.78503)" xlink:href="%23linearGradient2768" id="linearGradient2673" x1="501.88306" y1="942.95502" x2="508.08038" y2="935.61182" gradientUnits="userSpaceOnUse" /%3E%3ClinearGradient id="linearGradient2768"%3E%3Cstop style="stop-color:%23414141;stop-opacity:1" offset="0" id="stop2764" /%3E%3Cstop style="stop-color:%23767676;stop-opacity:1" offset="1" id="stop2766" /%3E%3C/linearGradient%3E%3ClinearGradient gradientTransform="translate(-521.96226,-941.8579)" xlink:href="%23linearGradient2648" id="linearGradient2665" x1="495.62714" y1="948.00964" x2="508.85629" y2="934.78046" gradientUnits="userSpaceOnUse" /%3E%3ClinearGradient id="linearGradient2648"%3E%3Cstop style="stop-color:%23ebebeb;stop-opacity:1" offset="0" id="stop2644" /%3E%3Cstop style="stop-color:%23ffffff;stop-opacity:1" offset="1" id="stop2646" /%3E%3C/linearGradient%3E%3Cfilter style="color-interpolation-filters:sRGB" id="filter2688" x="-0.12" width="1.24" y="-0.12" height="1.24"%3E%3CfeGaussianBlur stdDeviation="0.66145835" id="feGaussianBlur2690" /%3E%3C/filter%3E%3ClinearGradient inkscape:collect="always" xlink:href="%23linearGradient2768" id="linearGradient7749" x1="6.0107598" y1="11.942085" x2="11.430239" y2="4.0917845" gradientUnits="userSpaceOnUse" /%3E%3ClinearGradient inkscape:collect="always" xlink:href="%23linearGradient2648" id="linearGradient8251" x1="4.2536402" y1="13.238126" x2="12.150527" y2="2.9068334" gradientUnits="userSpaceOnUse" /%3E%3Cfilter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter8772" x="-0.10840111" y="-0.10840111" width="1.2168022" height="1.2168022"%3E%3CfeGaussianBlur inkscape:collect="always" stdDeviation="0.59752352" id="feGaussianBlur8774" /%3E%3C/filter%3E%3C/defs%3E%3Cmetadata id="metadata2716"%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=""%3E%3Cdc:format%3Eimage/svg+xml%3C/dc:format%3E%3Cdc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Ccircle style="fill:%23000000;stroke-width:0.230841;stroke-linecap:round;stroke-linejoin:round;fill-opacity:0.5;filter:url(%23filter8772)" id="circle8626" cx="8.2020836" cy="8.2020836" r="6.6145835" /%3E%3Ccircle style="fill:url(%23linearGradient8251);stroke-width:0.230841;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1" id="path7652" cx="8.2020836" cy="8.2020836" r="6.6145835" /%3E%3Cpath d="m 4.2333333,6.7138018 c 0,0.9875367 0.4960933,2.4804692 0.4960933,2.4804692 h 1.984375 c 0,-0.7441408 0.2480473,-1.1782225 0.496094,-1.612305 0.2480467,-0.4340817 0.4960942,-0.8681642 0.4960942,-1.6123037 0,-0.8743657 -0.2480475,-2.7285166 -1.4882817,-2.7285166 -1.240234,0 -1.9843749,1.9843749 -1.9843748,3.4726561 z m 1.4882816,4.4648442 c 0.5472533,0 0.9921867,-0.444934 0.9921867,-0.992188 V 9.6903643 h -1.984375 v 0.4960937 c 0,0.547254 0.4449341,0.992188 0.9921883,0.992188 z M 12.170834,8.6981768 c 0,-1.4882808 -0.744141,-3.4726553 -1.984376,-3.4726553 -1.240234,0 -1.4882807,1.8541503 -1.4882807,2.7285153 0,0.74414 0.2480467,1.1782226 0.4960933,1.6123041 0.2480467,0.4340821 0.4960934,0.8681641 0.4960934,1.6123051 h 1.984376 c 0,0 0.496094,-1.4929325 0.496094,-2.4804692 z m -1.488281,4.4648442 c 0.547253,0 0.992187,-0.444935 0.992187,-0.992188 V 11.674739 H 9.690364 v 0.496094 c 0,0.547253 0.444935,0.992188 0.992189,0.992188 z" id="path7734" style="stroke-width:0.0155029;fill-opacity:1;fill:url(%23linearGradient7749)" /%3E%3C/svg%3E');touch-action: none;-webkit-user-select: none;user-select: none;}.v3d-webgl-error-container {position: absolute;top: 50%;left: 50%;margin-top: -80px;margin-left: -200px;width: 400px;height: 160px;text-align: center;z-index: 10;}.v3d-webgl-error-image {width: 160px;height: 160px;background-repeat: no-repeat;margin: 0px auto;background-image: url('data:image/svg+xml,%3C%3Fxml version="1.0" encoding="UTF-8" standalone="no"%3F%3E%3Csvg width="160" height="160" viewBox="0 0 42.333332 42.333333" version="1.1" id="svg1" inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" sodipodi:docname="webgl-error.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"%3E%3Csodipodi:namedview id="namedview1" pagecolor="%23ffffff" bordercolor="%23eeeeee" borderopacity="1" inkscape:showpageshadow="false" inkscape:pageopacity="0" inkscape:pagecheckerboard="false" inkscape:deskcolor="%23d1d1d1" inkscape:document-units="px" labelstyle="default" shape-rendering="auto" inkscape:clip-to-page="false" inkscape:zoom="1.6017536" inkscape:cx="-5.3066837" inkscape:cy="78.97594" inkscape:window-width="1920" inkscape:window-height="1137" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" /%3E%3Cdefs id="defs1"%3E%3Cfilter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter1" x="-0.18167429" y="-0.16562716" width="1.3633486" height="1.3312543"%3E%3CfeGaussianBlur inkscape:collect="always" stdDeviation="2.1910722" id="feGaussianBlur1" /%3E%3C/filter%3E%3ClinearGradient inkscape:collect="always" xlink:href="%23linearGradient3259" id="linearGradient10" x1="863.9444" y1="1424.3892" x2="892.88947" y2="1424.3892" gradientUnits="userSpaceOnUse" /%3E%3ClinearGradient inkscape:collect="always" id="linearGradient3259"%3E%3Cstop style="stop-color:%23c90000;stop-opacity:1" offset="0" id="stop3255" /%3E%3Cstop style="stop-color:%23ff0a0a;stop-opacity:1" offset="1" id="stop3257" /%3E%3C/linearGradient%3E%3C/defs%3E%3Cg inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"%3E%3Cg id="g2" style="display:inline" transform="translate(-857.25025,-1403.2226)"%3E%3Cpath id="path10" style="fill:%23e40505;fill-opacity:0.4;stroke-width:0.0581876;filter:url(%23filter1)" d="m 878.41691,1413.9426 c 1.49459,-0.033 2.34009,1.1428 2.29362,2.1957 l -0.39169,8.8754 c -0.0465,1.0529 -0.84799,1.9018 -1.90193,1.9018 -1.05394,0 -1.8516,-0.8491 -1.90193,-1.9018 l -0.42433,-8.8754 c -0.0503,-1.0527 0.83167,-2.163 2.32626,-2.1957 z m -0.18948,15.5145 c 1.4715,-0.1102 2.72596,1.0544 2.72522,2.53 0.0257,3.4066 -5.09721,3.4066 -5.07148,0 -6.7e-4,-1.3275 1.02252,-2.4308 2.34626,-2.53 z m 0.26002,-20.9425 c -1.67293,-0.01 -3.35083,1.1046 -7.24038,3.3274 -7.77912,4.4454 -7.24153,3.5234 -7.28121,12.483 -0.0397,8.9596 -0.56935,8.0329 7.17011,12.547 7.73941,4.5142 6.67221,4.5096 14.45131,0.064 7.77911,-4.4455 7.241,-3.5233 7.28069,-12.483 0.0397,-8.9596 0.56933,-8.0328 -7.1701,-12.547 -3.86972,-2.257 -5.53749,-3.384 -7.21042,-3.3915 z m -0.0134,2.8509 v 6e-4 c 1.68666,0.01 3.37009,0.8126 6.12676,2.4205 5.51329,3.2157 6.11834,4.2746 6.09006,10.6572 -0.0283,6.3825 -0.64255,7.4357 -6.18411,10.6025 -5.54155,3.1668 -6.76089,3.161 -12.27419,-0.055 -5.51329,-3.2158 -6.11831,-4.2742 -6.09007,-10.6567 0.0284,-6.3825 0.64255,-7.4357 6.18412,-10.6025 2.77079,-1.5834 4.46077,-2.3737 6.14743,-2.3663 z" sodipodi:nodetypes="zssssszsccssssssssssccsssssssc" /%3E%3Cpath id="path3" style="fill:url(%23linearGradient10);stroke-width:0.0581876" d="m 878.41691,1413.9426 c 1.49459,-0.033 2.34009,1.1428 2.29362,2.1957 l -0.39169,8.8754 c -0.0465,1.0529 -0.84799,1.9018 -1.90193,1.9018 -1.05394,0 -1.8516,-0.8491 -1.90193,-1.9018 l -0.42433,-8.8754 c -0.0503,-1.0527 0.83167,-2.163 2.32626,-2.1957 z m -0.18948,15.5145 c 1.4715,-0.1102 2.72596,1.0544 2.72522,2.53 0.0257,3.4066 -5.09721,3.4066 -5.07148,0 -6.7e-4,-1.3275 1.02252,-2.4308 2.34626,-2.53 z m 0.26002,-20.9425 c -1.67293,-0.01 -3.35083,1.1046 -7.24038,3.3274 -7.77912,4.4454 -7.24153,3.5234 -7.28121,12.483 -0.0397,8.9596 -0.56935,8.0329 7.17011,12.547 7.73941,4.5142 6.67221,4.5096 14.45131,0.064 7.77911,-4.4455 7.241,-3.5233 7.28069,-12.483 0.0397,-8.9596 0.56933,-8.0328 -7.1701,-12.547 -3.86972,-2.257 -5.53749,-3.384 -7.21042,-3.3915 z m -0.0134,2.8509 v 6e-4 c 1.68666,0.01 3.37009,0.8126 6.12676,2.4205 5.51329,3.2157 6.11834,4.2746 6.09006,10.6572 -0.0283,6.3825 -0.64255,7.4357 -6.18411,10.6025 -5.54155,3.1668 -6.76089,3.161 -12.27419,-0.055 -5.51329,-3.2158 -6.11831,-4.2742 -6.09007,-10.6567 0.0284,-6.3825 0.64255,-7.4357 6.18412,-10.6025 2.77079,-1.5834 4.46077,-2.3737 6.14743,-2.3663 z" sodipodi:nodetypes="zssssszsccssssssssssccsssssssc" /%3E%3C/g%3E%3C/g%3E%3C/svg%3E');background-size: 100% 100%;}.v3d-webgl-error {font-family: Arial;font-size: 16px;}.v3d-webgl-error-link {font-style: italic;font-weight: bolder;}.v3d-webgl-error-link {color: #015fb1;}`;if(typeof __V3D_DEVTOOLS__<"u"&&__V3D_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"4.10.0"}})),typeof window<"u"&&(window.__V3D__?console.warn("WARNING: Multiple instances of Verge3D being imported."):window.__V3D__="4.10.0"),typeof document<"u"){const n=document.createElement("style");n.appendChild(document.createTextNode(c3e)),document.head.insertBefore(n,document.head.firstChild)}const u3e=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping:vie,AVERAGE:E2e,AddEquation:X5,AddOperation:hie,AdditiveAnimationBlendMode:Iae,AdditiveBlending:Koe,AgXBlenderToneMapping:Eie,AlphaFormat:Yie,AlwaysDepth:oie,AlwaysStencilFunc:ose,AmbientLight:XP,AmbientLightProbe:X_e,AnimationClip:j0,AnimationLoader:Ube,AnimationMixer:sD,AnimationObjectGroup:fve,AnimationUtils:rve,Annotation:o3e,AnnotationControl:mN,App:fN,AppUtils:vo,ArcCurve:w1e,ArrayCamera:BL,ArrowHelper:Lve,Audio:eD,AudioAnalyser:eve,AudioContext:_b,AudioListener:JP,AudioLoader:z_e,AxesHelper:Pve,BackSide:Qoe,BasicDepthPacking:Nae,BasicShadowMap:zoe,BilinearShadowMap:Goe,BlenderTextBufferGeometry:Vbe,BlenderTextGeometry:Fbe,BloomPass:pl,BokehPass:Rb,Bone:jL,BooleanKeyframeTrack:pc,Box2:xve,Box3:Tn,Box3Helper:Tb,BoxGeometry:nc,BoxHelper:Ive,BrightnessContrastPass:Lb,BufferAttribute:Xe,BufferGeometry:At,BufferGeometryLoader:zbe,BufferGeometryUtils:NAe,ByteType:Fie,CENTER:x2e,CSS3DObject:tye,CSS3DRenderer:v6,CSVParser:X1,Cache:na,Camera:fh,CameraHelper:Tve,CameraUtils:hN,CanvasBreakpointsConstraint:cB,CanvasFitConstraint:lB,CanvasTexture:oP,CapsuleGeometry:k1e,CatmullRomCurve3:M1e,ChildOfConstraint:R6,CineonToneMapping:_ie,CircleGeometry:F1e,ClampToEdgeWrapping:uR,ClearMaskPass:MD,Clock:Ca,Color:Ge,ColorKeyframeTrack:Sb,ColorManagement:Wr,Compat:m6,CompressedArrayTexture:S1e,CompressedTexture:dl,CompressedTextureLoader:V_e,ConeGeometry:V1e,Constraint:id,ConstraintSpaceCustom:Bse,ConstraintSpaceLocal:Nse,ConstraintSpaceWorld:Dse,ControlSettings:n3,CopyLocationConstraint:L6,CopyRotationConstraint:P6,CopyScaleConstraint:N6,CopyTransformsConstraint:V6,CubeCamera:a0,CubeCopy:Gh,CubeReflectionMapping:Tie,CubeReflectionProbe:l3,CubeRefractionMapping:Iie,CubeTexture:s0,CubeTextureHelper:K1,CubeTextureLoader:U_e,CubeUVReflectionMapping:Pie,CubicBezierCurve:aP,CubicBezierCurve3:N1e,CubicInterpolant:nD,CullFaceBack:Foe,CullFaceFront:Voe,CullFaceFrontBack:Uoe,CullFaceNone:koe,Curve:Zi,CurvePath:uP,CustomBlending:eie,CustomToneMapping:Aie,CylinderGeometry:tb,Cylindrical:bve,DampedTrackConstraint:z6,Data3DTexture:l2,DataArrayTexture:$g,DataTexture:gs,DataTextureLoader:kP,DataUtils:Bve,DecrementStencilOp:$ae,DecrementWrapStencilOp:Xae,DefaultLoadingManager:pb,DepthFormat:AR,DepthStencilFormat:Kie,DepthTexture:P2,Detector:nr,DirectionalLight:YP,DirectionalLightCSMHelper:Mve,DirectionalLightHelper:AD,DiscreteInterpolant:lb,DodecahedronGeometry:U1e,DoubleSide:$oe,DstAlphaFactor:oR,DstColorFactor:aR,DynamicCopyUsage:fse,DynamicDrawUsage:ase,DynamicReadUsage:cse,ESMDistancePacking:Vae,ESMShadowMap:Woe,EdgesGeometry:z1e,EffectComposer:c3,EllipseCurve:X2,EqualDepth:sie,EqualStencilFunc:Jae,EquirectangularReflectionMapping:Rie,EquirectangularRefractionMapping:Lie,Euler:$i,EventDispatcher:ti,ExtendedTriangle:Li,ExtrudeGeometry:vP,FXAAPass:e1,FileLoader:Si,FilmicBlenderToneMapping:xie,FirstPersonControls:e3,FixOrthoZoomConstraint:aB,Float16BufferAttribute:ple,Float32BufferAttribute:mt,Float64BufferAttribute:mle,FloatType:Hie,FloorConstraint:G6,FlyingControls:t3,Fog:G2,FogExp2:z2,Font:h3,FramebufferTexture:C1e,FrontSide:joe,Frustum:ph,GLBufferAttribute:yve,GLSL1:pse,GLSL3:Jy,GLTFExporter:r1,GLTFLoader:MB,GTAOMapGenerator:zB,GraphUtils:m_e,GrayscalePass:Pb,GreaterDepth:cie,GreaterEqualDepth:lie,GreaterEqualStencilFunc:rse,GreaterStencilFunc:tse,GridHelper:Sve,Group:qi,HalfFloatType:Wie,HemisphereLight:H_e,HemisphereLightHelper:Cve,HemisphereLightProbe:W_e,IBLEnvironmentNone:Sse,IBLEnvironmentPMREM:Ese,IBLEnvironmentProbe:Cse,IcosahedronGeometry:a_e,ImageBitmapLoader:FP,ImageLoader:mb,ImageUtils:zR,IncrementStencilOp:Qae,IncrementWrapStencilOp:Yae,InstancedBufferAttribute:j2,InstancedBufferGeometry:Ave,InstancedInterleavedBuffer:qbe,InstancedMesh:x1e,Int16BufferAttribute:fle,Int32BufferAttribute:hle,Int8BufferAttribute:cle,IntType:zie,InterleavedBuffer:Kbe,InterleavedBufferAttribute:Xbe,Interpolant:qu,InterpolateDiscrete:xae,InterpolateLinear:Eae,InterpolateSmooth:Cae,InvertStencilOp:qae,KeepStencilOp:Wae,KeyframeTrack:Sa,Keys:tt,LOD:v1e,LatheGeometry:dP,Layers:Iu,LessDepth:iie,LessEqualDepth:aie,LessEqualStencilFunc:ese,LessStencilFunc:Zae,Light:fl,LightProbe:Dh,LightProbeGenerator:GB,LimitDistanceConstraint:W6,LimitLocationConstraint:j6,LimitRotationConstraint:Q6,LimitScaleConstraint:$6,Line:Ki,Line3:wa,LineBasicMaterial:_r,LineCurve:eb,LineCurve3:O1e,LineDashedMaterial:p_e,LineHTML:t3e,LineLoop:eP,LineSegments:ai,LinearDepthPacking:kae,LinearEncoding:Dae,LinearFilter:mR,LinearInterpolant:z0,LinearMipMapLinearFilter:Oie,LinearMipMapNearestFilter:Nie,LinearMipmapLinearFilter:_R,LinearMipmapNearestFilter:gR,LinearSRGBColorSpace:Zy,LinearToneMapping:mie,Loader:Ci,LoaderUtils:Ea,LoadingManager:OP,LockedTrackConstraint:K6,LogarithmicMaxToneMapping:yie,LoopOnce:Aae,LoopPingPong:bae,LoopRepeat:yae,LuminanceAlphaFormat:qie,LuminanceFormat:Xie,MOD_SUITE:gse,MOUSE:ql,MaskPass:Nb,Material:Nr,MaterialLoader:Gbe,MaterialUtils:FAe,MathUtils:$se,Matrix3:ao,Matrix4:Ue,MaxEquation:nie,Mesh:Mt,MeshBVH:Q1,MeshBasicMaterial:pr,MeshDepthMaterial:Gu,MeshDistanceMaterial:IL,MeshLambertMaterial:O0,MeshLine:rd,MeshLineIndexed:ID,MeshLineMaterial:sb,MeshMaskMaterial:CP,MeshMatcapMaterial:Qbe,MeshNodeMaterial:ta,MeshNormalMaterial:EP,MeshPhongMaterial:Wbe,MeshPhysicalMaterial:ab,MeshStandardMaterial:Xu,MeshToonMaterial:jbe,MinEquation:tie,MirroredRepeatWrapping:dR,MixOperation:fie,MotionPathConstraint:yB,MultiplyBlending:Joe,MultiplyOperation:die,NearestFilter:fR,NearestMipMapLinearFilter:Bie,NearestMipMapNearestFilter:Die,NearestMipmapLinearFilter:pR,NearestMipmapNearestFilter:hR,NeverDepth:rie,NeverStencilFunc:Kae,NoBlending:Xoe,NoColorSpace:Gae,NoOIT:Lse,NoToneMapping:pie,NormalAnimationBlendMode:Tae,NormalBlending:qoe,NotEqualDepth:uie,NotEqualStencilFunc:nse,NumberKeyframeTrack:hc,OITWeighted:Pse,Object3D:kt,ObjectLoader:Hbe,ObjectSpaceNormalMap:zae,OctahedronGeometry:AP,OneFactor:J5,OneMinusDstAlphaFactor:iR,OneMinusDstColorFactor:sR,OneMinusSrcAlphaFactor:rR,OneMinusSrcColorFactor:tR,OrbitControls:Zb,OrthographicCamera:ya,OutlinePass:Ma,PCFShadowMap:Hoe,PCFShadowMapPoissonDisk:Ybe,PCFSoftShadowMap:$be,PMREMGenerator:gh,Pass:xi,Path:I0,PbrNeutralToneMapping:Cie,PerspectiveCamera:gr,PhysicalMaxToneMapping:bie,Plane:Vo,PlaneGeometry:ms,PlaneHelper:Rve,PointLight:HP,PointLightHelper:pD,Points:nP,PointsMaterial:$2,PolarGridHelper:wve,PolyhedronGeometry:Sh,PositionalAudio:J_e,Preloader:Cc,PropertyBinding:Kt,PropertyMixer:aD,PuzzlesLoader:r3e,QuadraticBezierCurve:sP,QuadraticBezierCurve3:lP,Quaternion:It,QuaternionKeyframeTrack:fc,QuaternionLinearInterpolant:iD,REVISION:Noe,RGBADepthPacking:Oae,RGBADistancePacking:Fae,RGBAFormat:vR,RGBAIntegerFormat:tae,RGBA_ASTC_10x10_Format:gae,RGBA_ASTC_10x5_Format:hae,RGBA_ASTC_10x6_Format:pae,RGBA_ASTC_10x8_Format:mae,RGBA_ASTC_12x10_Format:_ae,RGBA_ASTC_12x12_Format:vae,RGBA_ASTC_4x4_Format:TR,RGBA_ASTC_5x4_Format:aae,RGBA_ASTC_5x5_Format:sae,RGBA_ASTC_6x5_Format:lae,RGBA_ASTC_6x6_Format:cae,RGBA_ASTC_8x5_Format:uae,RGBA_ASTC_8x6_Format:dae,RGBA_ASTC_8x8_Format:fae,RGBA_BPTC_Format:IR,RGBA_ETC2_EAC_Format:MR,RGBA_PVRTC_2BPPV1_Format:iae,RGBA_PVRTC_4BPPV1_Format:CR,RGBA_S3TC_DXT1_Format:nae,RGBA_S3TC_DXT3_Format:rae,RGBA_S3TC_DXT5_Format:xR,RGBELoader:d3,RGB_ETC1_Format:SR,RGB_ETC2_Format:wR,RGB_PVRTC_2BPPV1_Format:oae,RGB_PVRTC_4BPPV1_Format:ER,RGB_S3TC_DXT1_Format:bR,RGFormat:yR,RGIntegerFormat:eae,RawShaderMaterial:mh,Ray:Tu,Raycaster:_0,RectAreaLight:WP,RectAreaLightUniformsLib:S6,RedFormat:Zie,RedIntegerFormat:Jie,ReflectionProbeTypeBox:Rse,ReflectionProbeTypeInfinite:Tse,ReflectionProbeTypeSphere:Ise,ReinhardToneMapping:gie,RenderPass:o1,RenderUtils:oye,RepeatWrapping:cR,ReplaceStencilOp:jae,ReverseSubtractEquation:K5,RingGeometry:s_e,SAH:C2e,SRGBColorSpace:Ky,SSAARenderPass:Fh,SSAOPass:kbe,Scene:jr,SceneBackground:Ge,SceneUtils:KAe,ShaderChunk:Qe,ShaderLib:Tt,ShaderMaterial:Dn,ShaderPass:bs,ShadowMaterial:h_e,Shape:$u,ShapeGeometry:l_e,ShapePath:bD,ShapeUtils:ba,ShortType:Vie,SimplePreloader:pN,Skeleton:E0,SkeletonHelper:fD,SkinnedMesh:x0,Source:Qg,Sphere:ni,SphereGeometry:yP,Spherical:xa,SphericalHarmonics3:td,SplineCurve:cP,SpotLight:UP,SpotLightHelper:dD,Sprite:VL,SpriteMaterial:H2,SrcAlphaFactor:nR,SrcAlphaSaturateFactor:lR,SrcColorFactor:eR,StaticCopyUsage:dse,StaticDrawUsage:ise,StaticReadUsage:lse,Stats:hd,StereoCamera:q_e,StreamCopyUsage:hse,StreamDrawUsage:sse,StreamReadUsage:use,StringKeyframeTrack:dc,SubtractEquation:q5,SubtractiveBlending:Zoe,TOUCH:Ooe,TTFLoader:u3,TangentSpaceNormalMap:Uae,TargetConstraint:Ao,TeapotGeometry:f_e,TetrahedronGeometry:c_e,TextGeometry:Ih,Texture:$n,TextureLoader:gb,ToneMapPass:kb,ToneMappingLookAgXPunchy:wie,ToneMappingLookNone:Sie,TorusGeometry:u_e,TorusKnotGeometry:ib,TrackToConstraint:iB,TransformationConstraint:SB,Triangle:Br,TriangleFanDrawMode:Pae,TriangleStripDrawMode:Lae,TrianglesDrawMode:Rae,TubeGeometry:d_e,TweenCameraController:d1,TweenLinear:wse,TweenSpherical:Mse,TwoPassDoubleSide:Yoe,USDZExporter:QD,UVMapping:Mie,Uint16BufferAttribute:ZR,Uint32BufferAttribute:JR,Uint8BufferAttribute:ule,Uint8ClampedBufferAttribute:dle,Uniform:Q0,UniformsGroup:vve,UniformsLib:qe,UniformsUtils:_o,UnsignedByteType:kie,UnsignedInt248Type:$ie,UnsignedIntType:Gie,UnsignedShort4444Type:jie,UnsignedShort5551Type:Qie,UnsignedShortType:Uie,V3DL:kg,Vector2:be,Vector3:N,Vector4:pt,VectorKeyframeTrack:Nh,VideoTexture:E1e,ViewportFitAuto:yse,ViewportFitFill:bse,ViewportFitHorizontal:Ase,ViewportFitNone:_se,ViewportFitOverscan:xse,ViewportFitVertical:vse,WebGL3DRenderTarget:tle,WebGLArrayRenderTarget:ele,WebGLCubeRenderTarget:hh,WebGLMultipleRenderTargets:c2,WebGLRenderTarget:nn,WebGLRenderer:U2,WebGLUtils:DL,WebXRUtils:l3e,WireframeGeometry:bP,WrapAroundEnding:Mae,XZ:y6,XZLoader:Wh,ZeroCurvatureEnding:Sae,ZeroFactor:Z5,ZeroSlopeEnding:wae,ZeroStencilOp:Hae,_SRGBAFormat:mse,acceleratedRaycast:lN,arrayMax:DR,arrayMin:Yse,clampArray:NR,computeBoundsTree:cN,disposeBoundsTree:uN,engineVersionCmp:VR,findModulePath:Gg,getGlobalScope:ch,isDef:_e,loadModule:i2,sRGBEncoding:Bae,shaderFloatStr:Js},Symbol.toStringTag,{value:"Module"}));function d3e(n=window.v3d){const e={percentage:0,output:{initOptions:{fadeAnnotations:!0,useBkgTransp:!1,preserveDrawBuf:!1,useCompAssets:!1,useFullscreen:!0,useCustomPreloader:!1,preloaderStartCb:function(){},preloaderProgressCb:function(){},preloaderEndCb:function(){}}}};var t={};t.objCache=new Map,t.fadeAnnotations=!0,t.pickedObject="",t.hoveredObject="",t.mediaElements={},t.loadedFile="",t.states=[],t.percentage=0,t.openedFile="",t.openedFileMeta={},t.xrSessionAcquired=!1,t.xrSessionCallbacks=[],t.screenCoords=new n.Vector2,t.intervalTimers={},t.customEvents=new n.EventDispatcher,t.eventListeners=[],t.htmlElements=new Set,t.materialsCache=new Map,t.css3Objects=new WeakMap,t.AXIS_X=new n.Vector3(1,0,0),t.AXIS_Y=new n.Vector3(0,1,0),t.AXIS_Z=new n.Vector3(0,0,1),t.MIN_DRAG_SCALE=.001,t.SET_OBJ_ROT_EPS=1e-8,t.vec2Tmp=new n.Vector2,t.vec2Tmp2=new n.Vector2,t.vec3Tmp=new n.Vector3,t.vec3Tmp2=new n.Vector3,t.vec3Tmp3=new n.Vector3,t.vec3Tmp4=new n.Vector3,t.eulerTmp=new n.Euler,t.eulerTmp2=new n.Euler,t.quatTmp=new n.Quaternion,t.quatTmp2=new n.Quaternion,t.colorTmp=new n.Color,t.mat4Tmp=new n.Matrix4,t.planeTmp=new n.Plane,t.raycasterTmp=new n.Raycaster;const r=({v3d:i=null,appInstance:a=null})=>{function s(H,T=!1){let R;if(Array.isArray(H)&&H[0]==="CONTAINER"){if(a!==null)R=a.container;else if(typeof e<"u"){const O=e.container;R=T?parent.document.getElementById(O):document.getElementById(O)}}else Array.isArray(H)&&H[0]==="WINDOW"?R=T?parent:window:Array.isArray(H)&&H[0]==="DOCUMENT"?R=T?parent.document:document:Array.isArray(H)&&H[0]==="BODY"?R=T?parent.document.body:document.body:Array.isArray(H)&&H[0]==="QUERYSELECTOR"?R=T?parent.document.querySelector(H):document.querySelector(H):R=T?parent.document.getElementById(H):document.getElementById(H);return R}function l(H,T=!1){const R=[];if(Array.isArray(H)&&H[0]!=="CONTAINER"&&H[0]!=="WINDOW"&&H[0]!=="DOCUMENT"&&H[0]!=="BODY"&&H[0]!=="QUERYSELECTOR")for(let O=0;Oc(ae.target,ae.type,ae.listener,ae.optionsOrUseCapture,H,T,R,O))||(H.addEventListener(T,R,O),t.eventListeners.push({target:H,type:T,listener:R,optionsOrUseCapture:O}))}function d(H){return H.name!==""&&!(H.isMesh&&H.isMaterialGeneratedMesh)&&!H.isAuxClippingMesh}function f(H){let T=null;const R=i.MathUtils.checkUUID?i.MathUtils.checkUUID(H):!1,O=t!==void 0;if(O&&(T=t.objCache.get(H)),T&&(R?T.uuid===H:T.name===H))return T;function W(ae,ne){if((R?ae.uuid===ne:ae.name===ne)&&d(ae))return ae;for(let oe=0;oe{if(d(R)){const O=R.groupNames;if(!O)return;for(let W=0;W{d(T)&&H.push(T.name)}),H}function m(H,T){if(typeof H=="string")T.push(H);else if(Array.isArray(H)&&H[0]==="GROUP"){const R=h(H[1]);for(let O=0;OR!=="")}function _(H){if(H.isMesh)return!0;for(let T=0;T"%"+("00"+T.charCodeAt(0).toString(16)).slice(-2)).join(""))}function E(H){const T=H.match(y);return b(T[2])}function x(H){const T=i.SceneUtils.getMaterialByName(a,H);return T?T.isMeshNodeMaterial?Object.keys(T.nodeValueMap):T.isMeshStandardMaterial?["metalness","roughness","bumpScale","emissiveIntensity","envMapIntensity"]:[]:[]}function w(H,T,R,O=!1){if(T===R)return H;const W=H.y,ae=H.z;return T==="Z_UP_RIGHT"&&R==="Y_UP_RIGHT"?(H.y=ae,H.z=O?W:-W):T==="Y_UP_RIGHT"&&R==="Z_UP_RIGHT"?(H.y=O?ae:-ae,H.z=W):console.error("transformCoordsSpace: Unsupported coordinate space"),H}const L=(function(){const H=new i.Euler,T=new i.Euler,R=new i.Vector3;return function(O,W){const ae=H.copy(O).reorder("YZX"),ne=T.copy(ae).makeAlternative(),oe=R.setFromEuler(ae).lengthSq(),F=R.setFromEuler(ne).lengthSq();return W.copy(oe"u"&&typeof process<"u"&&process.hrtime?T.now=function(){var R=process.hrtime();return 1e3*R[0]+R[1]/1e6}:typeof window<"u"&&window.performance!==void 0&&window.performance.now!==void 0?T.now=window.performance.now.bind(window.performance):Date.now!==void 0?T.now=Date.now:T.now=function(){return new Date().getTime()},T.Tween=function(R,O){this._object=R,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._repeatDelayTime=void 0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=T.Easing.Linear.None,this._interpolationFunction=T.Interpolation.Linear,this._chainedTweens=[],this._onStartCallback=null,this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onCompleteCallback=null,this._onStopCallback=null,this._group=O||T,this._id=T.nextId()},T.Tween.prototype={getId:function(){return this._id},isPlaying:function(){return this._isPlaying},to:function(R,O){return this._valuesEnd=R,O!==void 0&&(this._duration=O),this},start:function(R){for(var O in this._group.add(this),this._isPlaying=!0,this._onStartCallbackFired=!1,this._startTime=R!==void 0?typeof R=="string"?T.now()+parseFloat(R):R:T.now(),this._startTime+=this._delayTime,this._valuesEnd){if(this._valuesEnd[O]instanceof Array){if(this._valuesEnd[O].length===0)continue;this._valuesEnd[O]=[this._object[O]].concat(this._valuesEnd[O])}this._object[O]!==void 0&&(this._valuesStart[O]=this._object[O],!(this._valuesStart[O]instanceof Array)&&(this._valuesStart[O]*=1),this._valuesStartRepeat[O]=this._valuesStart[O]||0)}return this},stop:function(){return this._isPlaying&&(this._group.remove(this),this._isPlaying=!1,this._onStopCallback!==null&&this._onStopCallback(this._object),this.stopChainedTweens()),this},end:function(){return this.update(this._startTime+this._duration),this},stopChainedTweens:function(){for(var R=0,O=this._chainedTweens.length;R{t.objCache.delete(R.name)})}function re(H,T){let R=H;if(T!==void 0)for(;!T(R);){const O=R.match(/^(.*?)(\d+)$/);O?R=O[1]+(Number.parseInt(O[2],10)+1):R+="2"}return R}function G(H){return re(H,T=>!f(T))}function se(H){const T=i.SceneUtils.getMaterialByName(a,H);return T?T.isMeshNodeMaterial?Object.keys(T.nodeRGBMap):T.isMeshStandardMaterial?["color","emissive"]:T.isMeshLineMaterial?["color"]:[]:[]}function ee(H,T=!1){let R=[];if(T)R=i.SceneUtils.getMaterialsByName(a,H);else{const W=i.SceneUtils.getMaterialByName(a,H);W!==null&&(R=[W])}return R.reduce((W,ae)=>{let ne=[];switch(ae.type){case"MeshNodeMaterial":ne=Object.values(ae.nodeTextures);break;case"MeshStandardMaterial":ne=[ae.map,ae.lightMap,ae.aoMap,ae.emissiveMap,ae.bumpMap,ae.normalMap,ae.displacementMap,ae.roughnessMap,ae.metalnessMap,ae.alphaMap,ae.envMap];break;default:console.error("getMaterialEditableTextures: Unknown material type "+ae.type);break}return Array.prototype.push.apply(W,ne),W},[]).filter(W=>W&&(W.constructor===i.Texture||W.constructor===i.CompressedTexture||W.constructor===i.DataTexture||W.constructor===i.CanvasTexture||W.constructor===i.VideoTexture))}function ie(H,T,R){if(i.MaterialUtils.replaceTexture){i.MaterialUtils.replaceTexture(H,T,R);return}switch(H.type){case"MeshNodeMaterial":H.traverseNodes(W=>{W.originData.texture===T&&(W.originData.texture=R)});for(const W in H.nodeTextures)H.nodeTextures[W]===T&&(H.nodeTextures[W]=R);break;case"MeshStandardMaterial":["map","lightMap","aoMap","emissiveMap","bumpMap","normalMap","displacementMap","roughnessMap","metalnessMap","alphaMap","envMap"].forEach(W=>{H[W]===T&&(H[W]=R)});break;default:console.error("replaceMaterialEditableTexture: Unsupported material type "+H.type);break}R.encoding=T.encoding,R.wrapS=T.wrapS,R.wrapT=T.wrapT}return{getElements:l,bindListener:u,getElement:s,getObjectByName:f,retrieveObjectNames:g,isMeshObject:_,isObjectWorthProcessing:d,isDataUrl:A,extractDataUrlData:E,getMaterialEditableValues:x,transformCoordsSpace:w,transformEulerV3dToBlenderShortest:L,getSceneCoordSystem:C,RotationInterface:P,Tween:D,removeObject:Q,generateUniqueObjectName:G,getMaterialEditableColors:se,getMaterialEditableTextures:ee,replaceMaterialEditableTexture:ie}};var o={};return n[Symbol.toStringTag]!=="Module"&&(n.PL=n.puzzles=o),o.procedures=o.procedures||{},o.execInitPuzzles=function(i){const a=r({v3d:n});e.container=i!==void 0&&"container"in i?i.container:"";function s(l,c,u,d){for(var f=a.getElements(u,d),h=0;h0&&(c=!0)}function $(){v(H,"totalWidth")>2?(M("Spiegel","verplaatsing_meubels",(Math.min(Math.max((v(H,"totalWidth")-2)/2,0),2)-0)/2*1+0),M("Dressoir","verplaatsing_meubels",(Math.min(Math.max((v(H,"totalWidth")-2)/2,0),2)-0)/2*1+0),M("Vaas.001","verplaatsing_meubels",(Math.min(Math.max((v(H,"totalWidth")-2)/2,0),2)-0)/2*1+0),M("Vlak.002","verplaatsing_meubels",(Math.min(Math.max((v(H,"totalWidth")-2)/2,0),2)-0)/2*1+0),M("Vlak.003","verplaatsing_meubels",(Math.min(Math.max((v(H,"totalWidth")-2)/2,0),2)-0)/2*1+0)):(M("Spiegel","verplaatsing_meubels",0),M("Dressoir","verplaatsing_meubels",0),M("Vaas.001","verplaatsing_meubels",0),M("Vlak.002","verplaatsing_meubels",0),M("Vlak.003","verplaatsing_meubels",0))}function B(){return!!(v(C,"maatvoering_weergeven")||O("getMaatvoeringScreenshot")())}function V(Z){const X=window.navigator.userAgent,ue=window.navigator.platform;let ge,Oe;switch(Z){case"MOBILE":return/Android|webOS|BlackBerry/i.test(X)||n.Detector.checkIOS();case"ANDROID":return/Android/i.test(X);case"IOS":return n.Detector.checkIOS();case"WINDOWS":return["Win32","Win64","Windows","WinCE"].indexOf(ue)!==-1;case"MACOS":return["Macintosh","MacIntel","MacPPC","Mac68K"].indexOf(ue)!==-1&&!n.Detector.checkIOS();case"CHROMEOS":return/(CrOS)/.test(X);case"LINUX":return/Linux/.test(ue);case"CHROME":return!!window.chrome&&!/Edge/.test(navigator.userAgent);case"FIREFOX":return/Firefox/.test(navigator.userAgent);case"IE":return/Trident/.test(navigator.userAgent);case"EDGE":return/Edge/.test(navigator.userAgent);case"SAFARI":return/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent);case"TOUCH":return n.Detector.isTouchDevice();case"RETINA":return window.devicePixelRatio>=2;case"HDR":return i.useHDR;case"WEBAUDIO":return n.Detector.checkWebAudio();case"WEBGL":return ge=document.createElement("canvas"),Oe=ge.getContext("webgl"),!!Oe;case"WEBGL2":return ge=document.createElement("canvas"),Oe=ge.getContext("webgl2"),!!Oe;case"WOOCOMMERCE":try{return!!(window.parent.v3d_woo_get_product_info||window.parent.parent.v3d_woo_get_product_info)}catch{return!1}case"DO_NOT_TRACK":return navigator.doNotTrack=="1"||window.doNotTrack=="1";default:return!1}}function Y(Z){i.useHiDPIRenderPass||i.renderer.setPixelRatio(Z),i.postprocessing&&i.postprocessing.composer.setPixelRatio(Z),i.onResize()}function le(Z){switch(Z){case"VENDOR":return n.Detector.getGPUVendor(i.renderer);case"MODEL":return n.Detector.getGPUModel(i.renderer)}}function me(Z,X){const ue={};Z=Array.isArray(Z)?Z:Z.split(/\r?\n/).filter(ge=>ge).map(ge=>ge.trim()),X=Array.isArray(X)?X:X.split(/\r?\n/).map(ge=>ge.trim());for(let ge=0;ge3.5?oe("FIELD_OF_VIEW","Camera",40):oe("FIELD_OF_VIEW","Camera",re)}function Ne(){oe("ORBIT_MIN_HORIZONTAL_ANGLE","Camera",160),oe("ORBIT_MAX_HORIZONTAL_ANGLE","Camera",190),oe("ORBIT_MIN_VERTICAL_ANGLE","Camera",80),oe("ORBIT_MAX_VERTICAL_ANGLE","Camera",95),oe("ORBIT_MIN_DISTANCE_PERSP","Camera",1),oe("FIELD_OF_VIEW","Camera",Q)}function He(){oe("ORBIT_MIN_HORIZONTAL_ANGLE","Camera",90),oe("ORBIT_MAX_HORIZONTAL_ANGLE","Camera",270),oe("ORBIT_MIN_VERTICAL_ANGLE","Camera",50),oe("ORBIT_MAX_VERTICAL_ANGLE","Camera",130),oe("ORBIT_MIN_DISTANCE_PERSP","Camera",1),oe("FIELD_OF_VIEW","Camera",32)}function je(){te([0,-7,v(H,"middlePositionZInclDimensions")],[0,0,v(H,"middlePositionZInclDimensions")],2,function(){Ie()},0),we(Q,re,2,"Linear","In",0,!1,"N?tAuva-gwL%|9i#Qx,,",function(){oe("FIELD_OF_VIEW","Camera",t.animateParamUpdate||0)},function(){})}function ct(Z,X,ue,ge,Oe){t.objMovementInfos=t.objMovementInfos||{};function xe(Je,$e,ht){if(t.objMovementInfos[Je]){var st=t.objMovementInfos[Je];st.prevPosX=$e.position.x,st.prevPosY=$e.position.y,st.prevPosZ=$e.position.z,st.prevRotX=$e.rotation.x,st.prevRotY=$e.rotation.y,st.prevRotZ=$e.rotation.z,st.prevScaX=$e.scale.x,st.prevScaY=$e.scale.y,st.prevScaZ=$e.scale.z,st.prevIsMoving=ht}else{var st={prevPosX:$e.position.x,prevPosY:$e.position.y,prevPosZ:$e.position.z,prevRotX:$e.rotation.x,prevRotY:$e.rotation.y,prevRotZ:$e.rotation.z,prevScaX:$e.scale.x,prevScaY:$e.scale.y,prevScaZ:$e.scale.z,prevIsMoving:ht};t.objMovementInfos[Je]=st}return st}function Ee(Je,$e,ht){var st=t.objMovementInfos[Je]||xe(Je,$e,!1),tn=X*ht,Bn=Math.abs($e.position.x-st.prevPosX)>tn||Math.abs($e.position.y-st.prevPosY)>tn||Math.abs($e.position.z-st.prevPosZ)>tn||Math.abs($e.rotation.x-st.prevRotX)>tn||Math.abs($e.rotation.y-st.prevRotY)>tn||Math.abs($e.rotation.z-st.prevRotZ)>tn||Math.abs($e.scale.x-st.prevScaX)>tn||Math.abs($e.scale.y-st.prevScaY)>tn||Math.abs($e.scale.z-st.prevScaZ)>tn;!st.prevIsMoving&&Bn||st.prevIsMoving&&Bn?xe(Je,$e,!0):(st.prevIsMoving,xe(Je,$e,!1))}function We(Je){function $e(ht,st){for(var tn=s.retrieveObjectNames(Je),Bn=0;Bn0&&te([0,fe("Camera",!1,"position","y")<=0?-7:5.5,B()?v(H,"middlePositionZInclDimensions"):v(H,"middlePositionZ")],[0,0,B()?v(H,"middlePositionZInclDimensions"):v(H,"middlePositionZ")],.5,function(){fe("Camera",!1,"position","y")>=0?Ne():Ie()},0)}function Rt(){oe("ALLOW_PANNING","Camera",!0),oe("FIELD_OF_VIEW","Camera",36),te([.02,-7,v(H,"middlePositionZInclDimensions")],[0,0,v(H,"middlePositionZInclDimensions")],.1,function(){},0)}function pe(Z){var X=Number(Z);return isNaN(X)&&(X=0),X}function Te(){if(B()?So("AfmetingenZijkant",pe(v(C,"hoogte")),v(H,"maxPositionX"),0,"Verticaal",.2,0,null,pe(v(C,"hoogte"))*.01):Ln("AfmetingenZijkant"),B()&&v(C,"bovenlicht")==!0?So("AfmetingenZijkantBovenlicht",pe(v(C,"hoogtebovenlicht")),v(H,"maxPositionX"),pe(v(C,"hoogte"))*.01,"Verticaal",.2,0,null,pe(v(C,"hoogtebovenlicht"))*.01):Ln("AfmetingenZijkantBovenlicht"),B()&&(v(C,"deur_aantal")>1||v(C,"zijpaneel_aantal_links")>0||v(C,"zijpaneel_aantal_rechts")>0)?So("AfmetingenBovenkant",v(H,"totalWidthCmString"),v(H,"minPositionX"),v(H,"totalHeight")+.1,"Horizontaal",0,O("getDimensionOffsetZ")(C,ee,"AfmetingenBovenkant"),v(H,"totalWidth"),null):Ln("AfmetingenBovenkant"),B())for(let Z=1;Z<=10;Z++)v(C,"deur_aantal")>=Z?So("AfmetingenBreedteDeur"+String(Z),v(O("customFunctionGetPanelWidth")(C,Z),"panelWidthCm"),P=="vaste-wand"?O("customFunctionVasteWandCalculatePositieX")(Z,C,T,H):pe(v(C,"breedte"))*(Z-1)*.01-v(H,"offsetPositionX"),v(H,"totalHeight")+0,"Horizontaal",0,O("getDimensionOffsetZ")(C,ee,"AfmetingenBreedteDeur"),v(O("customFunctionGetPanelWidth")(C,Z),"panelWidthM"),null):Ln("AfmetingenBreedteDeur"+String(Z));else for(let Z=1;Z<=10;Z++)Ln("AfmetingenBreedteDeur"+String(Z));if(B()&&v(C,"roede_design_keuze")==!1)for(let Z=1;Z<=4;Z++)v(C,"deur_aantal_ligger")>=Z?So("AfmetingenLigger"+String(Z),v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_ligger_maten")[Z-1]:Z*(v(C,"hoogte")/(v(C,"deur_aantal_ligger")+1)),v(H,"minPositionX"),(v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_ligger_maten")[Z-1]:Z*(v(C,"hoogte")/(v(C,"deur_aantal_ligger")+1)))*.01,"Maatpunt links/rechts",-.2,0,.05,null):Ln("AfmetingenLigger"+String(Z));else for(let Z=1;Z<=4;Z++)Ln("AfmetingenLigger"+String(Z));if(B())for(let Z=1;Z<=10;Z++)if(v(C,"deur_aantal")>=Z)for(let X=1;X<=4;X++)v(C,"deur_aantal_staander")>=X?So(["AfmetingenPaneel",Z,"Staander",X].join(""),v(Rs(["Paneel",Z,"Staander",X].join("")),"shapeKeyVerplaatsing"),v(Rs(["Paneel",Z,"Staander",X].join("")),"staanderPositionX"),v(H,"totalHeight"),"Maatpunt staander",0,O("getDimensionOffsetZ")(C,ee,null),null,.05):Ln(["AfmetingenPaneel",Z,"Staander",X].join(""));else for(let X=1;X<=4;X++)Ln(["AfmetingenPaneel",Z,"Staander",X].join(""));else for(let Z=1;Z<=10;Z++)for(let X=1;X<=4;X++)Ln(["AfmetingenPaneel",Z,"Staander",X].join(""));if(B())for(let Z=1;Z<=4;Z++)if(v(C,"zijpaneel_aantal_links")>=Z&&["taatsdeur","scharnierdeur","schuifdeur"].indexOf(P)>-1){So("AfmetingenZijpaneelLinks"+String(Z),pe(v(C,"zijpaneel_breedte_links")[Z-1]),O("customFunctionTaatsdeurZijpaneelLinksCalculatePositieX")(Z,C,T,H),v(H,"totalHeight"),"Horizontaal",0,O("getDimensionOffsetZ")(C,ee,"ZijpaneelFrame"),pe(v(C,"zijpaneel_breedte_links")[Z-1])*.01,null);for(let X=1;X<=4;X++)v(C,"zijpaneel_aantal_staander")>=X?So(["AfmetingenZijpaneelLinks",Z,"Staander",X].join(""),v(Rs(["ZijpaneelLinks",Z,"Staander",X].join("")),"shapeKeyVerplaatsing"),v(Rs(["ZijpaneelLinks",Z,"Staander",X].join("")),"staanderPositionX"),v(H,"totalHeight"),"Maatpunt staander",0,O("getDimensionOffsetZ")(C,ee,null),null,.05):Ln(["AfmetingenZijpaneelLinks",Z,"Staander",X].join(""))}else{Ln("AfmetingenZijpaneelLinks"+String(Z));for(let X=1;X<=4;X++)Ln(["AfmetingenZijpaneelLinks",Z,"Staander",X].join(""))}else for(let Z=1;Z<=4;Z++){Ln("AfmetingenZijpaneelLinks"+String(Z));for(let X=1;X<=4;X++)Ln(["AfmetingenZijpaneelLinks",Z,"Staander",X].join(""))}if(B())for(let Z=1;Z<=4;Z++)if(v(C,"zijpaneel_aantal_rechts")>=Z&&["taatsdeur","scharnierdeur","schuifdeur"].indexOf(P)>-1){So("AfmetingenZijpaneelRechts"+String(Z),pe(v(C,"zijpaneel_breedte_rechts")[Z-1]),O("customFunctionTaatsdeurZijpaneelRechtsCalculatePositieX")(Z,C,T,H),v(H,"totalHeight"),"Horizontaal",0,O("getDimensionOffsetZ")(C,ee,"ZijpaneelFrame"),pe(v(C,"zijpaneel_breedte_rechts")[Z-1])*.01,null);for(let X=1;X<=4;X++)v(C,"zijpaneel_aantal_staander")>=X?So(["AfmetingenZijpaneelRechts",Z,"Staander",X].join(""),v(Rs(["ZijpaneelRechts",Z,"Staander",X].join("")),"shapeKeyVerplaatsing"),v(Rs(["ZijpaneelRechts",Z,"Staander",X].join("")),"staanderPositionX"),v(H,"totalHeight"),"Maatpunt staander",0,O("getDimensionOffsetZ")(C,ee,null),null,.05):Ln(["AfmetingenZijpaneelRechts",Z,"Staander",X].join(""))}else{Ln("AfmetingenZijpaneelRechts"+String(Z));for(let X=1;X<=4;X++)Ln(["AfmetingenZijpaneelRechts",Z,"Staander",X].join(""))}else for(let Z=1;Z<=4;Z++){Ln("AfmetingenZijpaneelRechts"+String(Z));for(let X=1;X<=4;X++)Ln(["AfmetingenZijpaneelRechts",Z,"Staander",X].join(""))}}function Ce(Z){return v(C,"deurbreedtevariabel")?pe(v(C,"variabeledeurbreedte_maten")[Z-1]):pe(v(C,"breedte"))}function Zt(){return v(C,"deurbreedtevariabel")?pe(v(C,"variabeledeurbreedte_maten")[v(C,"deur_aantal")-1]):pe(v(C,"breedte"))}function rt(){var Z=pe(v(T,"vasteWandMaxPanelen")),X=1;1>Z&&(X=-X);for(let ue=1;X>=0?ue<=Z:ue>=Z;ue+=X)v(C,"deur_aantal")>=ue&&P=="vaste-wand"?(sn("ALU-Vaste wand",["vaste-wand",ue,"Frame"].join(""),Ce(ue),10,x,v(C,"hoogte"),L,D,O("customFunctionVasteWandCalculatePositieX")(ue,C,T,H),0,0),Cn("ALU-Vaste wand",Ze(["vaste-wand",ue,"Frame"].join("")),"ALU-Vaste wand_Glas",["vaste-wand",ue,"Glas"].join(""),Ce(ue),10,x,v(C,"hoogte"),L,D)):(ft(["vaste-wand",ue,"Frame"].join("")),ln(["vaste-wand",ue,"Glas"].join("")))}function rn(){v(C,"deur_aantal")>=1&&P=="taatsdeur"?(sn("ALU-Taatsdeur_Frame",["taatsdeur",1,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,0-v(H,"offsetPositionX"),0,0),Cn("ALU-Taatsdeur_Frame",Ze([P,1,"Frame"].join("")),"ALU-Taatsdeur_Glas",["taatsdeur",1,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),ut("ALU-Taatsdeur_Frame",Ze(["taatsdeur",1,"Frame"].join("")),Se(),["taatsdeur",1,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Links":"Rechts"),jo(Ze(["taatsdeur",1,"Frame"].join("")),"Bovenscharnier taats",["taatsdeur",1,"ScharnierBoven"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte")),v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links"),jo(Ze(["taatsdeur",1,"Frame"].join("")),"Onderscharnier taats",["taatsdeur",1,"ScharnierOnder"].join(""),pe(v(C,"breedte")),0,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links")):(ft(["taatsdeur",1,"Frame"].join("")),ln(["taatsdeur",1,"Glas"].join("")),ce(["taatsdeur",1,"Handgreep"].join("")),Tr(["taatsdeur",1,"ScharnierBoven"].join("")),Tr(["taatsdeur",1,"ScharnierOnder"].join("")))}function Di(){v(C,"deur_aantal")>=2&&P=="taatsdeur"?(sn("ALU-Taatsdeur_Frame",["taatsdeur",2,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,pe(Math.min(Math.max(v(C,"breedte"),v(T,"taatsDeurMinBreedte")),v(T,"taatsDeurMaxBreedte")))*.01-v(H,"offsetPositionX"),0,0),Cn("ALU-Taatsdeur_Frame",Ze([P,2,"Frame"].join("")),"ALU-Taatsdeur_Glas",["taatsdeur",2,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),ut("ALU-Taatsdeur_Frame",Ze(["taatsdeur",2,"Frame"].join("")),Se(),["taatsdeur",2,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,"Links"),jo(Ze(["taatsdeur",2,"Frame"].join("")),"Bovenscharnier taats",["taatsdeur",2,"ScharnierBoven"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte")),"Rechts"),jo(Ze(["taatsdeur",2,"Frame"].join("")),"Onderscharnier taats",["taatsdeur",2,"ScharnierOnder"].join(""),pe(v(C,"breedte")),0,"Rechts")):(ft(["taatsdeur",2,"Frame"].join("")),ln(["taatsdeur",2,"Glas"].join("")),ce(["taatsdeur",2,"Handgreep"].join("")),Tr(["taatsdeur",2,"ScharnierBoven"].join("")),Tr(["taatsdeur",2,"ScharnierOnder"].join("")))}function xo(){v(C,"deur_aantal")>=1&&P=="scharnierdeur"?(Bi("ALU-Kozijn",[P,1,"Kozijn"].join(""),(v(C,"zijpaneel_aantal_links")>0?1.7:0)+(v(C,"zijpaneel_aantal_rechts")>0?1.7:0)+v(C,"deur_aantal")*pe(v(C,"breedte")),20,300,pe(v(C,"hoogte")),20,300,(v(C,"zijpaneel_aantal_links")>0?-.017:0)-v(H,"offsetPositionX"),0),sn("ALU-Scharnierdeur",["scharnierdeur",1,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,0-v(H,"offsetPositionX"),0,0),Cn("ALU-Scharnierdeur",Ze(["scharnierdeur",1,"Frame"].join("")),"ALU-Scharnierdeur_Glas",["scharnierdeur",1,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),v(C,"deur_aantal")==1||v(C,"deur_aantal")>1&&v(C,"actievedeur")!="ACTIEVEDEUR_RECHTS"?ut("ALU-Scharnierdeur",Ze(["scharnierdeur",1,"Frame"].join("")),Se(),["scharnierdeur",1,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Links":"Rechts"):ce(["scharnierdeur",1,"Handgreep"].join("")),jo(Ze(["scharnierdeur",1,"Frame"].join("")),"Scharnier",["scharnierdeur",1,"ScharnierBoven"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte"))-20,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links"),jo(Ze(["scharnierdeur",1,"Frame"].join("")),"Scharnier",["scharnierdeur",1,"ScharnierMidden"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte"))/2,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links"),jo(Ze(["scharnierdeur",1,"Frame"].join("")),"Scharnier",["taatsdeur",1,"ScharnierOnder"].join(""),pe(v(C,"breedte")),20,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links")):(St(["scharnierdeur",1,"Kozijn"].join("")),ft(["scharnierdeur",1,"Frame"].join("")),ln(["scharnierdeur",1,"Glas"].join("")),ce(["scharnierdeur",1,"Handgreep"].join("")),Tr(["scharnierdeur",1,"ScharnierBoven"].join("")),Tr(["scharnierdeur",1,"ScharnierMidden"].join("")),Tr(["scharnierdeur",1,"ScharnierOnder"].join("")))}function Eo(){v(C,"deur_aantal")>=2&&P=="scharnierdeur"?(sn("ALU-Scharnierdeur",["scharnierdeur",2,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,pe(Math.min(Math.max(v(C,"breedte"),v(T,"scharnierDeurMinBreedte")),v(T,"scharnierDeurMaxBreedte")))*.01-v(H,"offsetPositionX"),0,0),Cn("ALU-Scharnierdeur",Ze(["scharnierdeur",2,"Frame"].join("")),"ALU-Scharnierdeur_Glas",["scharnierdeur",2,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),v(C,"deur_aantal")>1&&v(C,"actievedeur")=="ACTIEVEDEUR_RECHTS"?ut("ALU-Scharnierdeur",Ze(["scharnierdeur",2,"Frame"].join("")),Se(),["scharnierdeur",2,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,"Links"):ce(["scharnierdeur",2,"Handgreep"].join("")),jo(Ze(["scharnierdeur",2,"Frame"].join("")),"Scharnier",["scharnierdeur",2,"ScharnierBoven"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte"))-20,"Rechts"),jo(Ze(["scharnierdeur",2,"Frame"].join("")),"Scharnier",["scharnierdeur",2,"ScharnierMidden"].join(""),pe(v(C,"breedte")),pe(v(C,"hoogte"))/2,"Rechts"),jo(Ze(["scharnierdeur",2,"Frame"].join("")),"Scharnier",["taatsdeur",2,"ScharnierOnder"].join(""),pe(v(C,"breedte")),20,"Rechts")):(ft(["scharnierdeur",2,"Frame"].join("")),ln(["scharnierdeur",2,"Glas"].join("")),ce(["scharnierdeur",2,"Handgreep"].join("")),Tr(["scharnierdeur",2,"ScharnierBoven"].join("")),Tr(["scharnierdeur",2,"ScharnierMidden"].join("")),Tr(["scharnierdeur",2,"ScharnierOnder"].join("")))}function jn(){P=="schuifdeur"?wo("SchuifdeurBovenrail",se==!0?O("customFunctionBovenRailLengte")(C,T):v(H,"totalWidth")*100,pe(v(C,"hoogte")),se==!0?O("customFunctionSchuifdeurBovenrailCalculatePositieX")(C,T,H):0-v(H,"middlePositionX"),-.05,0):Md("SchuifdeurBovenrail")}function xl(){var Z=pe(v(T,"schuifDeurMaxDeuren")),X=1;1>Z&&(X=-X);for(let ue=1;X>=0?ue<=Z:ue>=Z;ue+=X)v(C,"deur_aantal")>=ue&&P=="schuifdeur"?(sn("ALU-Schuifdeur",["schuifdeur",ue,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,O("customFunctionSchuifdeurCalculatePositieX")(ue,C,T,H),se==!0?-.125:0,0),Cn("ALU-Schuifdeur",Ze(["schuifdeur",ue,"Frame"].join("")),"ALU-Schuifdeur_Glas",["schuifdeur",ue,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),ue<=2&&v(C,"deur_aantal")<=2||ue==1&&v(C,"deur_aantal")>2?ut("ALU-Schuifdeur",Ze(["schuifdeur",ue,"Frame"].join("")),Se(),["schuifdeur",ue,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,Sc(ue)):ce(["schuifdeur",ue,"Handgreep"].join(""))):(ft(["schuifdeur",ue,"Frame"].join("")),ln(["schuifdeur",ue,"Glas"].join("")),ce(["schuifdeur",ue,"Handgreep"].join("")))}function Sc(Z){return v(C,"deur_aantal")==1?v(C,"schuifrichting")=="SCHUIF_RECHTS"?"Links":"Rechts":v(C,"deur_aantal")==2?Z==2?"Links":"Rechts":"Links"}function wc(){P=="opdekdeur"?(Bi("Opdekkozijn",["opdekdeur",1,"Kozijn"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,0-v(H,"offsetPositionX"),0),sn("ALU-Opdekdeur",["opdekdeur",1,"Frame"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D,0-v(H,"offsetPositionX"),-.106,0),Cn("ALU-Opdekdeur",Ze(["opdekdeur",1,"Frame"].join("")),"ALU-Opdekdeur_Glas",["opdekdeur",1,"Glas"].join(""),pe(v(C,"breedte")),l,x,pe(v(C,"hoogte")),L,D),ut("ALU-Opdekdeur",Ze(["opdekdeur",1,"Frame"].join("")),Se(),["opdekdeur",1,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Links":"Rechts")):(St(["opdekdeur",1,"Kozijn"].join("")),ft(["opdekdeur",1,"Frame"].join("")),ln(["opdekdeur",1,"Glas"].join("")),ce(["opdekdeur",1,"Handgreep"].join("")))}function Vr(){if(P=="vouwwand"){Bi("ALU-Vouwwand lijst",["vouwwand",1,"Kozijn"].join(""),pe(v(C,"breedte"))*v(C,"deur_aantal"),20,600,pe(v(C,"hoogte")),20,300,0-v(H,"offsetPositionX"),0);var Z=pe(v(T,"vouwwandMaxPanelen")),X=1;1>Z&&(X=-X);for(let Oe=1;X>=0?Oe<=Z:Oe>=Z;Oe+=X)v(C,"deur_aantal")>=Oe&&P=="vouwwand"?(sn("ALU-Vouwwand deur",["vouwwand",Oe,"Frame"].join(""),(pe(v(C,"breedte"))*v(C,"deur_aantal")-2*4.5)/v(C,"deur_aantal"),l,x,v(C,"hoogte"),20,300,(Oe-1)*((pe(v(C,"breedte"))*v(C,"deur_aantal")-2*4.5)/v(C,"deur_aantal"))*.01-v(H,"offsetPositionX")+.045,0,0),Cn("ALU-Vouwwand deur",Ze(["vouwwand",Oe,"Frame"].join("")),"ALU-Vouwwand_Glas",["vouwwand",Oe,"Glas"].join(""),(pe(v(C,"breedte"))*v(C,"deur_aantal")-2*4.5)/v(C,"deur_aantal"),l,x,v(C,"hoogte"),20,300)):(ft(["vouwwand",Oe,"Frame"].join("")),ln(["vouwwand",Oe,"Glas"].join("")));v(C,"handgreep")=="HANDGREEP_KLINK_1"?ut("ALU-Vouwwand deur",Ze(["vouwwand",1,"Frame"].join("")),Se(),["vouwwand",1,"Handgreep"].join(""),pe(v(C,"breedte")),0,x,pe(v(C,"hoogte")),L,D,"Links"):ce(["vouwwand",1,"Handgreep"].join(""))}else{St(["vouwwand",1,"Kozijn"].join(""));var ue=pe(v(T,"vouwwandMaxPanelen")),ge=1;1>ue&&(ge=-ge);for(let Oe=1;ge>=0?Oe<=ue:Oe>=ue;Oe+=ge)ft(["vouwwand",Oe,"Frame"].join("")),ln(["vouwwand",Oe,"Glas"].join(""));ce(["vouwwand",1,"Handgreep"].join(""))}}function Ms(){var Z=pe(v(T,"maxZijpanelenLinks")),X=1;1>Z&&(X=-X);for(let ue=1;X>=0?ue<=Z:ue>=Z;ue+=X)if(v(C,"zijpaneel_aantal_links")>=ue&&["taatsdeur","scharnierdeur","schuifdeur"].indexOf(P)>-1){if(sn("ALU-Vaste wand",["ZijpaneelLinks",ue,"Frame"].join(""),pe(v(C,"zijpaneel_breedte_links")[ue-1]),10,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D,O("customFunctionTaatsdeurZijpaneelLinksCalculatePositieX")(ue,C,T,H),0,0),Cn("ALU-Vaste wand",Ze(["ZijpaneelLinks",ue,"Frame"].join("")),"ALU-Vaste wand_Glas",["ZijpaneelLinks",ue,"Glas"].join(""),pe(v(C,"zijpaneel_breedte_links")[ue-1]),10,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D),v(C,"roede_design_keuze")==!0){for(let ge=1;ge<=4;ge++)ur(["ZijpaneelLinks",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)ur(["ZijpaneelLinks",ue,"Staander",ge].join(""));for(let ge=1;ge<=4;ge++)O("checkShapeKeyVerplaatsingRoedeConfiguratie")(ge,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links",C,G)?Ba("Zijlicht",["ZijpaneelLinks",ue,"Ligger",ge].join(""),O("calcShapeKeyVerplaatsingLiggerRoedeConfiguratie")(ge,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Rechts":"Links",C,G,P),0,D,pe(v(C,"zijpaneel_breedte_links")[ue-1]),10,x,at(["ZijpaneelLinks",ue,"Frame"].join("")),0,zt(["ZijpaneelLinks",ue,"Frame"].join(""))):ur(["ZijpaneelLinks",ue,"Ligger",ge].join(""))}else for(let ge=1;ge<=4;ge++)v(C,"deur_aantal_ligger")>=ge?Ba("Zijlicht",["ZijpaneelLinks",ue,"Ligger",ge].join(""),v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_ligger_maten")[ge-1]:ge*(Math.min(Math.max(v(C,"hoogte"),v(T,"taatsDeurMinHoogteZijpaneel")),v(T,"taatsDeurMaxHoogteZijpaneel"))/(v(C,"deur_aantal_ligger")+1)),0,D,pe(v(C,"zijpaneel_breedte_links")[ue-1]),10,x,at(["ZijpaneelLinks",ue,"Frame"].join("")),0,zt(["ZijpaneelLinks",ue,"Frame"].join(""))):ur(["ZijpaneelLinks",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)v(C,"zijpaneel_aantal_staander")>=ge?El("Zijlicht",["ZijpaneelLinks",ue,"Staander",ge].join(""),v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_staander_maten_zijpaneel")[100+ge]:ge*(pe(v(C,"zijpaneel_breedte_links")[ue-1])/(v(C,"zijpaneel_aantal_staander")+1)),0,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D,at(["ZijpaneelLinks",ue,"Frame"].join("")),0,zt(["ZijpaneelLinks",ue,"Frame"].join(""))):Co(["ZijpaneelLinks",ue,"Staander",ge].join(""));v(C,"bovenlicht")==!0&&v(C,"bovenlicht_stijl_zijpaneel")==!0?Ba("Zijlicht",["ZijpaneelLinks",ue,"LiggerBovenlicht"].join(""),Math.min(Math.max(v(C,"hoogte"),v(T,"taatsDeurMinHoogteZijpaneel")),v(T,"taatsDeurMaxHoogteZijpaneel")),0,v(T,"taatsDeurMaxHoogteZijpaneel"),pe(v(C,"zijpaneel_breedte_links")[ue-1]),10,x,at(["ZijpaneelLinks",ue,"Frame"].join("")),0,zt(["ZijpaneelLinks",ue,"Frame"].join(""))):ur(["ZijpaneelLinks",ue,"LiggerBovenlicht"].join(""))}else{ft(["ZijpaneelLinks",ue,"Frame"].join("")),ln(["ZijpaneelLinks",ue,"Glas"].join(""));for(let ge=1;ge<=4;ge++)ur(["ZijpaneelLinks",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)Co(["ZijpaneelLinks",ue,"Staander",ge].join(""));ur(["ZijpaneelLinks",ue,"LiggerBovenlicht"].join(""))}}function Mc(){var Z=pe(v(T,"maxZijpanelenRechts")),X=1;1>Z&&(X=-X);for(let ue=1;X>=0?ue<=Z:ue>=Z;ue+=X)if(v(C,"zijpaneel_aantal_rechts")>=ue&&["taatsdeur","scharnierdeur","schuifdeur"].indexOf(P)>-1){if(sn("ALU-Vaste wand",["ZijpaneelRechts",ue,"Frame"].join(""),pe(v(C,"zijpaneel_breedte_rechts")[ue-1]),10,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D,O("customFunctionTaatsdeurZijpaneelRechtsCalculatePositieX")(ue,C,T,H),0,0),Cn("ALU-Vaste wand",Ze(["ZijpaneelRechts",ue,"Frame"].join("")),"ALU-Vaste wand_Glas",["ZijpaneelRechts",ue,"Glas"].join(""),pe(v(C,"zijpaneel_breedte_rechts")[ue-1]),10,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D),v(C,"roede_design_keuze")==!0){for(let ge=1;ge<=4;ge++)ur(["ZijpaneelRechts",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)ur(["ZijpaneelRechts",ue,"Staander",ge].join(""));for(let ge=1;ge<=4;ge++)O("checkShapeKeyVerplaatsingRoedeConfiguratie")(ge,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Links":"Rechts",C,G)?Ba("Zijlicht",["ZijpaneelRechts",ue,"Ligger",ge].join(""),O("calcShapeKeyVerplaatsingLiggerRoedeConfiguratie")(ge,v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Links":"Rechts",C,G,P),0,D,pe(v(C,"zijpaneel_breedte_rechts")[ue-1]),10,x,at(["ZijpaneelRechts",ue,"Frame"].join("")),0,zt(["ZijpaneelRechts",ue,"Frame"].join(""))):ur(["ZijpaneelRechts",ue,"Ligger",ge].join(""))}else for(let ge=1;ge<=4;ge++)v(C,"deur_aantal_ligger")>=ge?Ba("Zijlicht",["ZijpaneelRechts",ue,"Ligger",ge].join(""),v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_ligger_maten")[ge-1]:ge*(Math.min(Math.max(v(C,"hoogte"),v(T,"taatsDeurMinHoogteZijpaneel")),v(T,"taatsDeurMaxHoogteZijpaneel"))/(v(C,"deur_aantal_ligger")+1)),0,v(T,"taatsDeurMaxHoogteZijpaneel"),pe(v(C,"zijpaneel_breedte_rechts")[ue-1]),10,x,at(["ZijpaneelRechts",ue,"Frame"].join("")),0,zt(["ZijpaneelRechts",ue,"Frame"].join(""))):ur(["ZijpaneelRechts",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)v(C,"zijpaneel_aantal_staander")>=ge?El("Zijlicht",["ZijpaneelRechts",ue,"Staander",ge].join(""),v(C,"asymmetrisch")==!0?v(C,"asymmetrisch_staander_maten_zijpaneel")[200+ge]:ge*(pe(v(C,"zijpaneel_breedte_rechts")[ue-1])/(v(C,"zijpaneel_aantal_staander")+1)),0,x,v(C,"bovenlicht")==!0?v(C,"hoogte")+v(C,"hoogtebovenlicht"):v(C,"hoogte"),L,D,at(["ZijpaneelRechts",ue,"Frame"].join("")),0,zt(["ZijpaneelRechts",ue,"Frame"].join(""))):Co(["ZijpaneelRechts",ue,"Staander",ge].join(""));v(C,"bovenlicht")==!0&&v(C,"bovenlicht_stijl_zijpaneel")==!0?Ba("Zijlicht",["ZijpaneelRechts",ue,"LiggerBovenlicht"].join(""),Math.min(Math.max(v(C,"hoogte"),v(T,"taatsDeurMinHoogteZijpaneel")),v(T,"taatsDeurMaxHoogteZijpaneel")),0,D,pe(v(C,"zijpaneel_breedte_rechts")[ue-1]),10,x,at(["ZijpaneelRechts",ue,"Frame"].join("")),0,zt(["ZijpaneelRechts",ue,"Frame"].join(""))):ur(["ZijpaneelRechts",ue,"LiggerBovenlicht"].join(""))}else{ft(["ZijpaneelRechts",ue,"Frame"].join("")),ln(["ZijpaneelRechts",ue,"Glas"].join(""));for(let ge=1;ge<=4;ge++)ur(["ZijpaneelRechts",ue,"Ligger",ge].join(""));for(let ge=1;ge<=4;ge++)Co(["ZijpaneelRechts",ue,"Staander",ge].join(""));ur(["ZijpaneelRechts",ue,"LiggerBovenlicht"].join(""))}}function oa(){for(let Z=1;Z<=10;Z++)if(v(C,"deur_aantal")>=Z&&["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"].indexOf(P)>-1&&v(C,"roede_design_keuze")==!1)for(let X=1;X<=4;X++)v(C,"deur_aantal_staander")>=X?El(P,["Paneel",Z,"Staander",X].join(""),O("calcShapeKeyStaanderVerplaatsing")(C,Z,X),0,x,v(C,"hoogte"),L,D,at([P,Z,"Frame"].join("")),0,zt([P,Z,"Frame"].join(""))):Co(["Paneel",Z,"Staander",X].join(""));else for(let X=1;X<=4;X++)Co(["Paneel",Z,"Staander",X].join(""))}function Ed(){for(let Z=1;Z<=10;Z++)if(v(C,"deur_aantal")>=Z&&["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur","vouwwand"].indexOf(P)>-1&&v(C,"roede_design_keuze")==!1)for(let X=1;X<=4;X++)v(C,"deur_aantal_ligger")>=X?Ba(P,["Paneel",Z,"Ligger",X].join(""),v(C,"asymmetrisch")==!0?pe(v(C,"asymmetrisch_ligger_maten")[X-1]):X*(v(C,"hoogte")/(v(C,"deur_aantal_ligger")+1)),0,D,pe(Ce(Z))-O("calcLiggerBreedteX")(C,T,200,"Paneel"),10,x,at([P,Z,"Frame"].join(""))+O("calcLiggerXPositieOffsetFrame")(C,T),0,zt([P,Z,"Frame"].join(""))):ur(["Paneel",Z,"Ligger",X].join(""));else for(let X=1;X<=4;X++)ur(["Paneel",Z,"Ligger",X].join(""))}function Ts(){if(v(C,"deur_aantal")>=1&&v(C,"bovenlicht")==!0&&["taatsdeur","scharnierdeur"].indexOf(P)>-1)if(sn("ALU-Bovenlicht","BovenlichtFrame",pe(v(C,"breedte"))*v(C,"deur_aantal"),L,D,pe(v(C,"hoogtebovenlicht")),l,x,0-v(H,"offsetPositionX"),0,0+pe(v(C,"hoogte"))*.01),Cn("ALU-Bovenlicht",Ze("BovenlichtFrame"),"ALU-Bovenlicht_Glas","BovenlichtGlas",pe(v(C,"breedte"))*v(C,"deur_aantal"),L,D,pe(v(C,"hoogtebovenlicht")),l,x),v(C,"bovenlicht_verberg_tussenstijl")!=!0&&v(C,"deur_aantal")>1?El("Bovenlicht","BovenlichtStaander",pe(v(C,"breedte")),0,x,pe(v(C,"hoogtebovenlicht")),L,D,at("BovenlichtFrame"),0,zt("BovenlichtFrame")):Co("BovenlichtStaander"),v(C,"roede_design_keuze")==!0)for(let Z=1;Z<=10;Z++)if(v(C,"deur_aantal")>=Z)for(let X=1;X<=4;X++)O("checkShapeKeyVerplaatsingRoedeConfiguratie")(X,"Boven",C,G)?El("Bovenlicht",["Bovenlicht",Z,"Staander",X].join(""),O("calcShapeKeyVerplaatsingStaanderRoedeConfiguratie")(X,Z==2||v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS"?"Mirror":"-",C,G,P),0,x,pe(v(C,"hoogtebovenlicht")),L,D,r_("RoedeConfiguratie"+String(Z))-O("getRoedeConfiguratieBreedte")(C,"RoedeConfiguratie"+String(Z))/2*.01,0,0+pe(v(C,"hoogte"))*.01):Co(["Bovenlicht",Z,"Staander",X].join(""));else for(let X=1;X<=4;X++)Co(["Bovenlicht",Z,"Staander",X].join(""));else for(let Z=1;Z<=10;Z++)for(let X=1;X<=4;X++)Co(["Bovenlicht",Z,"Staander",X].join(""));else{ft("BovenlichtFrame"),ln("BovenlichtGlas"),Co("BovenlichtStaander");for(let Z=1;Z<=10;Z++)for(let X=1;X<=4;X++)Co(["Bovenlicht",Z,"Staander",X].join(""))}}function fi(){["vaste-wand","taatsdeur","scharnierdeur","schuifdeur","opdekdeur"].indexOf(P)>-1&&v(C,"roede_design_keuze")==!0?(wd("RoedeConfiguratie1",O("getRoedeConfiguratieBreedte")(C,"RoedeConfiguratie1"),O("getRoedeConfiguratieHoogte")(C),at([P,1,"Frame"].join(""))+dp(1),Cd(),Jt()),v(C,"deur_aantal")>=2?wd("RoedeConfiguratie2",O("getRoedeConfiguratieBreedte")(C,"RoedeConfiguratie2"),O("getRoedeConfiguratieHoogte")(C),at([P,2,"Frame"].join(""))+dp(2),Cd(),Jt()):Sd("RoedeConfiguratie2")):(Sd("RoedeConfiguratie1"),Sd("RoedeConfiguratie2"))}function De(Z){const X=s.retrieveObjectNames(Z);for(let ue=0;ue"}function Me(Z,X,ue){if(!Z)return;const ge=s.getObjectByName(Z);if(!ge)return;const Oe=ge.clone();Oe.name=s.generateUniqueObjectName(ge.name);const xe=Oe.resolveMultiMaterial();if(Oe!=xe[0])for(let Ee=0;Een.SceneUtils.getMaterialsByName(i,We.name).some(Je=>Je===We),xe=t.materialsCache,Ee=xe.get(X)||n.SceneUtils.getMaterialByName(i,X);if(Ee){for(let We=0;We-1&&v(C,"type_handgreep")=="aluminium"?(Re("Handgreep","Principled BSDF Color",0,0,0,"#0A0A0A"),ke(v(d,ge),"Handgreep",void 0)):v(C,"kleur_materiaal").indexOf("FINEER")>-1&&v(C,"type_handgreep")=="hout"?(v(C,"kleur_materiaal")=="FINEER_RM_21_NATURAL"&&Re("Fineer","RGB",0,0,0,"#A48F7A"),v(C,"kleur_materiaal")=="FINEER_RM_10_CHOCOLATE"&&Re("Fineer","RGB",0,0,0,"#442f29"),ke(v(d,ge),"Fineer",void 0)):ke(v(d,ge),"Poedercoat",void 0),j(v(d,ge),!0))}function dt(Z,X){Z&&typeof Z=="object"&&delete Z[X]}function ft(Z){v(f,Z)!=null&&(De(v(f,Z)),Bt(f,Z,null),dt(f,String(Z)+"_frameData"))}function yt(Z,X){switch(X){case"OBJECT":case"ANIMATION":case"MATERIAL":return Z;case"GROUP":return["GROUP",Z]}}function Ze(Z){return yt(v(f,Z),"OBJECT")}function Rn(Z,X){if(Z&&X){var ue=s.getObjectByName(Z);if(ue&&(ue=ue.resolveMultiMaterial()[0],ue.morphTargetDictionary&&X in ue.morphTargetDictionary)){var ge=ue.morphTargetDictionary[X];return ue.morphTargetInfluences[ge]}}return 0}function $t(Z,X){return Rn(v(f,Z),X)}function at(Z){return fe(yt(v(f,Z),"OBJECT"),!1,"position","x")}function zt(Z){return fe(yt(v(f,Z),"OBJECT"),!1,"position","z")}function Is(){return f}function sn(Z,X,ue,ge,Oe,xe,Ee,We,Je,$e,ht){De(v(f,X)),Bt(f,X,Me(Z)),Fe(v(f,X),!1,"position",[Je,$e,ht]),M(v(f,X),"paneel_breedte",(Math.min(Math.max(pe(ue),ge),Oe)-ge)/(Oe-ge)*1+0),M(v(f,X),"paneel_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),v(C,"hogeonderdorpel")==!0||P=="taatsdeur"?M(v(f,X),"hoge_onderdorpel",1):M(v(f,X),"hoge_onderdorpel",0),se==!0?M(v(f,X),"wandmontage",1):M(v(f,X),"wandmontage",0),se==!0?M(v(f,X),"bovenkoker",0):M(v(f,X),"bovenkoker",1),X=="scharnierdeur1Frame"?(v(C,"zijpaneel_aantal_links")==0?M(v(f,X),"kozijnstijl_links",1):M(v(f,X),"kozijnstijl_links",0),v(C,"zijpaneel_aantal_rechts")==0&&v(C,"deur_aantal")==1?M(v(f,X),"kozijnstijl_rechts",1):M(v(f,X),"kozijnstijl_rechts",0)):X=="scharnierdeur2Frame"?(M(v(f,X),"kozijnstijl_links",0),v(C,"zijpaneel_aantal_rechts")==0?M(v(f,X),"kozijnstijl_rechts",1):M(v(f,X),"kozijnstijl_rechts",0)):(M(v(f,X),"kozijnstijl_links",0),M(v(f,X),"kozijnstijl_rechts",0)),X=="opdekdeur1Frame"&&v(C,"draairichting")=="DRAAI_RECHTS"?(M(v(f,X),"slotstijl_links",1),M(v(f,X),"slotstijl_rechts",0)):(M(v(f,X),"slotstijl_links",0),M(v(f,X),"slotstijl_rechts",1)),X=="scharnierdeur1Frame"&&v(C,"handgreep")=="HANDGREEP_KLINK_1"&&v(C,"deur_aantal")>1?v(C,"actievedeur")=="ACTIEVEDEUR_RECHTS"?(M(v(f,X),"smalslot_links",0),M(v(f,X),"smalslot_rechts",0)):(M(v(f,X),"smalslot_links",0),M(v(f,X),"smalslot_rechts",1)):X=="scharnierdeur2Frame"&&v(C,"handgreep")=="HANDGREEP_KLINK_1"&&v(C,"deur_aantal")>1?v(C,"actievedeur")=="ACTIEVEDEUR_RECHTS"?(M(v(f,X),"smalslot_links",1),M(v(f,X),"smalslot_rechts",0)):(M(v(f,X),"smalslot_links",0),M(v(f,X),"smalslot_rechts",0)):X=="scharnierdeur1Frame"&&v(C,"handgreep")=="HANDGREEP_KLINK_1"&&v(C,"deur_aantal")==1?v(C,"draairichting")=="DRAAI_RECHTS"?(M(v(f,X),"smalslot_links",1),M(v(f,X),"smalslot_rechts",0)):(M(v(f,X),"smalslot_links",0),M(v(f,X),"smalslot_rechts",1)):X=="vouwwand1Frame"&&v(C,"handgreep")=="HANDGREEP_KLINK_1"?(M(v(f,X),"smalslot_links",1),M(v(f,X),"smalslot_rechts",0)):(M(v(f,X),"smalslot_links",0),M(v(f,X),"smalslot_rechts",0)),M(v(f,X),"bovenkoker",0),P=="vaste-wand"?(M(v(f,X),"staander_links",1),M(v(f,X),"staander_links_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0)):M(v(f,X),"staander_links_hoogte",0),X.indexOf("vaste-wand")>-1&&v(C,"verbergtussenstaanders")==!0?X.indexOf("1")>-1?(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",1),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0)):X.indexOf(v(C,"deur_aantal"))>-1?(M(v(f,X),"staander_rechts",1),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),M(v(f,X),"staander_links_hoogte",0)):(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",0)):X.indexOf("ZijpaneelLinks")>-1&&v(C,"verbergtussenstaanders")==!0?X.indexOf("1")>-1?(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",1),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0)):X.indexOf(v(C,"zijpaneel_aantal_links"))>-1?(M(v(f,X),"staander_rechts",1),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),M(v(f,X),"staander_links_hoogte",0)):(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",0)):X.indexOf("ZijpaneelRechts")>-1&&v(C,"verbergtussenstaanders")==!0?X.indexOf("1")>-1?(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",1),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0)):X.indexOf(v(C,"zijpaneel_aantal_rechts"))>-1?(M(v(f,X),"staander_rechts",1),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),M(v(f,X),"staander_links_hoogte",0)):(M(v(f,X),"staander_rechts",0),M(v(f,X),"staander_links",0),M(v(f,X),"staander_rechts_hoogte",0),M(v(f,X),"staander_links_hoogte",0)):(M(v(f,X),"staander_rechts",1),M(v(f,X),"staander_links",1),M(v(f,X),"staander_rechts_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),M(v(f,X),"staander_links_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0)),ke(v(f,X),on(),void 0),j(v(f,X),!0)}function ln(Z){v(h,Z)!=null&&(De(v(h,Z)),Bt(h,Z,null))}function hi(){return S("Glas","Metallic",0),S("Glas","IOR",1.45),S("Glas","Transmission",1),["GLAS_BRONS_MAT","GLAS_MAT","GLAS_GRIJS_MAT"].indexOf(v(C,"kleur_glas"))>-1?(S("Glas","Ruwheid",.6),S("Glas","Alpha",.9),S("Glas","Roughness",.45)):(S("Glas","Ruwheid",0),S("Glas","Alpha",.3),S("Glas","Roughness",0)),v(C,"kleur_glas")=="GLAS_BRONS"?Re("Glas","Principled BSDF Color",0,0,0,"#6A5C3A"):v(C,"kleur_glas")=="GLAS_GRIJS"?Re("Glas","Principled BSDF Color",0,0,0,"#585858"):v(C,"kleur_glas")=="GLAS_BRONS_MAT"?Re("Glas","Principled BSDF Color",0,0,0,"#7A6F5F"):v(C,"kleur_glas")=="GLAS_MAT"?Re("Glas","Principled BSDF Color",0,0,0,"#E5F6FB"):v(C,"kleur_glas")=="GLAS_GRIJS_MAT"?Re("Glas","Principled BSDF Color",0,0,0,"#777777"):Re("Glas","Principled BSDF Color",0,0,0,"#E5F6FB"),"Glas"}function Cn(Z,X,ue,ge,Oe,xe,Ee,We,Je,$e){De(v(h,ge)),Bt(h,ge,Me(ue)),Fe(v(h,ge),!1,"position",[fe(X,!1,"position","x")+(fe(ue,!1,"position","x")-fe(Z,!1,"position","x")),fe(X,!1,"position","y")+(fe(ue,!1,"position","y")-fe(Z,!1,"position","y")),fe(X,!1,"position","z")+(fe(ue,!1,"position","z")-fe(Z,!1,"position","z"))]),M(v(h,ge),"glas_breedte",(Math.min(Math.max(pe(Oe),xe),Ee)-xe)/(Ee-xe)*1+0),M(v(h,ge),"glas_hoogte",(Math.min(Math.max(pe(We),Je),$e)-Je)/($e-Je)*1+0),v(C,"hogeonderdorpel")==!0?M(v(h,ge),"hoge_onderdorpel",1):M(v(h,ge),"hoge_onderdorpel",0),se==!0?M(v(h,ge),"wandmontage",1):M(v(h,ge),"wandmontage",0),se==!0?M(v(h,ge),"bovenkoker",0):M(v(h,ge),"bovenkoker",1),M(v(h,ge),"bovenkoker",0),ge.indexOf("vaste-wand")>-1&&v(C,"verbergtussenstaanders")==!0||ge.indexOf("Zijpaneel")>-1&&v(C,"verbergtussenstaanders")==!0?M(v(h,ge),"glas_10mm",1):M(v(h,ge),"glas_10mm",0),ke(v(h,ge),hi(),void 0),j(v(h,ge),!0)}function et(Z,X,ue,ge,Oe){const xe=s.getMaterialEditableTextures(Z,!0).filter(function(ht){return ht.name==X});if(!xe.length)return;const Ee=n.SceneUtils.getMaterialsByName(i,Z);if(ue instanceof Promise)ue.then(function(ht){We(ht)},function(ht){});else if(typeof ue=="string")We(ue);else if(ue instanceof Object&&ue.source instanceof HTMLVideoElement)Je(ue.source);else if(ue instanceof HTMLCanvasElement)$e(ue);else return;function We(ht){const st=ht.search(/\.hdr$/)>0,tn=ht.search(/\.ktx2/)>0;let Bn=!1,Vn=!1;xe.forEach(function(yr){yr.isCompressedTexture&&(Bn=!0),yr.isVideoTexture&&(Vn=!0)});let _n;!st&&!tn&&!Bn&&!Vn?(_n=new n.ImageLoader,_n.setCrossOrigin("Anonymous")):tn?(_n=i.loader.ktx2Loader,_n.setCrossOrigin("Anonymous")):Bn||Vn?(_n=new n.TextureLoader,_n.setCrossOrigin("Anonymous")):(_n=new n.FileLoader,_n.setResponseType("arraybuffer")),_n.load(ht,function(yr){xe.forEach(function(ia){ia.dispose();let Mo;if(!st&&!tn&&!Bn&&!Vn)Mo=ia.clone(),Ee.forEach(function(Na){s.replaceMaterialEditableTexture(Na,ia,Mo),Na.needsUpdate=!0}),Mo.source=new n.Source(yr);else if(tn||Bn||Vn)Mo=yr,Ee.forEach(function(Na){Mo.flipY=!1,Mo.name=X,s.replaceMaterialEditableTexture(Na,ia,Mo),Na.needsUpdate=!0,Na.isMeshNodeMaterial&&Na.updateNodeGraph(!0)});else{const fx=new n.RGBELoader().parse(yr);Mo=ia.clone(),Ee.forEach(function(bN){s.replaceMaterialEditableTexture(bN,ia,Mo),bN.needsUpdate=!0}),Mo.source=new n.Source({data:fx.data,width:fx.width,height:fx.height}),Mo.magFilter=n.LinearFilter,Mo.minFilter=n.LinearFilter,Mo.generateMipmaps=!1,Mo.isDataTexture=!0}if(i.scene!==null&&i.scene.worldMaterial!==null){var dx=i.scene.worldMaterial;for(let Na in dx.nodeTextures)dx.nodeTextures[Na]==Mo&&i.updateEnvironment(dx)}}),Oe()})}function Je(ht){const st=new n.VideoTexture(ht);st.flipY=!1,st.name=X;let tn=!1;var Bn=n.SceneUtils.getMaterialsByName(i,Z);Bn.forEach(function(Vn){if(xe.forEach(function(_n){s.replaceMaterialEditableTexture(Vn,_n,st)}),Vn.needsUpdate=!0,Vn.isMeshNodeMaterial)if(n.engineVersionCmp("4.9.0",n.REVISION)>=0)Vn.updateNodeGraph(!0);else{const _n=Vn.nodeRGBArr,yr=Vn.nodeValue;Vn.updateNodeGraph(),Vn.nodeRGBArr=_n,Vn.nodeValue=yr}tn=!0}),tn&&(ht.readyState<1?s.bindListener(ht,"loadedmetadata",Oe):Oe())}function $e(ht){const st=new n.CanvasTexture(ht);st.flipY=!1,st.name=X;let tn=!1;var Bn=n.SceneUtils.getMaterialsByName(i,Z);Bn.forEach(function(Vn){xe.forEach(function(_n){s.replaceMaterialEditableTexture(Vn,_n,st)}),Vn.needsUpdate=!0,tn=!0}),tn&&(o&&(o.canvasTextures=o.canvasTextures||{},o.canvasTextures[st.image.id]=st),Oe())}}function on(){return S("Poedercoat","Metallic",0),S("Poedercoat","IOR",1.45),S("Poedercoat","Alpha",1),S("Poedercoat","Roughness",.2),S("Poedercoat","Transmission",0),S("Poedercoat","Ruwheid",.2),v(C,"kleur_materiaal")=="FINEER_RM_21_NATURAL"&&et("Fineer","TextureFineer",String(O("getBaseUrl")())+"/v3dApp/RMC_Natural.jpg",!0,function(){}),v(C,"kleur_materiaal")=="FINEER_RM_10_CHOCOLATE"&&et("Fineer","TextureFineer",String(O("getBaseUrl")())+"/v3dApp/RMC_Chocolate.jpeg",!0,function(){}),S("Fineer","Roughness",.6),v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_ZWART"?Re("Poedercoat","Principled BSDF Color",0,0,0,"#0A0A0A"):v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_BEIGE"?Re("Poedercoat","Principled BSDF Color",0,0,0,"#CAC4B0"):v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_ANTRACIET"?Re("Poedercoat","Principled BSDF Color",0,0,0,"#2B2B2A"):v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_BRONS"?Re("Poedercoat","Principled BSDF Color",0,0,0,"#5F5B3D"):v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_GOLD"?Re("Poedercoat","Principled BSDF Color",0,0,0,"#B7A76D"):v(C,"kleur_materiaal")=="KLEUR_ALUMINIUM_RAL"?Re("Poedercoat","Principled BSDF Color",0,0,0,O("customFunctionRALtoHEX")(v(C,"kleur_ral"))):Re("Poedercoat","Principled BSDF Color",0,0,0,"#0A0A0A"),v(C,"kleur_materiaal")=="FINEER_RM_21_NATURAL"&&Re("Fineer","RGB",0,0,0,"#A48F7A"),v(C,"kleur_materiaal")=="FINEER_RM_10_CHOCOLATE"&&Re("Fineer","RGB",0,0,0,"#442f29"),v(C,"kleur_materiaal")=="FINEER_RM_21_NATURAL"||v(C,"kleur_materiaal")=="FINEER_RM_10_CHOCOLATE"?"Fineer":"Poedercoat"}function ur(Z){v(p,Z)!=null&&(De(v(p,Z)),Bt(p,Z,null))}function Ba(Z,X,ue,ge,Oe,xe,Ee,We,Je,$e,ht){De(v(p,X)),Bt(p,X,Me(t_())),P=="opdekdeur"?Fe(v(p,X),!1,"position",[Je,$e+-.106,ht]):se==!0?Fe(v(p,X),!1,"position",[Je,$e+-.125,ht]):Fe(v(p,X),!1,"position",[Je,$e,ht]),M(v(p,X),"roede_verplaatsing",(Math.min(Math.max(pe(ue),ge),Oe)-ge)/(Oe-ge)*1+0),M(v(p,X),"roede_breedte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),P=="vaste-wand"?M(v(p,_),"roede_vaste_wand",1):M(v(p,_),"roede_vaste_wand",0),P=="taatsdeur"?M(v(p,_),"roede_taatsdeur",1):M(v(p,_),"roede_taatsdeur",0),P=="scharnierdeur"?M(v(p,_),"roede_scharnierdeur",1):M(v(p,_),"roede_scharnierdeur",0),P=="schuifdeur"?M(v(p,_),"roede_schuifdeur",1):M(v(p,_),"roede_schuifdeur",0),P=="opdekdeur"?M(v(p,_),"roede_opdekdeur",1):M(v(p,_),"roede_opdekdeur",0),M(v(p,_),"roede_hout",0),ke(v(p,X),on(),void 0),j(v(p,X),!0)}function lx(Z){return yt(v(m,Z),"OBJECT")}function Rs(Z){return v(w,Z)}function Co(Z){v(m,Z)!=null&&(De(v(m,Z)),Bt(m,Z,null),Bt(w,Z,null))}function up(Z,X){return X=Math.pow(10,X),Math.round(Z*X)/X}function El(Z,X,ue,ge,Oe,xe,Ee,We,Je,$e,ht){De(v(m,X)),Bt(m,X,Me(n_())),P=="opdekdeur"?Fe(v(m,X),!1,"position",[Je+.035,$e+-.106,ht]):se==!0?Fe(v(m,X),!1,"position",[Je+0,$e+-.125,ht]):Fe(v(m,X),!1,"position",[Je,$e,ht]),M(v(m,X),"roede_verplaatsing",(Math.min(Math.max(pe(ue),ge),Oe)-ge)/(Oe-ge)*1+0),M(v(m,X),"roede_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),Z=="Bovenlicht"||Z=="Zijlicht"?(M(v(m,X),"roede_vaste_wand",0),M(v(m,X),"roede_taatsdeur",0),M(v(m,X),"roede_scharnierdeur",0),M(v(m,X),"roede_schuifdeur",0),M(v(m,X),"roede_opdekdeur",0)):(P=="vaste-wand"?M(v(m,X),"roede_vaste_wand",1):M(v(m,X),"roede_vaste_wand",0),P=="taatsdeur"?M(v(m,X),"roede_taatsdeur",1):M(v(m,X),"roede_taatsdeur",0),P=="scharnierdeur"?M(v(m,X),"roede_scharnierdeur",1):M(v(m,X),"roede_scharnierdeur",0),P=="schuifdeur"?M(v(m,X),"roede_schuifdeur",1):M(v(m,X),"roede_schuifdeur",0),P=="opdekdeur"?M(v(m,X),"roede_opdekdeur",1):M(v(m,X),"roede_opdekdeur",0),se==!0?M(v(m,X),"wandmontage",1):M(v(m,X),"wandmontage",0),v(C,"hogeonderdorpel")==!0?M(v(m,X),"hoge_onderdorpel",1):M(v(m,X),"hoge_onderdorpel",0)),M(v(m,X),"roede_hout",0),ke(v(m,X),on(),void 0),j(v(m,X),!0),De(v(w,X)),Bt(w,X,me(["shapeKeyVerplaatsing","framePositionX","staanderPositionX"],[up(ue,2),up(fe(v(m,X),!1,"position","x"),2),up(fe(v(m,X),!1,"position","x")+ue*.01,2)]))}function dp(Z){return O("calcRoedeConfiguratiePositieOffsetX")(C,P,Z)}function t_(){return P=="vouwwand"?"ALU-Vouwwand roede":v(C,"typeroede")=="T_ROEDE"?"ALU-T-roede liggend":(v(C,"typeroede")=="PLATTE_ROEDE","ALU-S30 - Striproede liggend")}function cx(Z){return yt(v(g,Z),"OBJECT")}function Cd(){return O("getRoedeConfiguratiePositieY")(C,P)}function ux(){return g}function n_(){return v(C,"typeroede")=="T_ROEDE"?"ALU-T-roede staand":(v(C,"typeroede")=="PLATTE_ROEDE","ALU-S30 - Striproede staand")}function Jt(){return O("getRoedeConfiguratiePositieZ")(P)}function Sd(Z){v(g,Z)!=null&&(De(v(g,Z)),Bt(g,Z,null))}function fp(Z){return G&&typeof G=="object"&&G.hasOwnProperty(v(C,"roede_configuratie"))?v(v(G,v(C,"roede_configuratie")),Z):{}}function r_(Z){return fe(yt(v(g,Z),"OBJECT"),!1,"position","x")}function pi(){return v(C,"roede_configuratie").indexOf("RV")>-1?yt(v(C,"roede_configuratie"),"OBJECT"):""}function wd(Z,X,ue,ge,Oe,xe){De(v(g,Z)),Bt(g,Z,Me(pi())),Fe(v(g,Z),!1,"position",[ge,Oe,xe]),(Z.indexOf("2")!=-1||v(C,"deur_aantal")==1&&v(C,"draairichting")=="DRAAI_RECHTS")&&Fe(v(g,Z),!1,"scale",[fe(v(g,Z),!1,"scale","x")*-1,"",""]),M(v(g,Z),"roede_breedte",(Math.min(Math.max(pe(X),50),150)-50)/100*-1+1),M(v(g,Z),"roede_hoogte",(Math.min(Math.max(pe(ue),150),300)-150)/150*-1+1),M(v(g,Z),"roede_hoogte_correctie",(Math.min(Math.max(pe(ue),150),300)-150)/150*-1+1),M(v(g,Z),"roede_correctie",(Math.min(Math.max(pe(X),50),150)-50)/100*-1+1>=(Math.min(Math.max(pe(ue),150),300)-150)/150*-1+1?(Math.min(Math.max(pe(X),50),150)-50)/100*-1+1:(Math.min(Math.max(pe(ue),150),300)-150)/150*-1+1),ke(v(g,Z),on(),void 0),j(v(g,Z),!0)}function Tr(Z){v(A,Z)!=null&&(De(v(A,Z)),Bt(A,Z,null))}function jo(Z,X,ue,ge,Oe,xe){De(v(A,ue)),Bt(A,ue,Me(X)),P=="taatsdeur"?Fe(v(A,ue),!1,"position",[xe=="Links"?fe(Z,!1,"position","x")+.1:ge*.01+(fe(Z,!1,"position","x")-.1),0,Oe*.01]):Fe(v(A,ue),!1,"position",[xe=="Links"?fe(Z,!1,"position","x")+.02:ge*.01+(fe(Z,!1,"position","x")-.02),0,Oe*.01]),xe=="Rechts"?M(v(A,ue),"scharnier_mirror",1):M(v(A,ue),"scharnier_mirror",0),v(C,"kleur_materiaal").indexOf("FINEER")>-1&&v(C,"type_handgreep")=="aluminium"?(Re("Handgreep","Principled BSDF Color",0,0,0,"#0A0A0A"),ke(v(A,ue),"Handgreep",void 0)):v(C,"kleur_materiaal").indexOf("FINEER")>-1&&v(C,"type_handgreep")=="hout"?(v(C,"kleur_materiaal")=="FINEER_RM_21_NATURAL"&&(Re("Fineer","RGB",0,0,0,"#DDC5A1"),ke(v(A,ue),"Fineer",void 0)),v(C,"kleur_materiaal")=="FINEER_RM_10_CHOCOLATE"&&(Re("Fineer","RGB",0,0,0,"#422A23"),ke(v(A,ue),"Fineer",void 0))):ke(v(A,ue),on(),void 0),j(v(A,ue),!0)}function Ln(Z){v(y,Z)!=null&&(De(yt(v(y,Z),"OBJECT")),dt(y,Z)),De(Z),De(String(Z)+"_StaandeLijnLinks"),De(String(Z)+"_StaandeLijnRechts"),De(String(Z)+"_HorizontaleLijn"),De(String(Z)+"_Tekstvak"),De(String(Z)+"_Tekst"),De(String(Z)+"_TekstGespiegeld"),De(String(Z)+"_LiggendeLijnBoven"),De(String(Z)+"_LiggendeLijnOnder"),De(String(Z)+"_VerticaleLijn")}function So(Z,X,ue,ge,Oe,xe,Ee,We,Je){Oe=="Horizontaal"&&(De(String(Z)+"_StaandeLijnLinks"),O("createLine")(String(Z)+"_StaandeLijnLinks","#0A0A0A",ue,.101,ge+(Ee-.05),ue,.101,ge+Ee+.05),De(String(Z)+"_StaandeLijnRechts"),O("createLine")(String(Z)+"_StaandeLijnRechts","#0A0A0A",ue+We,.101,ge+(Ee-.05),ue+We,.101,ge+Ee+.05),De(String(Z)+"_HorizontaleLijn"),O("createLine")(String(Z)+"_HorizontaleLijn","#0A0A0A",ue,.101,ge+Ee,ue+We,.101,ge+Ee),De(String(Z)+"_Tekst"),O("createDimensionText")(String(Z)+"_Tekst",ue+We/2,.105,ge+Ee,R,O("formatDecimals")(X),.1,.001,"#ffffff",!1)),Oe=="Verticaal"&&(De(String(Z)+"_LiggendeLijnBoven"),O("createLine")(String(Z)+"_LiggendeLijnBoven","#0A0A0A",ue+(xe-.05),.101,ge+Ee+Je,ue+xe+.05,.101,ge+Ee+Je),De(String(Z)+"_LiggendeLijnOnder"),O("createLine")(String(Z)+"_LiggendeLijnOnder","#0A0A0A",ue+(xe-.05),.101,ge+Ee,ue+xe+.05,.101,ge+Ee),De(String(Z)+"_VerticaleLijn"),O("createLine")(String(Z)+"_VerticaleLijn","#0A0A0A",ue+xe,.101,ge+Ee,ue+xe,.101,ge+Ee+Je),De(String(Z)+"_Tekst"),O("createDimensionText")(String(Z)+"_Tekst",ue+xe,.105,ge+Ee+Je/2+0,R,O("formatDecimals")(X),.1,.001,"#ffffff",!1)),Oe=="Maatpunt links/rechts"&&(De(String(Z)+"_HorizontaleLijn"),O("createLine")(String(Z)+"_HorizontaleLijn","#0A0A0A",ue+xe,.101,ge+Ee,ue+We,.101,ge+Ee),De(String(Z)+"_Tekst"),O("createDimensionText")(String(Z)+"_Tekst",ue+xe,.105,ge+Ee,R,O("formatDecimals")(X),.1,.001,"#ffffff",!1)),Oe=="Maatpunt staander"&&(De(String(Z)+"_VerticaleLijn"),O("createLine")(String(Z)+"_VerticaleLijn","#0A0A0A",ue+xe,.101,ge+Ee,ue+xe,.101,ge+0),De(String(Z)+"_Tekst"),O("createDimensionText")(String(Z)+"_Tekst",ue+xe,.105,ge+Ee,R,O("formatDecimals")(X),.1,.001,"#ffffff",!1))}function St(Z){v(b,Z)!=null&&(De(v(b,Z)),Bt(b,Z,null),dt(b,String(Z)+"_kozijnData"))}function Bi(Z,X,ue,ge,Oe,xe,Ee,We,Je,$e){De(v(b,X)),Bt(b,X,Me(Z)),Fe(v(b,X),!1,"position",[Je,"",$e]),M(v(b,X),"kozijn_breedte",(Math.min(Math.max(pe(ue),ge),Oe)-ge)/(Oe-ge)*1+0),M(v(b,X),"kozijn_hoogte",(Math.min(Math.max(pe(xe),Ee),We)-Ee)/(We-Ee)*1+0),X!=["opdekdeur",1,"Kozijn"].join("")?ke(v(b,X),on(),void 0):ke(v(b,X),"RAL9010",void 0),j(v(b,X),!0)}function Md(Z){v(E,Z)!=null&&(De(v(E,Z)),Bt(E,Z,null))}function wo(Z,X,ue,ge,Oe,xe){De(v(E,Z)),Bt(E,Z,Me(co())),Fe(v(E,Z),!1,"position",[ge,Oe,xe]),M(v(E,Z),"rail_breedte",(Math.min(Math.max(pe(X),20),600)-20)/580*1+0),M(v(E,Z),"rail_hoogte",(Math.min(Math.max(pe(ue),20),300)-20)/280*1+0),ke(v(E,Z),on(),void 0),j(v(E,Z),!0)}function co(){return se==!0?"ALU-Wandrail":"ALU-Bovenkoker-rail"}l=20,x=150,L=20,D=300,ee=.08,re=32,Q=32,R=String(O("getBaseUrl")())+"/fonts/Satoshi-Bold.woff",u=O("getMakeScreenshot")(),W("change","configJSON",!0,function(Z){I()}),W("change","triggerRenderImage",!0,function(Z){console.log("triggerRenderImage"),I()}),F(.1,function(){ae("div","puzzleLoaded","TO",["BODY"],!0),ne("className","puzzleLoaded","puzzleLoaded",!0),ne("id","puzzleLoaded","puzzleLoaded",!0),oe("KEYBOARD_CONTROLS","Camera",!1)}),j(q(["ALL_OBJECTS"],"ALL","null",void 0,!1),!1),c=!1,c||J(),V("MOBILE")||O("getFullscreenTemplate")()?Y(2):Y(1),O("setClientDetails")(me(["Mobiel device","WebGL 2.0","WebGL","Native screen scale","Touch","GPU Vendor","GPU Model","Retina Display","HDR"],[V("MOBILE"),V("WEBGL2"),V("WEBGL"),window.devicePixelRatio,V("TOUCH"),le("VENDOR"),le("MODEL"),V("RETINA"),V("HDR")])),V("MOBILE"),u=O("getMakeScreenshot")(),u!=!0&&(ne("className",String(U("className",["CONTAINER"],!0))+" rounded-lg lg:rounded-xl h-72 h-full max-h-screen",["CONTAINER"],!0),W("click","btnCamera",!0,function(Z){v(H,"middlePositionZ")>0&&(fe("Camera",!1,"position","y")<=0,te([0,fe("Camera",!1,"position","y")<=0?5.5:-7,v(H,"middlePositionZInclDimensions")],[0,0,v(H,"middlePositionZInclDimensions")],2,function(){fe("Camera",!1,"position","y")>=0?Ne():Ie()},0),we(fe("Camera",!1,"position","y")<=0?re:Q,fe("Camera",!1,"position","y")<=0?Q:re,2,"Linear","In",0,!1,"{!jb%6bg/AG3VA6~(SMX",function(){oe("FIELD_OF_VIEW","Camera",t.animateParamUpdate||0)},function(){}))})),ct("Camera",.05),d=[],f=[],h=[],p=[],m=[],w=[],g=[],A=[],y=[],b=[],E=[]},o.disposeListeners=function(){t&&(t.eventListeners.forEach(({target:i,type:a,listener:s,optionsOrUseCapture:l})=>{i.removeEventListener(a,s,l)}),t.eventListeners.length=0)},o.disposeHTMLElements=function(){t&&(t.htmlElements.forEach(i=>{i.remove()}),t.htmlElements.clear())},o.disposeMaterialsCache=function(){if(t){for(const i of t.materialsCache.values())i.dispose();t.materialsCache.clear()}},o.dispose=function(){o.disposeListeners(),o.disposeHTMLElements(),o.disposeMaterialsCache(),t=null,n[Symbol.toStringTag]!=="Module"&&(delete n.PL,delete n.puzzles)},o}function f3e(n,e,t,r){let o=0,i=0,a=0,s=null,l=(n==null?void 0:n.breedte)||0,c=(n==null?void 0:n.deur_aantal)||1,u=(n==null?void 0:n.zijpaneel_aantal_links)||0,d=(n==null?void 0:n.zijpaneel_aantal_rechts)||0,f=(n==null?void 0:n.type)==="schuifdeur"&&(n==null?void 0:n.zijpaneel_aantal_links)===0&&(n==null?void 0:n.zijpaneel_aantal_rechts)===0&&(n==null?void 0:n.verberg_rail_in_wand)!==!0;if(r==="Rechts"){switch(o=t?t[0]*1e3:0,o+=l*10,e){case"taatsdeur":o-=Ve.taatsDeurOffsetMmHandgreep,o-=Ve.taatsDeurSpelingMm;break;case"scharnierdeur":(n==null?void 0:n.handgreep)==="HANDGREEP_KLINK_1"?o-=Ve.scharnierDeurProfielSlotstijl:o-=Ve.scharnierDeurOffsetMmHandgreep,o-=Ve.scharnierDeurSpelingMm,c==1&&d===0&&(o-=Ve.scharnierDeurKozijnBreedteMm);break;case"schuifdeur":o-=Ve.schuifDeurOffsetMmHandgreep;break;case"opdekdeur":o-=Ve.opdekDeurOffsetMmHandgreep;break}(n==null?void 0:n.handgreep)==="HANDGREEP_KOKER_VOLLEDIG"&&(o-=Ve.taatsDeurHandgreepProfiellengteOffset)}if(r==="Links"){switch(o=t?t[0]*1e3:0,e){case"taatsdeur":o+=Ve.taatsDeurOffsetMmHandgreep,o+=Ve.taatsDeurSpelingMm;break;case"scharnierdeur":(n==null?void 0:n.handgreep)==="HANDGREEP_KLINK_1"?o+=Ve.scharnierDeurProfielSlotstijl:o+=Ve.scharnierDeurOffsetMmHandgreep,o+=Ve.scharnierDeurSpelingMm,c==1&&u==0&&(o+=Ve.scharnierDeurKozijnBreedteMm);break;case"schuifdeur":o+=Ve.schuifDeurOffsetMmHandgreep;break;case"opdekdeur":o+=Ve.opdekDeurOffsetMmHandgreep;break;case"vouwwand":o+=Ve.vouwwandOffsetMmHandgreep;break}(n==null?void 0:n.handgreep)==="HANDGREEP_KOKER_VOLLEDIG"&&(o+=Ve.taatsDeurHandgreepProfiellengteOffset)}return f&&(i=-125),e==="opdekdeur"&&(i=-125),a=1050,(n==null?void 0:n.handgreep)==="HANDGREEP_KOKER_VOLLEDIG"&&(a=0),(n==null?void 0:n.handgreep)==="FINEER_HANDGREEP_HOEKGREEP_1050"&&(a=10),(n==null?void 0:n.handgreep)==="FINEER_HANDGREEP_HOEKGREEP_1200"&&(a=10),s={x:o*.001,y:i*.001,z:a*.001},s}const h3e=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(n,e,...t){if(typeof e=="string"&&e.match(/\.(gltf|bin|png|jpg|jpeg|hdr|ktx2|xz|hdr)(\?|$)/i)){const r=e.includes("?")?"&":"?";e=`${e}${r}v=mlaxicsg`}return h3e.call(this,n,e,...t)};const p3e=window.fetch;window.fetch=function(n,e){if(typeof n=="string"&&n.match(/\.(gltf|bin|png|jpg|jpeg|hdr|ktx2|xz|hdr)(\?|$)/i)){const t=n.includes("?")?"&":"?";n=`${n}${t}v=mlaxicsg`}return p3e.call(this,n,e)};const vN={_promise:null,_font:null,init(n,e){return this._promise?this._promise:(this._promise=new Promise((t,r)=>{i2((n.endsWith("/")?n:n+"/")+"opentype.js",()=>{const o=new u3;o.setCrossOrigin("Anonymous"),o.load(e,i=>{this._font=new h3(i),t(this._font)},void 0,i=>r(i))},()=>r(new Error("opentype.js niet gevonden")))}),this._promise)},get(){return this._font?Promise.resolve(this._font):this._promise?this._promise:Promise.reject(new Error("GlobalFont.init() nog niet aangeroepen"))}};async function m3e({containerId:n,fsButtonId:e=null,sceneURL:t,baseUrl:r,apiUrl:o,deviceUuid:i,fullScreen:a,fullScreenTemplate:s,fontUrl:l=null}){var m;if(na.enabled=!0,l)try{await vN.init(r,l)}catch(g){console.warn("Font preload failed:",g)}const c=null;let u=null;u=d3e(u3e),await((m=u==null?void 0:u.loadPhysics)==null?void 0:m.call(u));let d={useFullscreen:!0};u&&(d=u.execInitPuzzles({container:n}).initOptions),t=d.useCompAssets?`${t}.xz`:t;const f=g3e(n,d),h=v3e(n,d,f,c,r,a,s,o),p=g=>{hr.doLog(o+"/api/ud",{event:"First render complete",loadingTime:g.target._loadingTime??"?",deviceUuid:i,clientDetails:h.clientDetails?h.clientDetails:{}}),h.removeEventListener("afterFirstRender",p)};return h.addEventListener("afterFirstRender",p),d.preloaderStartCb&&d.preloaderStartCb(),h.loadScene(t,()=>{h.enableControls(),h.run(),u&&u.init(h,d),y3e(h)},null,()=>{console.log(`Can't load the scene ${t}`)}),{app:h,PL:u}}function g3e(n,e,t){return e.useCustomPreloader?_3e(e.preloaderProgressCb,e.preloaderEndCb):new pN({container:n})}function _3e(n,e){function t(){Cc.call(this)}return t.prototype=Object.assign(Object.create(Cc.prototype),{onUpdate:function(r){Cc.prototype.onUpdate.call(this,r),n&&n(r)},onFinish:function(){Cc.prototype.onFinish.call(this),e&&e()}}),new t}function v3e(n,e,t,r,o,i,a,s){var u;const l={};e.useBkgTransp&&(l.alpha=!0),l.powerPreference="high-performance";const c=new fN(n,l,t);return e.useBkgTransp&&(c.clearBkgOnLoad=!0,c.renderer&&c.renderer.setClearColor(0,0)),c.baseUrl=o,c.apiUrl=s,c.fullScreen=i,c.fullScreenTemplate=a,o=o.endsWith("/")?o:o+"/",(u=c.loader)!=null&&u.ktx2Loader&&c.loader.ktx2Loader.setTranscoderPath(o),c.setFrameRateDivider(4),c.ExternalInterface={},c.configJSON_Data=null,c.configJSON_Type=null,A3e(c),c}function A3e(n){n.ExternalInterface.setClientDetails=function(e){n.clientDetails=e},n.ExternalInterface.setData=function(e,t){n.configJSON_Data=e,n.configJSON_Type=t},n.ExternalInterface.getBaseUrl=function(){return n.baseUrl},n.ExternalInterface.getApiUrl=function(){return n.apiUrl},n.ExternalInterface.getMaatvoeringScreenshot=function(){return n.fullScreen&&!n.fullScreenTemplate},n.ExternalInterface.getMakeScreenshot=function(){return n.fullScreen||n.fullScreenTemplate},n.ExternalInterface.getFullscreenTemplate=function(){return n.fullScreenTemplate},n.ExternalInterface.checkSchuifdeurVoorWand=function(e){return!e||typeof e!="object"?!1:(e==null?void 0:e.type)==="schuifdeur"&&(e==null?void 0:e.zijpaneel_aantal_links)===0&&(e==null?void 0:e.zijpaneel_aantal_rechts)===0&&(e==null?void 0:e.verberg_rail_in_wand)!==!0},n.ExternalInterface.getHandgreepPosition=function(e,t){return f3e(n.configJSON_Data,n.configJSON_Type,e,t)},n.ExternalInterface.getObjectData=function(e){return n.scene.getObjectByName(e)??null},n.ExternalInterface.formatDecimals=function(e){let t=parseFloat(e);return isNaN(t)?e:Number.isInteger(t)?t.toString():t.toFixed(1)},n.ExternalInterface.calcShapeKeyStaanderVerplaatsing=function(e,t){},n.ExternalInterface.customFunctionTaatsdeurZijpaneelRechtsCalculatePositieX=function(e,t,r,o){let i=0-parseFloat(o.offsetPositionX),a=parseInt(t.deur_aantal),s=parseFloat(t.breedte);switch(i+=a*s*.01,e){case 2:i+=parseFloat(t.zijpaneel_breedte_rechts[0])*.01;break;case 3:i+=(parseFloat(t.zijpaneel_breedte_rechts[0])+parseFloat(t.zijpaneel_breedte_rechts[1]))*.01;break;case 4:i+=(parseFloat(t.zijpaneel_breedte_rechts[0])+parseFloat(t.zijpaneel_breedte_rechts[1])+parseFloat(t.zijpaneel_breedte_rechts[2]))*.01;break}return i},n.ExternalInterface.customFunctionTaatsdeurZijpaneelLinksCalculatePositieX=function(e,t,r,o){let i=0-parseFloat(o.offsetPositionX),a=n.ExternalInterface.clamp(parseInt(t.zijpaneel_aantal_links),parseInt(0),parseInt(r.maxZijpanelenLinks));for(let s=e;s<=a;s++)i-=parseFloat(t.zijpaneel_breedte_links[s-1])*.01;return i},n.ExternalInterface.customFunctionVasteWandCalculatePositieX=function(e,t,r,o){let i=0,a=Array();a[1]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[2]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[3]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[4]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[5]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[6]=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),t.deurbreedtevariabel&&(a[1]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[0]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[2]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[1]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[3]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[2]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[4]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[3]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[5]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[4]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)),a[6]=n.ExternalInterface.clamp(parseFloat(t.variabeledeurbreedte_maten[5]),parseFloat(r.vasteWandMinBreedte),parseFloat(r.vasteWandMaxBreedte)));let s=n.ExternalInterface.clamp(parseInt(t.deur_aantal),parseInt(1),parseInt(r.vasteWandMaxPanelen));for(let l=e;l<=s;l++)i-=a[l]*.01;return i+=parseFloat(o.offsetPositionX),i},n.ExternalInterface.customFunctionSchuifdeurCalculatePositieX=function(e,t,r,o){let i=0;return i=n.ExternalInterface.clamp(parseFloat(t.breedte),parseFloat(r.schuifDeurMinBreedte),parseFloat(r.schuifDeurMaxBreedte))*.01*(e-1),i-=parseFloat(o.offsetPositionX),i},n.ExternalInterface.customFunctionSchuifdeurBovenrailCalculatePositieX=function(e,t,r){let o=0,i=parseInt(e.deur_aantal??1),a=parseInt(e.breedte??0),s=e.schuifrichting??"",l=(e==null?void 0:e.verberg_rail_in_wand)??!1;return i==1&&!l&&(s=="SCHUIF_RECHTS"?o=0:o-=a),i==2&&!l&&(o-=a),o=o*.01,o-=parseFloat(r.offsetPositionX),o},n.ExternalInterface.calcLiggerXPositieOffsetFrame=function(e,t){let r=0,o=(e==null?void 0:e.typeroede)??"";if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"vaste-wand":o=="T_ROEDE"&&(r=t.vasteWandOffsetMmLiggerTRoede),o=="PLATTE_ROEDE"&&(r=t.vasteWandOffsetMmLiggerStripRoede);break;case"taatsdeur":o=="T_ROEDE"&&(r=t.taatsDeurOffsetMmLiggerTRoede),o=="PLATTE_ROEDE"&&(r=t.taatsDeurOffsetMmLiggerStripRoede);break;case"scharnierdeur":o=="T_ROEDE"&&(r=t.scharnierDeurOffsetMmLiggerTRoede),o=="PLATTE_ROEDE"&&(r=t.scharnierDeurOffsetMmLiggerStripRoede);break;case"schuifdeur":o=="T_ROEDE"&&(r=t.schuifDeurOffsetMmLiggerTRoede),o=="PLATTE_ROEDE"&&(r=t.schuifDeurOffsetMmLiggerStripRoede);break;case"opdekdeur":o=="T_ROEDE"&&(r=t.opdekDeurOffsetMmLiggerTRoede),o=="PLATTE_ROEDE"&&(r=t.opdekDeurOffsetMmLiggerStripRoede);break;case"vouwwand":r=t.vouwwandOffsetMmLiggerStripRoede;break}return r*.001},n.ExternalInterface.calcLiggerBreedteX=function(e,t,r=1,o=""){let i=0,a=e.typeroede??"";if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"vaste-wand":a=="T_ROEDE"&&(i=t.vasteWandOffsetMmLiggerTRoede),a=="PLATTE_ROEDE"&&(i=t.vasteWandOffsetMmLiggerStripRoede);break;case"taatsdeur":a=="T_ROEDE"&&(i=t.taatsDeurOffsetMmLiggerTRoede),a=="PLATTE_ROEDE"&&(i=t.taatsDeurOffsetMmLiggerStripRoede);break;case"scharnierdeur":a=="T_ROEDE"&&(i=t.scharnierDeurOffsetMmLiggerTRoede),a=="PLATTE_ROEDE"&&(i=t.scharnierDeurOffsetMmLiggerStripRoede);break;case"schuifdeur":a=="T_ROEDE"&&(i=t.schuifDeurOffsetMmLiggerTRoede),a=="PLATTE_ROEDE"&&(i=t.schuifDeurOffsetMmLiggerStripRoede);break;case"opdekdeur":a=="T_ROEDE"&&(i=t.opdekDeurOffsetMmLiggerTRoede),a=="PLATTE_ROEDE"&&(i=t.opdekDeurOffsetMmLiggerStripRoede);break;case"vouwwand":i=t.vouwwandOffsetMmLiggerStripRoede;break}return o=="Zijlicht"&&(i-=13),i*.001*r},n.ExternalInterface.customFunctionBovenRailLengte=function(e,t){let r=parseInt(e.deur_aantal??1),o=parseInt(e.breedte??0),i=(e==null?void 0:e.verberg_rail_in_wand)??!1,a=o*r;return i?a=o*r:(r==1&&(a=o*2),r==2&&(a=o*r*2)),a},n.ExternalInterface.customFunctionGetPanelWidth=function(e,t){let r=0;if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"vaste-wand":e.deurbreedtevariabel?r=parseFloat(e.variabeledeurbreedte_maten[t-1]??0):r=parseFloat(e.breedte??0);break;default:r=parseFloat(e.breedte??0)}return r=parseFloat(r.toFixed(3)),{panelWidthCm:Number.isInteger(r)?String(r):String(r.toFixed(1)),panelWidthM:parseFloat(r.toFixed(3)*.01)}},n.ExternalInterface.calcShapeKeyStaanderVerplaatsing=function(e,t,r){let o=0;return e.asymmetrisch?o=e.asymmetrisch_staander_maten_deur[t*100+r]??0:o=n.ExternalInterface.customFunctionGetPanelWidth(e,t).panelWidthCm/(e.deur_aantal_staander+1)*r,o},n.ExternalInterface.clamp=function(e,t,r){return Math.max(t,Math.min(r,e))},n.ExternalInterface.customFunctionRALtoHEX=function(e=""){var t={ral1000:"#CDBA88",ral1001:"#D0B084",ral1002:"#D2AA6D",ral1003:"#F9A900",ral1004:"#E49E00",ral1005:"#CB8F00",ral1006:"#E19000",ral1007:"#E88C00",ral1011:"#AF8050",ral1012:"#DDAF28",ral1013:"#E3D9C7",ral1014:"#DDC49B",ral1015:"#E6D2B5",ral1016:"#F1DD39",ral1017:"#F6A951",ral1018:"#FACA31",ral1019:"#A48F7A",ral1020:"#A08F65",ral1021:"#F6B600",ral1023:"#F7B500",ral1024:"#BA8F4C",ral1026:"#FFFF00",ral1027:"#A77F0F",ral1028:"#FF9C00",ral1032:"#E2A300",ral1033:"#F99A1D",ral1034:"#EB9C52",ral1035:"#8F8370",ral1036:"#806440",ral1037:"#F09200",ral2000:"#DA6E00",ral2001:"#BA481C",ral2002:"#BF3922",ral2003:"#F67829",ral2004:"#E25304",ral2005:"#FF4D08",ral2007:"#FFB200",ral2008:"#EC6B22",ral2009:"#DE5308",ral2010:"#D05D29",ral2011:"#E26E0F",ral2012:"#D5654E",ral2013:"#923E25",ral2017:"#FC5500",ral3000:"#A72920",ral3001:"#9B2423",ral3002:"#9B2321",ral3003:"#861A22",ral3004:"#6B1C23",ral3005:"#59191F",ral3007:"#3E2022",ral3009:"#6D342D",ral3011:"#782423",ral3012:"#C5856D",ral3013:"#972E25",ral3014:"#CB7375",ral3015:"#D8A0A6",ral3016:"#A63D30",ral3017:"#CA555D",ral3018:"#C63F4A",ral3020:"#BB1F11",ral3022:"#CF6955",ral3024:"#FF2D21",ral3026:"#FF2A1C",ral3027:"#AB273C",ral3028:"#CC2C24",ral3031:"#A63437",ral3032:"#701D24",ral3033:"#A53A2E",ral4001:"#816183",ral4002:"#8D3C4B",ral4003:"#C4618C",ral4004:"#651E38",ral4005:"#76689A",ral4006:"#903373",ral4007:"#47243C",ral4008:"#844C82",ral4009:"#9D8692",ral4010:"#BB4077",ral4011:"#6E6387",ral4012:"#6A6B7F",ral5000:"#304F6E",ral5001:"#0E4C64",ral5002:"#00387A",ral5003:"#1F3855",ral5004:"#191E28",ral5005:"#005387",ral5007:"#376B8C",ral5008:"#2B3A44",ral5009:"#215F78",ral5010:"#004F7C",ral5011:"#1A2B3C",ral5012:"#0089B6",ral5013:"#193153",ral5014:"#637D96",ral5015:"#007CAF",ral5017:"#005B8C",ral5018:"#048B8C",ral5019:"#005E83",ral5020:"#00414B",ral5021:"#007577",ral5022:"#222D5A",ral5023:"#41698C",ral5024:"#6093AC",ral5025:"#20697C",ral5026:"#0F3052",ral6000:"#3C7460",ral6001:"#366735",ral6002:"#325928",ral6003:"#50533C",ral6004:"#024442",ral6005:"#114232",ral6006:"#3C392E",ral6007:"#2C3222",ral6008:"#36342A",ral6009:"#27352A",ral6010:"#4D6F39",ral6011:"#6B7C59",ral6012:"#2F3D3A",ral6013:"#7C765A",ral6014:"#474135",ral6015:"#3D3D36",ral6016:"#00694C",ral6017:"#587F40",ral6018:"#60993B",ral6019:"#B9CEAC",ral6020:"#37422F",ral6021:"#8A9977",ral6022:"#3A3327",ral6024:"#008351",ral6025:"#5E6E3B",ral6026:"#005F4E",ral6027:"#7EBAB5",ral6028:"#315442",ral6029:"#006F3D",ral6032:"#237F52",ral6033:"#45877F",ral6034:"#7AADAC",ral6035:"#194D25",ral6036:"#04574B",ral6037:"#008B29",ral6038:"#00B51B",ral6039:"#B3C43E",ral7000:"#7A888E",ral7001:"#8C979C",ral7002:"#817863",ral7003:"#797669",ral7004:"#9A9B9B",ral7005:"#6B6E6B",ral7006:"#766A5E",ral7008:"#745F3D",ral7009:"#5D6058",ral7010:"#585C56",ral7011:"#52595D",ral7012:"#575D5E",ral7013:"#575044",ral7015:"#4F5358",ral7016:"#383E42",ral7021:"#2F3234",ral7022:"#4C4A44",ral7023:"#808076",ral7024:"#45494E",ral7026:"#374345",ral7030:"#928E85",ral7031:"#5B686D",ral7032:"#B5B0A1",ral7033:"#7F8274",ral7034:"#92886F",ral7035:"#C5C7C4",ral7036:"#979392",ral7037:"#7A7B7A",ral7038:"#B0B0A9",ral7039:"#6B665E",ral7040:"#989EA1",ral7042:"#8E9291",ral7043:"#4F5250",ral7044:"#B7B3A8",ral7045:"#8D9295",ral7046:"#7E868A",ral7047:"#C8C8C7",ral7048:"#817B73",ral8000:"#89693F",ral8001:"#9D622B",ral8002:"#794D3E",ral8003:"#7E4B27",ral8004:"#8D4931",ral8007:"#70462B",ral8008:"#724A25",ral8011:"#5A3827",ral8012:"#66332B",ral8014:"#4A3526",ral8015:"#5E2F26",ral8016:"#4C2B20",ral8017:"#442F29",ral8019:"#3D3635",ral8022:"#1A1719",ral8023:"#A45729",ral8024:"#795038",ral8025:"#755847",ral8028:"#513A2A",ral8029:"#7F4031",ral9001:"#E9E0D2",ral9002:"#D6D5CB",ral9003:"#ECECE7",ral9004:"#2B2B2C",ral9005:"#0E0E10",ral9006:"#A1A1A0",ral9007:"#868581",ral9010:"#F1EDE1",ral9011:"#27292B",ral9012:"#F8F2E1",ral9016:"#F1F1EA",ral9017:"#29292A",ral9018:"#C8CBC4",ral9022:"#858583",ral9023:"#787B7A"};e=String(e);const r=e.replace(/\D/g,"");var i="ral"+parseInt(r);return t[i]?t[i]:"#1f1d20"},n.ExternalInterface.getDimensionOffsetZ=function(e,t,r=null){let o=0,i=0;switch(((e==null?void 0:e.zijpaneel_aantal_links)>0||(e==null?void 0:e.zijpaneel_aantal_rechts)>0)&&(e==null?void 0:e.zijpaneel_aantal_staander)>0&&(i=1),(e==null?void 0:e.deur_aantal_staander)>0&&(i=1),r){case"AfmetingenBovenkant":o=t*(3+i);break;case"AfmetingenBreedteDeur":o=t*(2+i);break;case"ZijpaneelFrame":o=t*(2+i);break;default:o=t*1}return n.ExternalInterface.checkSchuifdeurVoorWand(e)&&(o+=.1),o},n.ExternalInterface.createLine=function(e,t,r,o,i,a,s,l){const c=n.scene.getObjectByName(e);c&&n.scene.remove(c);const u=[{label:"startLocationX",value:r},{label:"startLocationY",value:o},{label:"startLocationZ",value:i},{label:"endLocationX",value:a},{label:"endLocationY",value:s},{label:"endLocationZ",value:l}];for(const m of u)if(typeof m.value!="number"||!Number.isFinite(m.value))return;let d=new _r({color:t}),f=[];f.push(e_(new N(r,o,i),"Y_UP_RIGHT","Z_UP_RIGHT",!0)),f.push(e_(new N(a,s,l),"Y_UP_RIGHT","Z_UP_RIGHT",!0));let h=new At().setFromPoints(f),p=new Ki(h,d);p.name=e,n.scene.add(p)},n.ExternalInterface.removeObjectsByName=function(e){n.scene.children.forEach(t=>{t.name&&t.name.includes(e)&&n.scene.remove(t)})},n.ExternalInterface.createDimensionText=function(e,t,r,o,i,a,s,l,c,u){vN.get().then(d=>{const f=n.scene.getObjectByName(e);f&&n.scene.remove(f);const h=new Ih(a,{font:d,size:s,height:l});h.center(),h.computeBoundingBox();const p=h.boundingBox,m=new N;p.getSize(m);const g=e_(new N(t,r,o),"Y_UP_RIGHT","Z_UP_RIGHT",!0),_=new pr({color:c}),A=new Mt(h,_);if(A.name=e,A.position.set(g.x,g.y,g.z),u){const x=new N(1,1,1);x.x*=-1,A.scale.multiply(x)}const y=new nc(m.x*1.4,m.y*1.5,.001),b=new Xu({color:"#383838",depthWrite:!1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),E=new Mt(y,b);E.position.set(0,0,-.001),E.name=e,A.add(E),n.scene.add(A)}).catch(d=>console.error("Error createDimensionText:",d))},n.ExternalInterface.createRectangle=function(e,t,r,o,i,a,s,l){const c=n.scene.getObjectByName(e);c&&n.scene.remove(c);const u=new nc(i,a,s),d=new Xu({color:l}),f=e_(new N(t,r,o),"Y_UP_RIGHT","Z_UP_RIGHT",!0),h=new Mt(u,d);h.position.set(f.x,f.y,f.z),h.name=e,n.scene.add(h)},n.ExternalInterface.calculateMinMaxDimensions=function(e,t){let r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,h=0,p=0,m=(e.maatvoering_weergeven||n.ExternalInterface.getMaatvoeringScreenshot())??!1;if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"vaste-wand":if(e.deurbreedtevariabel){for(let g=1;g<=e.deur_aantal;g++)f+=e.variabeledeurbreedte_maten[g-1];r=f*.01}else r=parseInt(e.deur_aantal)*parseFloat(e.breedte)*.01;h=parseInt(e.hoogte),o=h*.01,p=r,c=parseFloat(p*.5);break;case"taatsdeur":if(f+=e.deur_aantal*e.breedte,parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)f+=e.zijpaneel_breedte_links[g-1];if(parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)f+=e.zijpaneel_breedte_rechts[g-1];if(r=f*.01,h=parseInt(e.hoogte),e.bovenlicht&&(h+=parseInt(e.hoogtebovenlicht)),o=h*.01,p+=e.deur_aantal*e.breedte*.5,parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)p+=e.zijpaneel_breedte_rechts[g-1]*.5;if(parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)p-=e.zijpaneel_breedte_links[g-1]*.5;c=parseFloat(p*.01);break;case"scharnierdeur":if(f+=e.deur_aantal*e.breedte,parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)f+=e.zijpaneel_breedte_links[g-1];if(parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)f+=e.zijpaneel_breedte_rechts[g-1];if(r=f*.01,h=parseInt(e.hoogte),e.bovenlicht&&(h+=parseInt(e.hoogtebovenlicht)),o=h*.01,p+=e.deur_aantal*e.breedte*.5,parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)p+=e.zijpaneel_breedte_rechts[g-1]*.5;if(parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)p-=e.zijpaneel_breedte_links[g-1]*.5;c=parseFloat(p*.01);break;case"schuifdeur":if(f+=e.deur_aantal*e.breedte,parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)f+=e.zijpaneel_breedte_links[g-1];if(parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)f+=e.zijpaneel_breedte_rechts[g-1];if(r=f*.01,h=parseInt(e.hoogte),e.bovenlicht&&(h+=parseInt(e.hoogtebovenlicht)),o=h*.01,p+=e.deur_aantal*e.breedte*.5,parseInt(e.zijpaneel_aantal_rechts)>0)for(let g=1;g<=e.zijpaneel_aantal_rechts;g++)p+=e.zijpaneel_breedte_rechts[g-1]*.5;if(parseInt(e.zijpaneel_aantal_links)>0)for(let g=1;g<=e.zijpaneel_aantal_links;g++)p-=e.zijpaneel_breedte_links[g-1]*.5;c=parseFloat(p*.01);break;case"opdekdeur":f+=e.deur_aantal*e.breedte,r=f*.01,h=parseInt(e.hoogte),o=h*.01,p+=e.deur_aantal*e.breedte*.5,c=parseFloat(p*.01);break;case"vouwwand":f+=e.deur_aantal*e.breedte,r=f*.01,h=parseInt(e.hoogte),o=h*.01,p+=e.deur_aantal*e.breedte*.5,c=parseFloat(p*.01);break;default:console.log("Oops")}return i=m?o+.5:o,a=parseFloat(r*.5),s=parseFloat(o*.5),l=parseFloat(i*.5),u=parseFloat(0-a),d=parseFloat(r-a),{offsetPositionX:parseFloat(c.toFixed(3)),totalWidth:parseFloat(r.toFixed(3)),totalHeight:parseFloat(o.toFixed(3)),totalHeightInclDimensions:parseFloat(i.toFixed(3)),middlePositionX:parseFloat(a.toFixed(3)),middlePositionZ:parseFloat(s.toFixed(3)),middlePositionZInclDimensions:parseFloat(l.toFixed(3)),minPositionX:parseFloat(u.toFixed(3)),maxPositionX:parseFloat(d.toFixed(3)),totalWidthCmString:Number.isInteger(r*100)?String(r*100):(r*100).toFixed(1)}},n.ExternalInterface.getRoedeConfiguratieBreedte=function(e,t){let r=e.breedte??0;if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"taatsdeur":r=e.breedte-7;break;case"scharnierdeur":e.deur_aantal>1?r=e.breedte-(Ve.scharnierDeurFrameBreedteMm+Ve.scharnierDeurSpelingMm)*.1:r=e.breedte-(Ve.scharnierDeurFrameBreedteMm+Ve.scharnierDeurSpelingMm*2)*.1,e.handgreep=="HANDGREEP_KLINK_1"&&(r-=Ve.scharnierDeurSmalslotStijlBreedteMm*.1);break;case"schuifdeur":r=e.breedte-6;break;case"opdekdeur":r=e.breedte-10.95;break}return r},n.ExternalInterface.getRoedeConfiguratieHoogte=function(e){let t=e.hoogte??0;if(e!==void 0&&e.hasOwnProperty("type"))switch(e.type){case"taatsdeur":t=e.hoogte-14.3;break;case"scharnierdeur":t=e.hoogte-10.5;break;case"schuifdeur":t=e.hoogte-14.2,e.zijpaneel_aantal_links===0&&e.zijpaneel_aantal_rechts===0&&(t+=7);break;case"opdekdeur":t=e.hoogte-7.35;break}return t},n.ExternalInterface.calcRoedeConfiguratiePositieOffsetX=function(e,t,r){let o=0;return o=e.breedte*.005,t==="scharnierdeur"&&e.handgreep==="HANDGREEP_KLINK_1"&&e.deur_aantal==1&&(e.draairichting==="DRAAI_RECHTS"?o+=Ve.scharnierDeurSmalslotStijlBreedteMm*.001*.5:o-=Ve.scharnierDeurSmalslotStijlBreedteMm*.001*.5),t==="opdekdeur"&&e.handgreep==="HANDGREEP_KLINK_1"&&(e.draairichting==="DRAAI_RECHTS"?o+=.02125:o-=.02125),o},n.ExternalInterface.getRoedeConfiguratiePositieY=function(e,t){let r=0;switch(t){case"opdekdeur":r=-.106;case"schuifdeur":e.zijpaneel_aantal_links===0&&e.zijpaneel_aantal_rechts===0&&(r=-.125);break}return r},n.ExternalInterface.getRoedeConfiguratiePositieZ=function(e){switch(e){case"taatsdeur":return .101;case"scharnierdeur":return .0465;case"schuifdeur":return .043;case"opdekdeur":return .04;default:return 0}},n.ExternalInterface.checkShapeKeyVerplaatsingRoedeConfiguratie=function(e,t,r,o){let i=!1,a=r.roede_design_roedes_doorlopen_zijlicht_bovenlicht??!0,s=o&&typeof o=="object"&&o.hasOwnProperty(r.roede_configuratie)?o[r.roede_configuratie]:[],l=[];return t=="Links"&&(l=s.Links),t=="Rechts"&&(parseInt(r.deur_aantal)>1?l=s.Links:l=s.Rechts),t=="Boven"&&(l=s.Boven??void 0),l&&l[e]!==void 0&&a&&(i=!0),i},n.ExternalInterface.calcShapeKeyVerplaatsingLiggerRoedeConfiguratie=function(e,t,r,o,i){var y,b,E,x,w,L;let a=o&&typeof o=="object"&&o.hasOwnProperty(r.roede_configuratie)?o[r.roede_configuratie]:[],s=[];t=="Links"&&(s=a.Links),t=="Rechts"&&(parseInt(r.deur_aantal)>1?s=a.Links:s=a.Rechts);let l=0,c=0,u=(300-n.ExternalInterface.getRoedeConfiguratieHoogte(r))/150,d=(150-n.ExternalInterface.getRoedeConfiguratieBreedte(r))/100,f=0,h=((y=s[e])==null?void 0:y.min_hoogte)??0,p=((b=s[e])==null?void 0:b.max_hoogte)??0;h!==0&&p!==0&&(l=((p-u*(p-h))*.001+n.ExternalInterface.getRoedeConfiguratiePositieZ(i))*100);let m=((E=s[e])==null?void 0:E.min_breedte)??0,g=((x=s[e])==null?void 0:x.max_breedte)??0;m!==0&&g!==0&&(l-=d*(g-m)*.1);let _=((w=s[e])==null?void 0:w.min_compensatie)??0,A=((L=s[e])==null?void 0:L.max_compensatie)??0;return _!==0&&A!==0&&(f=d>u?d:u,l-=f*(A-_)*.1),c=l,c},n.ExternalInterface.calcShapeKeyVerplaatsingStaanderRoedeConfiguratie=function(e,t,r,o){var f,h;let i=o&&typeof o=="object"&&o.hasOwnProperty(r.roede_configuratie)?o[r.roede_configuratie]:[],a=[];a=i.Boven;let s=0,l=0,c=(150-n.ExternalInterface.getRoedeConfiguratieBreedte(r))/100,u=((f=a[e])==null?void 0:f.min_breedte)??0,d=((h=a[e])==null?void 0:h.max_breedte)??0;return u!==0&&d!==0&&(s=(d-c*(d-u))*.001*100),t==="Mirror"?l=n.ExternalInterface.getRoedeConfiguratieBreedte(r)-s:l=s,l}}function y3e(n,e){n.render(),Lr.emit("configuratorLoaded")}function e_(n,e,t,r=!1){const o=n.y,i=n.z;return n.y=r?i:-i,n.z=o,n}const b3e={name:"V3DApp",props:{baseUrl:String,apiUrl:String,deviceUuid:String,fullScreen:Boolean,fullScreenTemplate:Boolean,fontUrl:String},created(){this.app=null,this.PL=null,this.uuid=hr.generateUUID(),this.containerId=`v3d-container-${this.uuid}`,this.sceneURL=this.baseUrl+"/v3dApp/aluw_configurator.gltf",this.loadApp=async function(){({app:this.app,PL:this.PL}=await m3e({containerId:this.containerId,fsButtonId:null,sceneURL:this.sceneURL,baseUrl:this.baseUrl,apiUrl:this.apiUrl,deviceUuid:this.deviceUuid,fullScreen:this.fullScreen,fullScreenTemplate:this.fullScreenTemplate,fontUrl:this.fontUrl}))},this.disposeApp=function(){var n,e;(n=this.app)==null||n.dispose(),this.app=null,(e=this.PL)==null||e.dispose(),this.PL=null}},mounted(){window.addEventListener("beforeunload",this.handleUnload),this.loadApp()},beforeUnmount(){window.removeEventListener("beforeunload",this.handleUnload),console.log("Disposing V3DApp"),this.disposeApp()},handleUnload(n){console.log("Page is closing"),this.disposeApp()}},x3e=["id"];function E3e(n,e,t,r,o,i){return he(),ye("div",{id:n.containerId,class:"h-full flex items-center justify-center"},[...e[0]||(e[0]=[XE('
',1)])],8,x3e)}const C3e=Object.freeze(Object.defineProperty({__proto__:null,default:zi(b3e,[["render",E3e],["__scopeId","data-v-6baf700f"]])},Symbol.toStringTag,{value:"Module"}))})(); diff --git a/public/aluwdoors-ref/opentype.js b/public/aluwdoors-ref/opentype.js new file mode 100644 index 0000000..a9a7368 --- /dev/null +++ b/public/aluwdoors-ref/opentype.js @@ -0,0 +1,118 @@ +/** + * Modules in this bundle + * @license + * + * opentype.js: + * license: MIT (http://opensource.org/licenses/MIT) + * author: Frederik De Bleser + * version: 0.6.5 + * + * tiny-inflate: + * license: MIT (http://opensource.org/licenses/MIT) + * author: Devon Govett + * maintainers: devongovett + * homepage: https://github.com/devongovett/tiny-inflate + * version: 1.0.2 + * + * This header is generated by licensify (https://github.com/twada/licensify) + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.opentype = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;os;++s)e[s]=0;for(s=0;30-n>s;++s)e[s+n]=s/n|0;for(i=r,s=0;30>s;++s)t[s]=i,i+=1<n;++n)e.table[n]=0;for(e.table[7]=24,e.table[8]=152,e.table[9]=112,n=0;24>n;++n)e.trans[n]=256+n;for(n=0;144>n;++n)e.trans[24+n]=n;for(n=0;8>n;++n)e.trans[168+n]=280+n;for(n=0;112>n;++n)e.trans[176+n]=144+n;for(n=0;5>n;++n)t.table[n]=0;for(t.table[5]=32,n=0;32>n;++n)t.trans[n]=n}function tinf_build_tree(e,t,n,r){var s,i;for(s=0;16>s;++s)e.table[s]=0;for(s=0;r>s;++s)e.table[t[n+s]]++;for(e.table[0]=0,i=0,s=0;16>s;++s)offs[s]=i,i+=e.table[s];for(s=0;r>s;++s)t[n+s]&&(e.trans[offs[t[n+s]]++]=s)}function tinf_getbit(e){e.bitcount--||(e.tag=e.source[e.sourceIndex++],e.bitcount=7);var t=1&e.tag;return e.tag>>>=1,t}function tinf_read_bits(e,t,n){if(!t)return n;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>16-t;return e.tag>>>=t,e.bitcount-=t,r+n}function tinf_decode_symbol(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>=1,++s,n+=t.table[s],r-=t.table[s];while(r>=0);return e.tag=i,e.bitcount-=s,t.trans[n+r]}function tinf_decode_trees(e,t,n){var r,s,i,a,o,_;for(r=tinf_read_bits(e,5,257),s=tinf_read_bits(e,5,1),i=tinf_read_bits(e,4,4),a=0;19>a;++a)lengths[a]=0;for(a=0;i>a;++a){var f=tinf_read_bits(e,3,0);lengths[clcidx[a]]=f}for(tinf_build_tree(code_tree,lengths,0,19),o=0;r+s>o;){var d=tinf_decode_symbol(e,code_tree);switch(d){case 16:var b=lengths[o-1];for(_=tinf_read_bits(e,2,3);_;--_)lengths[o++]=b;break;case 17:for(_=tinf_read_bits(e,3,3);_;--_)lengths[o++]=0;break;case 18:for(_=tinf_read_bits(e,7,11);_;--_)lengths[o++]=0;break;default:lengths[o++]=d}}tinf_build_tree(t,lengths,0,r),tinf_build_tree(n,lengths,r,s)}function tinf_inflate_block_data(e,t,n){for(;;){var r=tinf_decode_symbol(e,t);if(256===r)return TINF_OK;if(256>r)e.dest[e.destLen++]=r;else{var s,i,a,o;for(r-=257,s=tinf_read_bits(e,length_bits[r],length_base[r]),i=tinf_decode_symbol(e,n),a=e.destLen-tinf_read_bits(e,dist_bits[i],dist_base[i]),o=a;a+s>o;++o)e.dest[e.destLen++]=e.dest[o]}}}function tinf_inflate_uncompressed_block(e){for(var t,n,r;e.bitcount>8;)e.sourceIndex--,e.bitcount-=8;if(t=e.source[e.sourceIndex+1],t=256*t+e.source[e.sourceIndex],n=e.source[e.sourceIndex+3],n=256*n+e.source[e.sourceIndex+2],t!==(65535&~n))return TINF_DATA_ERROR;for(e.sourceIndex+=4,r=t;r;--r)e.dest[e.destLen++]=e.source[e.sourceIndex++];return e.bitcount=0,TINF_OK}function tinf_uncompress(e,t){var n,r,s,i=new Data(e,t);do{switch(n=tinf_getbit(i),r=tinf_read_bits(i,2,0)){case 0:s=tinf_inflate_uncompressed_block(i);break;case 1:s=tinf_inflate_block_data(i,sltree,sdtree);break;case 2:tinf_decode_trees(i,i.ltree,i.dtree),s=tinf_inflate_block_data(i,i.ltree,i.dtree);break;default:s=TINF_DATA_ERROR}if(s!==TINF_OK)throw new Error("Data error")}while(!n);return i.destLen0,"No English "+t+" specified.")}var n=[],i=this;t("fontFamily"),t("weightName"),t("manufacturer"),t("copyright"),t("version"),e(this.unitsPerEm>0,"No unitsPerEm specified.")},Font.prototype.toTables=function(){return sfnt.fontToTable(this)},Font.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()},Font.prototype.toArrayBuffer=function(){for(var e=this.toTables(),t=e.encode(),n=new ArrayBuffer(t.length),i=new Uint8Array(n),r=0;r=t;){var s=t+a>>>1,n=e[s].tag;if(n===r)return s;r>n?t=s+1:a=s-1}return-t-1}function binSearch(e,r){for(var t=0,a=e.length-1;a>=t;){var s=t+a>>>1,n=e[s];if(n===r)return s;r>n?t=s+1:a=s-1}return-t-1}var check=require("./check"),Layout={searchTag:searchTag,binSearch:binSearch,getScriptNames:function(){var e=this.getGsubTable();return e?e.scripts.map(function(e){return e.tag}):[]},getScriptTable:function(e,r){var t=this.getGsubTable(r);if(t){var a=t.scripts,s=searchTag(t.scripts,e);if(s>=0)return a[s].script;var n={tag:e,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return a.splice(-1-s,0,n.script),n}},getLangSysTable:function(e,r,t){var a=this.getScriptTable(e,t);if(a){if("DFLT"===r)return a.defaultLangSys;var s=searchTag(a.langSysRecords,r);if(s>=0)return a.langSysRecords[s].langSys;if(t){var n={tag:r,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return a.langSysRecords.splice(-1-s,0,n),n.langSys}}},getFeatureTable:function(e,r,t,a){var s=this.getLangSysTable(e,r,a);if(s){for(var n,u=s.featureIndexes,i=this.font.tables.gsub.features,g=0;g=i[o-1].tag,"Features must be added in alphabetical order."),n={tag:t,feature:{params:0,lookupListIndexes:[]}},i.push(n),u.push(o),n.feature}}},getLookupTable:function(e,r,t,a,s){var n=this.getFeatureTable(e,r,t,s);if(n){for(var u,i=n.lookupListIndexes,g=this.font.tables.gsub.lookups,o=0;oa;a++)for(var s=t[a],n=s.start,u=s.end,i=n;u>=i;i++)r.push(i);return r}};module.exports=Layout; + +},{"./check":2}],9:[function(require,module,exports){ +"use strict";function loadFromFile(e,a){var r=require("fs");r.readFile(e,function(e,r){return e?a(e.message):void a(null,util.nodeBufferToArrayBuffer(r))})}function loadFromUrl(e,a){var r=new XMLHttpRequest;r.open("get",e,!0),r.responseType="arraybuffer",r.onload=function(){return 200!==r.status?a("Font could not be loaded: "+r.statusText):a(null,r.response)},r.send()}function parseOpenTypeTableEntries(e,a){for(var r=[],s=12,t=0;a>t;t+=1){var n=parse.getTag(e,s),o=parse.getULong(e,s+4),p=parse.getULong(e,s+8),l=parse.getULong(e,s+12);r.push({tag:n,checksum:o,offset:p,length:l,compression:!1}),s+=16}return r}function parseWOFFTableEntries(e,a){for(var r=[],s=44,t=0;a>t;t+=1){var n,o=parse.getTag(e,s),p=parse.getULong(e,s+4),l=parse.getULong(e,s+8),f=parse.getULong(e,s+12);n=f>l?"WOFF":!1,r.push({tag:o,offset:p,compression:n,compressedLength:l,originalLength:f}),s+=20}return r}function uncompressTable(e,a){if("WOFF"===a.compression){var r=new Uint8Array(e.buffer,a.offset+2,a.compressedLength-2),s=new Uint8Array(a.originalLength);if(inflate(r,s),s.byteLength!==a.originalLength)throw new Error("Decompression error: "+a.tag+" decompressed length doesn't match recorded length");var t=new DataView(s.buffer,0);return{data:t,offset:0}}return{data:e,offset:a.offset}}function parseBuffer(e){var a,r,s,t=new _font.Font({empty:!0}),n=new DataView(e,0),o=[],p=parse.getTag(n,0);if(p===String.fromCharCode(0,1,0,0))t.outlinesFormat="truetype",s=parse.getUShort(n,4),o=parseOpenTypeTableEntries(n,s);else if("OTTO"===p)t.outlinesFormat="cff",s=parse.getUShort(n,4),o=parseOpenTypeTableEntries(n,s);else{if("wOFF"!==p)throw new Error("Unsupported OpenType signature "+p);var l=parse.getTag(n,4);if(l===String.fromCharCode(0,1,0,0))t.outlinesFormat="truetype";else{if("OTTO"!==l)throw new Error("Unsupported OpenType flavor "+p);t.outlinesFormat="cff"}s=parse.getUShort(n,12),o=parseWOFFTableEntries(n,s)}for(var f,u,i,c,b,m,d,g,h,T,y=0;s>y;y+=1){var v,F=o[y];switch(F.tag){case"cmap":v=uncompressTable(n,F),t.tables.cmap=cmap.parse(v.data,v.offset),t.encoding=new encoding.CmapEncoding(t.tables.cmap);break;case"fvar":u=F;break;case"head":v=uncompressTable(n,F),t.tables.head=head.parse(v.data,v.offset),t.unitsPerEm=t.tables.head.unitsPerEm,a=t.tables.head.indexToLocFormat;break;case"hhea":v=uncompressTable(n,F),t.tables.hhea=hhea.parse(v.data,v.offset),t.ascender=t.tables.hhea.ascender,t.descender=t.tables.hhea.descender,t.numberOfHMetrics=t.tables.hhea.numberOfHMetrics;break;case"hmtx":m=F;break;case"ltag":v=uncompressTable(n,F),r=ltag.parse(v.data,v.offset);break;case"maxp":v=uncompressTable(n,F),t.tables.maxp=maxp.parse(v.data,v.offset),t.numGlyphs=t.tables.maxp.numGlyphs;break;case"name":h=F;break;case"OS/2":v=uncompressTable(n,F),t.tables.os2=os2.parse(v.data,v.offset);break;case"post":v=uncompressTable(n,F),t.tables.post=post.parse(v.data,v.offset),t.glyphNames=new encoding.GlyphNames(t.tables.post);break;case"glyf":i=F;break;case"loca":g=F;break;case"CFF ":f=F;break;case"kern":d=F;break;case"GPOS":c=F;break;case"GSUB":b=F;break;case"meta":T=F}}var q=uncompressTable(n,h);if(t.tables.name=_name.parse(q.data,q.offset,r),t.names=t.tables.name,i&&g){var k=0===a,w=uncompressTable(n,g),x=loca.parse(w.data,w.offset,t.numGlyphs,k),O=uncompressTable(n,i);t.glyphs=glyf.parse(O.data,O.offset,x,t)}else{if(!f)throw new Error("Font doesn't contain TrueType or CFF outlines.");var U=uncompressTable(n,f);cff.parse(U.data,U.offset,t)}var L=uncompressTable(n,m);if(hmtx.parse(L.data,L.offset,t.numberOfHMetrics,t.numGlyphs,t.glyphs),encoding.addGlyphNames(t),d){var E=uncompressTable(n,d);t.kerningPairs=kern.parse(E.data,E.offset)}else t.kerningPairs={};if(c){var S=uncompressTable(n,c);gpos.parse(S.data,S.offset,t)}if(b){var G=uncompressTable(n,b);t.tables.gsub=gsub.parse(G.data,G.offset)}if(u){var B=uncompressTable(n,u);t.tables.fvar=fvar.parse(B.data,B.offset,t.names)}if(T){var C=uncompressTable(n,T);t.tables.meta=meta.parse(C.data,C.offset),t.metas=t.tables.meta}return t}function load(e,a){var r="undefined"==typeof window,s=r?loadFromFile:loadFromUrl;s(e,function(e,r){if(e)return a(e);var s;try{s=parseBuffer(r)}catch(t){return a(t,null)}return a(null,s)})}function loadSync(e){var a=require("fs"),r=a.readFileSync(e);return parseBuffer(util.nodeBufferToArrayBuffer(r))}var inflate=require("tiny-inflate"),encoding=require("./encoding"),_font=require("./font"),glyph=require("./glyph"),parse=require("./parse"),path=require("./path"),util=require("./util"),cmap=require("./tables/cmap"),cff=require("./tables/cff"),fvar=require("./tables/fvar"),glyf=require("./tables/glyf"),gpos=require("./tables/gpos"),gsub=require("./tables/gsub"),head=require("./tables/head"),hhea=require("./tables/hhea"),hmtx=require("./tables/hmtx"),kern=require("./tables/kern"),ltag=require("./tables/ltag"),loca=require("./tables/loca"),maxp=require("./tables/maxp"),_name=require("./tables/name"),os2=require("./tables/os2"),post=require("./tables/post"),meta=require("./tables/meta");exports._parse=parse,exports.Font=_font.Font,exports.Glyph=glyph.Glyph,exports.Path=path.Path,exports.parse=parseBuffer,exports.load=load,exports.loadSync=loadSync; +},{"./encoding":4,"./font":5,"./glyph":6,"./parse":10,"./path":11,"./tables/cff":14,"./tables/cmap":15,"./tables/fvar":16,"./tables/glyf":17,"./tables/gpos":18,"./tables/gsub":19,"./tables/head":20,"./tables/hhea":21,"./tables/hmtx":22,"./tables/kern":23,"./tables/loca":24,"./tables/ltag":25,"./tables/maxp":26,"./tables/meta":27,"./tables/name":28,"./tables/os2":29,"./tables/post":30,"./util":33,"fs":undefined,"tiny-inflate":1}],10:[function(require,module,exports){ +"use strict";function getUShort(t,r){return t.getUint16(r,!1)}function Parser(t,r){this.data=t,this.offset=r,this.relativeOffset=0}var check=require("./check");exports.getByte=function(t,r){return t.getUint8(r)},exports.getCard8=exports.getByte,exports.getUShort=exports.getCard16=getUShort,exports.getShort=function(t,r){return t.getInt16(r,!1)},exports.getULong=function(t,r){return t.getUint32(r,!1)},exports.getFixed=function(t,r){var e=t.getInt16(r,!1),s=t.getUint16(r+2,!1);return e+s/65535},exports.getTag=function(t,r){for(var e="",s=r;r+4>s;s+=1)e+=String.fromCharCode(t.getInt8(s));return e},exports.getOffset=function(t,r,e){for(var s=0,a=0;e>a;a+=1)s<<=8,s+=t.getUint8(r+a);return s},exports.getBytes=function(t,r,e){for(var s=[],a=r;e>a;a+=1)s.push(t.getUint8(a));return s},exports.bytesToString=function(t){for(var r="",e=0;ea;a++)s+=String.fromCharCode(r.getUint8(e+a));return s},Parser.prototype.parseTag=function(){return this.parseString(4)},Parser.prototype.parseLongDateTime=function(){var t=exports.getULong(this.data,this.offset+this.relativeOffset+4);return t-=2082844800,this.relativeOffset+=8,t},Parser.prototype.parseVersion=function(){var t=getUShort(this.data,this.offset+this.relativeOffset),r=getUShort(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,t+r/4096/10},Parser.prototype.skip=function(t,r){void 0===r&&(r=1),this.relativeOffset+=typeOffsets[t]*r},Parser.prototype.parseOffset16List=Parser.prototype.parseUShortList=function(t){void 0===t&&(t=this.parseUShort());for(var r=new Array(t),e=this.data,s=this.offset+this.relativeOffset,a=0;t>a;a++)r[a]=e.getUint16(s),s+=2;return this.relativeOffset+=2*t,r},Parser.prototype.parseList=function(t,r){r||(r=t,t=this.parseUShort());for(var e=new Array(t),s=0;t>s;s++)e[s]=r.call(this);return e},Parser.prototype.parseRecordList=function(t,r){r||(r=t,t=this.parseUShort());for(var e=new Array(t),s=Object.keys(r),a=0;t>a;a++){for(var o={},i=0;i0?new Parser(this.data,this.offset+r).parseStruct(t):void 0},Parser.prototype.parseListOfLists=function(t){for(var r=this.parseOffset16List(),e=r.length,s=this.relativeOffset,a=new Array(e),o=0;e>o;o++){var i=r[o];if(0!==i)if(this.relativeOffset=i,t){for(var n=this.parseOffset16List(),f=new Array(n.length),p=0;pa;a++)s[a]={start:this.parseUShort(),end:this.parseUShort(),index:this.parseUShort()};return{format:2,ranges:s}}check.assert(!1,"0x"+t.toString(16)+": Coverage format must be 1 or 2.")},Parser.prototype.parseClassDef=function(){var t=this.offset+this.relativeOffset,r=this.parseUShort();return 1===r?{format:1,startGlyph:this.parseUShort(),classes:this.parseUShortList()}:2===r?{format:2,ranges:this.parseRecordList({start:Parser.uShort,end:Parser.uShort,classId:Parser.uShort})}:void check.assert(!1,"0x"+t.toString(16)+": ClassDef format must be 1 or 2.")},Parser.list=function(t,r){return function(){return this.parseList(t,r)}},Parser.recordList=function(t,r){return function(){return this.parseRecordList(t,r)}},Parser.pointer=function(t){return function(){return this.parsePointer(t)}},Parser.tag=Parser.prototype.parseTag,Parser.byte=Parser.prototype.parseByte,Parser.uShort=Parser.offset16=Parser.prototype.parseUShort,Parser.uShortList=Parser.prototype.parseUShortList,Parser.struct=Parser.prototype.parseStruct,Parser.coverage=Parser.prototype.parseCoverage,Parser.classDef=Parser.prototype.parseClassDef;var langSysTable={reserved:Parser.uShort,reqFeatureIndex:Parser.uShort,featureIndexes:Parser.uShortList};Parser.prototype.parseScriptList=function(){return this.parsePointer(Parser.recordList({tag:Parser.tag,script:Parser.pointer({defaultLangSys:Parser.pointer(langSysTable),langSysRecords:Parser.recordList({tag:Parser.tag,langSys:Parser.pointer(langSysTable)})})}))},Parser.prototype.parseFeatureList=function(){return this.parsePointer(Parser.recordList({tag:Parser.tag,feature:Parser.pointer({featureParams:Parser.offset16,lookupListIndexes:Parser.uShortList})}))},Parser.prototype.parseLookupList=function(t){return this.parsePointer(Parser.list(Parser.pointer(function(){var r=this.parseUShort();check.argument(r>=1&&8>=r,"GSUB lookup type "+r+" unknown.");var e=this.parseUShort(),s=16&e;return{lookupType:r,lookupFlag:e,subtables:this.parseList(Parser.pointer(t[r])),markFilteringSet:s?this.parseUShort():void 0}})))},exports.Parser=Parser; + +},{"./check":2}],11:[function(require,module,exports){ +"use strict";function Path(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}Path.prototype.moveTo=function(t,o){this.commands.push({type:"M",x:t,y:o})},Path.prototype.lineTo=function(t,o){this.commands.push({type:"L",x:t,y:o})},Path.prototype.curveTo=Path.prototype.bezierCurveTo=function(t,o,e,i,s,h){this.commands.push({type:"C",x1:t,y1:o,x2:e,y2:i,x:s,y:h})},Path.prototype.quadTo=Path.prototype.quadraticCurveTo=function(t,o,e,i){this.commands.push({type:"Q",x1:t,y1:o,x:e,y:i})},Path.prototype.close=Path.prototype.closePath=function(){this.commands.push({type:"Z"})},Path.prototype.extend=function(t){t.commands&&(t=t.commands),Array.prototype.push.apply(this.commands,t)},Path.prototype.draw=function(t){t.beginPath();for(var o=0;o=0&&e>0&&(t+=" "),t+=o(i)}return t}t=void 0!==t?t:2;for(var i="",s=0;sa;a++)if(t[a]!==e[a])return!1;return!0}function getSubstFormat(t,e,r){for(var a=t.subtables,s=0;si&&(i=-1-i,o.coverage.glyphs.splice(i,0,u),o.substitute.splice(i,0,0)),o.substitute[i]=e.by},Substitution.prototype.addAlternate=function(t,e,r,a){var s=this.getLookupTable(r,a,t,3,!0),o=getSubstFormat(s,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});check.assert(1===o.coverage.format,"Ligature: unable to modify coverage table format "+o.coverage.format);var u=e.sub,i=this.binSearch(o.coverage.glyphs,u);0>i&&(i=-1-i,o.coverage.glyphs.splice(i,0,u),o.alternateSets.splice(i,0,0)),o.alternateSets[i]=e.by},Substitution.prototype.addLigature=function(t,e,r,a){r=r||"DFLT",a=a||"DFLT";var s=this.getLookupTable(r,a,t,4,!0),o=s.subtables[0];o||(o={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},s.subtables[0]=o),check.assert(1===o.coverage.format,"Ligature: unable to modify coverage table format "+o.coverage.format);var u=e.sub[0],i=e.sub.slice(1),n={ligGlyph:e.by,components:i},g=this.binSearch(o.coverage.glyphs,u);if(g>=0){for(var l=o.ligatureSets[g],c=0;cs;s++)o[s+1]={name:e+s,type:"TABLE",value:a(t[s],s)};return o}function recordList(e,t,a){var r=t.length,o=[];o[0]={name:e+"Count",type:"USHORT",value:r};for(var s=0;r>s;s++)o=o.concat(a(t[s],s));return o}function Coverage(e){1===e.format?Table.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:1}].concat(ushortList("glyph",e.glyphs))):check.assert(!1,"Can't create coverage table format 2 yet.")}function ScriptList(e){Table.call(this,"scriptListTable",recordList("scriptRecord",e,function(e,t){var a=e.script,r=a.defaultLangSys;return check.assert(!!r,"Unable to write GSUB: script "+e.tag+" has no default language system."),[{name:"scriptTag"+t,type:"TAG",value:e.tag},{name:"script"+t,type:"TABLE",value:new Table("scriptTable",[{name:"defaultLangSys",type:"TABLE",value:new Table("defaultLangSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:r.reqFeatureIndex}].concat(ushortList("featureIndex",r.featureIndexes)))}].concat(recordList("langSys",a.langSysRecords,function(e,t){var a=e.langSys;return[{name:"langSysTag"+t,type:"TAG",value:e.tag},{name:"langSys"+t,type:"TABLE",value:new Table("langSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:a.reqFeatureIndex}].concat(ushortList("featureIndex",a.featureIndexes)))}]})))}]}))}function FeatureList(e){Table.call(this,"featureListTable",recordList("featureRecord",e,function(e,t){var a=e.feature;return[{name:"featureTag"+t,type:"TAG",value:e.tag},{name:"feature"+t,type:"TABLE",value:new Table("featureTable",[{name:"featureParams",type:"USHORT",value:a.featureParams}].concat(ushortList("lookupListIndex",a.lookupListIndexes)))}]}))}function LookupList(e,t){Table.call(this,"lookupListTable",tableList("lookup",e,function(e){var a=t[e.lookupType];return check.assert(!!a,"Unable to write GSUB lookup type "+e.lookupType+" tables."),new Table("lookupTable",[{name:"lookupType",type:"USHORT",value:e.lookupType},{name:"lookupFlag",type:"USHORT",value:e.lookupFlag}].concat(tableList("subtable",e.subtables,a)))}))}var check=require("./check"),encode=require("./types").encode,sizeOf=require("./types").sizeOf;Table.prototype.encode=function(){return encode.TABLE(this)},Table.prototype.sizeOf=function(){return sizeOf.TABLE(this)},Coverage.prototype=Object.create(Table.prototype),Coverage.prototype.constructor=Coverage,ScriptList.prototype=Object.create(Table.prototype),ScriptList.prototype.constructor=ScriptList,FeatureList.prototype=Object.create(Table.prototype),FeatureList.prototype.constructor=FeatureList,LookupList.prototype=Object.create(Table.prototype),LookupList.prototype.constructor=LookupList,exports.Record=exports.Table=Table,exports.Coverage=Coverage,exports.ScriptList=ScriptList,exports.FeatureList=FeatureList,exports.LookupList=LookupList,exports.ushortList=ushortList,exports.tableList=tableList,exports.recordList=recordList; + +},{"./check":2,"./types":32}],14:[function(require,module,exports){ +"use strict";function equals(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(var a=0;ar;r+=1)i.push(parse.getOffset(e,p,f)),p+=f;s=n+i[h]}else s=t+2;for(r=0;r>4,i=15&n;if(s===a)break;if(t+=r[s],i===a)break;t+=r[i]}return parseFloat(t)}function parseOperand(e,t){var a,r,n,s;if(28===t)return a=e.parseByte(),r=e.parseByte(),a<<8|r;if(29===t)return a=e.parseByte(),r=e.parseByte(),n=e.parseByte(),s=e.parseByte(),a<<24|r<<16|n<<8|s;if(30===t)return parseFloatOperand(e);if(t>=32&&246>=t)return t-139;if(t>=247&&250>=t)return a=e.parseByte(),256*(t-247)+a+108;if(t>=251&&254>=t)return a=e.parseByte(),256*-(t-251)-a-108;throw new Error("Invalid b0 "+t)}function entriesToObject(e){for(var t={},a=0;a=i?(12===i&&(i=1200+r.parseByte()),n.push([i,s]),s=[]):s.push(parseOperand(r,i))}return entriesToObject(n)}function getCFFString(e,t){return t=390>=t?encoding.cffStandardStrings[t]:e[t-391]}function interpretDict(e,t,a){for(var r={},n=0;nn;n+=1)s=o.parseSID(),h.push(getCFFString(r,s));else if(1===f)for(;h.length<=a;)for(s=o.parseSID(),i=o.parseCard8(),n=0;i>=n;n+=1)h.push(getCFFString(r,s)),s+=1;else{if(2!==f)throw new Error("Unknown charset format "+f);for(;h.length<=a;)for(s=o.parseSID(),i=o.parseCard16(),n=0;i>=n;n+=1)h.push(getCFFString(r,s)),s+=1}return h}function parseCFFEncoding(e,t,a){var r,n,s={},i=new parse.Parser(e,t),o=i.parseCard8();if(0===o){var h=i.parseCard8();for(r=0;h>r;r+=1)n=i.parseCard8(),s[n]=r}else{if(1!==o)throw new Error("Unknown encoding format "+o);var f=i.parseCard8();for(n=1,r=0;f>r;r+=1)for(var p=i.parseCard8(),u=i.parseCard8(),l=p;p+u>=l;l+=1)s[l]=n,n+=1}return new encoding.CffEncoding(s,a)}function parseCFFCharstring(e,t,a){function r(e,t){g&&p.closePath(),p.moveTo(e,t),g=!0}function n(){var t;t=u.length%2!==0,t&&!c&&(d=u.shift()+e.nominalWidthX),l+=u.length>>1,u.length=0,c=!0}function s(a){for(var y,b,C,T,F,I,D,x,k,S,E,O,R=0;R1&&!c&&(d=u.shift()+e.nominalWidthX,c=!0),m+=u.pop(),r(v,m);break;case 5:for(;u.length>0;)v+=u.shift(),m+=u.shift(),p.lineTo(v,m);break;case 6:for(;u.length>0&&(v+=u.shift(),p.lineTo(v,m),0!==u.length);)m+=u.shift(),p.lineTo(v,m);break;case 7:for(;u.length>0&&(m+=u.shift(),p.lineTo(v,m),0!==u.length);)v+=u.shift(),p.lineTo(v,m);break;case 8:for(;u.length>0;)i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f+u.shift(),p.curveTo(i,o,h,f,v,m);break;case 10:F=u.pop()+e.subrsBias,I=e.subrs[F],I&&s(I);break;case 11:return;case 12:switch(M=a[R],R+=1,M){case 35:i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),D=h+u.shift(),x=f+u.shift(),k=D+u.shift(),S=x+u.shift(),E=k+u.shift(),O=S+u.shift(),v=E+u.shift(),m=O+u.shift(),u.shift(),p.curveTo(i,o,h,f,D,x),p.curveTo(k,S,E,O,v,m);break;case 34:i=v+u.shift(),o=m,h=i+u.shift(),f=o+u.shift(),D=h+u.shift(),x=f,k=D+u.shift(),S=f,E=k+u.shift(),O=m,v=E+u.shift(),p.curveTo(i,o,h,f,D,x),p.curveTo(k,S,E,O,v,m);break;case 36:i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),D=h+u.shift(),x=f,k=D+u.shift(),S=f,E=k+u.shift(),O=S+u.shift(),v=E+u.shift(),p.curveTo(i,o,h,f,D,x),p.curveTo(k,S,E,O,v,m);break;case 37:i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),D=h+u.shift(),x=f+u.shift(),k=D+u.shift(),S=x+u.shift(),E=k+u.shift(),O=S+u.shift(),Math.abs(E-v)>Math.abs(O-m)?v=E+u.shift():m=O+u.shift(),p.curveTo(i,o,h,f,D,x),p.curveTo(k,S,E,O,v,m);break;default:console.log("Glyph "+t.index+": unknown operator 1200"+M),u.length=0}break;case 14:u.length>0&&!c&&(d=u.shift()+e.nominalWidthX,c=!0),g&&(p.closePath(),g=!1);break;case 18:n();break;case 19:case 20:n(),R+=l+7>>3;break;case 21:u.length>2&&!c&&(d=u.shift()+e.nominalWidthX,c=!0),m+=u.pop(),v+=u.pop(),r(v,m);break;case 22:u.length>1&&!c&&(d=u.shift()+e.nominalWidthX,c=!0),v+=u.pop(),r(v,m);break;case 23:n();break;case 24:for(;u.length>2;)i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f+u.shift(),p.curveTo(i,o,h,f,v,m);v+=u.shift(),m+=u.shift(),p.lineTo(v,m);break;case 25:for(;u.length>6;)v+=u.shift(),m+=u.shift(),p.lineTo(v,m);i=v+u.shift(),o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f+u.shift(),p.curveTo(i,o,h,f,v,m);break;case 26:for(u.length%2&&(v+=u.shift());u.length>0;)i=v,o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h,m=f+u.shift(),p.curveTo(i,o,h,f,v,m);break;case 27:for(u.length%2&&(m+=u.shift());u.length>0;)i=v+u.shift(),o=m,h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f,p.curveTo(i,o,h,f,v,m);break;case 28:y=a[R],b=a[R+1],u.push((y<<24|b<<16)>>16),R+=2;break;case 29:F=u.pop()+e.gsubrsBias,I=e.gsubrs[F],I&&s(I);break;case 30:for(;u.length>0&&(i=v,o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f+(1===u.length?u.shift():0),p.curveTo(i,o,h,f,v,m),0!==u.length);)i=v+u.shift(),o=m,h=i+u.shift(),f=o+u.shift(),m=f+u.shift(),v=h+(1===u.length?u.shift():0),p.curveTo(i,o,h,f,v,m);break;case 31:for(;u.length>0&&(i=v+u.shift(),o=m,h=i+u.shift(),f=o+u.shift(),m=f+u.shift(),v=h+(1===u.length?u.shift():0),p.curveTo(i,o,h,f,v,m),0!==u.length);)i=v,o=m+u.shift(),h=i+u.shift(),f=o+u.shift(),v=h+u.shift(),m=f+(1===u.length?u.shift():0),p.curveTo(i,o,h,f,v,m);break;default:32>M?console.log("Glyph "+t.index+": unknown operator "+M):247>M?u.push(M-139):251>M?(y=a[R],R+=1,u.push(256*(M-247)+y+108)):255>M?(y=a[R],R+=1,u.push(256*-(M-251)-y-108)):(y=a[R],b=a[R+1],C=a[R+2],T=a[R+3],R+=4,u.push((y<<24|b<<16|C<<8|T)/65536))}}}var i,o,h,f,p=new path.Path,u=[],l=0,c=!1,d=e.defaultWidthX,g=!1,v=0,m=0;return s(a),t.advanceWidth=d,p}function calcCFFSubroutineBias(e){var t;return t=e.length<1240?107:e.length<33900?1131:32768}function parseCFFTable(e,t,a){a.tables.cff={};var r=parseCFFHeader(e,t),n=parseCFFIndex(e,r.endOffset,parse.bytesToString),s=parseCFFIndex(e,n.endOffset),i=parseCFFIndex(e,s.endOffset,parse.bytesToString),o=parseCFFIndex(e,i.endOffset);a.gsubrs=o.objects,a.gsubrsBias=calcCFFSubroutineBias(a.gsubrs);var h=new DataView(new Uint8Array(s.objects[0]).buffer),f=parseCFFTopDict(h,i.objects);a.tables.cff.topDict=f;var p=t+f["private"][1],u=parseCFFPrivateDict(e,p,f["private"][0],i.objects);if(a.defaultWidthX=u.defaultWidthX,a.nominalWidthX=u.nominalWidthX,0!==u.subrs){var l=p+u.subrs,c=parseCFFIndex(e,l);a.subrs=c.objects,a.subrsBias=calcCFFSubroutineBias(a.subrs)}else a.subrs=[],a.subrsBias=0;var d=parseCFFIndex(e,t+f.charStrings);a.nGlyphs=d.objects.length;var g=parseCFFCharset(e,t+f.charset,a.nGlyphs,i.objects);a.cffEncoding=0===f.encoding?new encoding.CffEncoding(encoding.cffStandardEncoding,g):1===f.encoding?new encoding.CffEncoding(encoding.cffExpertEncoding,g):parseCFFEncoding(e,t+f.encoding,g),a.encoding=a.encoding||a.cffEncoding,a.glyphs=new glyphset.GlyphSet(a);for(var v=0;v=0&&(a=r),r=t.indexOf(e),r>=0?a=r+encoding.cffStandardStrings.length:(a=encoding.cffStandardStrings.length+t.length,t.push(e)),a}function makeHeader(){return new table.Record("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function makeNameIndex(e){var t=new table.Record("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);t.names=[];for(var a=0;ar;r+=1)for(var n=a.parseULong(),s=a.parseULong(),o=a.parseULong(),l=n;s>=l;l+=1)e.glyphIndexMap[l]=o,o++}function parseCmapTableFormat4(e,a,r,t,n){var s;e.length=a.parseUShort(),e.language=a.parseUShort();var o;e.segCount=o=a.parseUShort()>>1,a.skip("uShort",3),e.glyphIndexMap={};var l=new parse.Parser(r,t+n+14),p=new parse.Parser(r,t+n+16+2*o),g=new parse.Parser(r,t+n+16+4*o),m=new parse.Parser(r,t+n+16+6*o),u=t+n+16+8*o;for(s=0;o-1>s;s+=1)for(var h,f=l.parseUShort(),c=p.parseUShort(),d=g.parseShort(),i=m.parseUShort(),v=c;f>=v;v+=1)0!==i?(u=m.offset+m.relativeOffset-2,u+=i,u+=2*(v-c),h=parse.getUShort(r,u),0!==h&&(h=h+d&65535)):h=v+d&65535,e.glyphIndexMap[v]=h}function parseCmapTable(e,a){var r,t={};t.version=parse.getUShort(e,a),check.argument(0===t.version,"cmap table version should be 0."),t.numTables=parse.getUShort(e,a+2);var n=-1;for(r=t.numTables-1;r>=0;r-=1){var s=parse.getUShort(e,a+4+8*r),o=parse.getUShort(e,a+4+8*r+2);if(3===s&&(0===o||1===o||10===o)){n=parse.getULong(e,a+4+8*r+4);break}}if(-1===n)return null;var l=new parse.Parser(e,a+n);if(t.format=l.parseUShort(),12===t.format)parseCmapTableFormat12(t,l);else{if(4!==t.format)throw new Error("Only format 4 and 12 cmap tables are supported.");parseCmapTableFormat4(t,l,e,a,n)}return t}function addSegment(e,a,r){e.segments.push({end:a,start:a,delta:-(a-r),offset:0})}function addTerminatorSegment(e){e.segments.push({end:65535,start:65535,delta:1,offset:0})}function makeCmapTable(e){var a,r=new table.Table("cmap",[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:1},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:12},{name:"format",type:"USHORT",value:4},{name:"length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);for(r.segments=[],a=0;aa;a+=1){var u=r.segments[a];o=o.concat({name:"end_"+a,type:"USHORT",value:u.end}),l=l.concat({name:"start_"+a,type:"USHORT",value:u.start}),p=p.concat({name:"idDelta_"+a,type:"SHORT",value:u.delta}),g=g.concat({name:"idRangeOffset_"+a,type:"USHORT",value:u.offset}),void 0!==u.glyphId&&(m=m.concat({name:"glyph_"+a,type:"USHORT",value:u.glyphId}))}return r.fields=r.fields.concat(o),r.fields.push({name:"reservedPad",type:"USHORT",value:0}),r.fields=r.fields.concat(l),r.fields=r.fields.concat(p),r.fields=r.fields.concat(g),r.fields=r.fields.concat(m),r.length=14+2*o.length+2+2*l.length+2*p.length+2*g.length+2*m.length,r}var check=require("../check"),parse=require("../parse"),table=require("../table");exports.parse=parseCmapTable,exports.make=makeCmapTable; + +},{"../check":2,"../parse":10,"../table":13}],16:[function(require,module,exports){ +"use strict";function addName(e,a){var r=JSON.stringify(e),n=256;for(var t in a){var s=parseInt(t);if(s&&!(256>s)){if(JSON.stringify(a[t])===r)return s;s>=n&&(n=s+1)}}return a[n]=e,n}function makeFvarAxis(e,a,r){var n=addName(a.name,r);return[{name:"tag_"+e,type:"TAG",value:a.tag},{name:"minValue_"+e,type:"FIXED",value:a.minValue<<16},{name:"defaultValue_"+e,type:"FIXED",value:a.defaultValue<<16},{name:"maxValue_"+e,type:"FIXED",value:a.maxValue<<16},{name:"flags_"+e,type:"USHORT",value:0},{name:"nameID_"+e,type:"USHORT",value:n}]}function parseFvarAxis(e,a,r){var n={},t=new parse.Parser(e,a);return n.tag=t.parseTag(),n.minValue=t.parseFixed(),n.defaultValue=t.parseFixed(),n.maxValue=t.parseFixed(),t.skip("uShort",1),n.name=r[t.parseUShort()]||{},n}function makeFvarInstance(e,a,r,n){for(var t=addName(a.name,n),s=[{name:"nameID_"+e,type:"USHORT",value:t},{name:"flags_"+e,type:"USHORT",value:0}],u=0;uo;o++)v.push(parseFvarAxis(e,a+s+o*i,r));for(var m=[],f=a+s+u*i,c=0;p>c;c++)m.push(parseFvarInstance(e,f+c*l,v,r));return{axes:v,instances:m}}var check=require("../check"),parse=require("../parse"),table=require("../table");exports.make=makeFvarTable,exports.parse=parseFvarTable; + +},{"../check":2,"../parse":10,"../table":13}],17:[function(require,module,exports){ +"use strict";function parseGlyphCoordinate(e,r,t,o,a){var n;return(r&o)>0?(n=e.parseByte(),0===(r&a)&&(n=-n),n=t+n):n=(r&a)>0?t:t+e.parseShort(),n}function parseGlyph(e,r,t){var o=new parse.Parser(r,t);e.numberOfContours=o.parseShort(),e._xMin=o.parseShort(),e._yMin=o.parseShort(),e._xMax=o.parseShort(),e._yMax=o.parseShort();var a,n;if(e.numberOfContours>0){var s,p=e.endPointIndices=[];for(s=0;ss;s+=1)if(n=o.parseByte(),a.push(n),(8&n)>0)for(var h=o.parseByte(),l=0;h>l;l+=1)a.push(n),s+=1;if(check.argument(a.length===i,"Bad flags."),p.length>0){var u,c=[];if(i>0){for(s=0;i>s;s+=1)n=a[s],u={},u.onCurve=!!(1&n),u.lastPointOfContour=p.indexOf(s)>=0,c.push(u);var y=0;for(s=0;i>s;s+=1)n=a[s],u=c[s],u.x=parseGlyphCoordinate(o,n,y,2,16),y=u.x;var f=0;for(s=0;i>s;s+=1)n=a[s],u=c[s],u.y=parseGlyphCoordinate(o,n,f,4,32),f=u.y}e.points=c}else e.points=[]}else if(0===e.numberOfContours)e.points=[];else{e.isComposite=!0,e.points=[],e.components=[];for(var v=!0;v;){a=o.parseUShort();var x={glyphIndex:o.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(1&a)>0?(2&a)>0?(x.dx=o.parseShort(),x.dy=o.parseShort()):x.matchedPoints=[o.parseUShort(),o.parseUShort()]:(2&a)>0?(x.dx=o.parseChar(),x.dy=o.parseChar()):x.matchedPoints=[o.parseByte(),o.parseByte()],(8&a)>0?x.xScale=x.yScale=o.parseF2Dot14():(64&a)>0?(x.xScale=o.parseF2Dot14(),x.yScale=o.parseF2Dot14()):(128&a)>0&&(x.xScale=o.parseF2Dot14(),x.scale01=o.parseF2Dot14(),x.scale10=o.parseF2Dot14(),x.yScale=o.parseF2Dot14()),e.components.push(x),v=!!(32&a)}}}function transformPoints(e,r){for(var t=[],o=0;or.points.length-1||o.matchedPoints[1]>a.points.length-1)throw Error("Matched points out of range in "+r.name);var s=r.points[o.matchedPoints[0]],p=a.points[o.matchedPoints[1]],i={xScale:o.xScale,scale01:o.scale01,scale10:o.scale10,yScale:o.yScale,dx:0,dy:0};p=transformPoints([p],i)[0],i.dx=s.x-p.x,i.dy=s.y-p.y,n=transformPoints(a.points,i)}r.points=r.points.concat(n)}}return getPath(r.points)}function parseGlyfTable(e,r,t,o){var a,n=new glyphset.GlyphSet(o);for(a=0;ao;o++)t[a.parseTag()]={offset:a.parseUShort()};return t}function parseCoverageTable(r,e){var a=new parse.Parser(r,e),s=a.parseUShort(),t=a.parseUShort();if(1===s)return a.parseUShortList(t);if(2===s){for(var o=[];t--;)for(var p=a.parseUShort(),n=a.parseUShort(),f=a.parseUShort(),i=p;n>=i;i++)o[f++]=i;return o}}function parseClassDefTable(r,e){var a=new parse.Parser(r,e),s=a.parseUShort();if(1===s){var t=a.parseUShort(),o=a.parseUShort(),p=a.parseUShortList(o);return function(r){return p[r-t]||0}}if(2===s){for(var n=a.parseUShort(),f=[],i=[],h=[],S=0;n>S;S++)f[S]=a.parseUShort(),i[S]=a.parseUShort(),h[S]=a.parseUShort();return function(r){for(var e=0,a=f.length-1;a>e;){var s=e+a+1>>1;rU;U++){var l=v[U],g=h[l];if(!g){g={},t.relativeOffset=l;for(var T=t.parseUShort();T--;){var c=t.parseUShort();f&&(a=t.parseShort()),i&&(s=t.parseShort()),g[c]=a}}u[n[U]]=g}return function(r,e){var a=u[r];return a?a[e]:void 0}}if(2===o){for(var b=t.parseUShort(),P=t.parseUShort(),L=t.parseUShort(),k=t.parseUShort(),d=parseClassDefTable(r,e+b),w=parseClassDefTable(r,e+P),O=[],C=0;L>C;C++)for(var G=O[C]=[],K=0;k>K;K++)f&&(a=t.parseShort()),i&&(s=t.parseShort()),G[K]=a;var V={};for(C=0;Ch;h++)i.push(parsePairPosSubTable(r,e+n[h]));f.getKerningValue=function(r,e){for(var a=i.length;a--;){var s=i[a](r,e);if(void 0!==s)return s}return 0}}return f}function parseGposTable(r,e,a){var s=new parse.Parser(r,e),t=s.parseFixed();check.argument(1===t,"Unsupported GPOS table version."),parseTaggedListTable(r,e+s.parseUShort()),parseTaggedListTable(r,e+s.parseUShort());var o=s.parseUShort();s.relativeOffset=o;for(var p=s.parseUShort(),n=s.parseOffset16List(p),f=e+o,i=0;p>i;i++){var h=parseLookupTable(r,f+n[i]);2!==h.lookupType||a.getGposKerningValue||(a.getGposKerningValue=h.getKerningValue)}}var check=require("../check"),parse=require("../parse");exports.parse=parseGposTable; + +},{"../check":2,"../parse":10}],19:[function(require,module,exports){ +"use strict";function parseGsubTable(e,t){t=t||0;var s=new Parser(e,t),r=s.parseVersion();return check.argument(1===r,"Unsupported GSUB table version."),{version:r,scripts:s.parseScriptList(),features:s.parseFeatureList(),lookups:s.parseLookupList(subtableParsers)}}function makeGsubTable(e){return new table.Table("GSUB",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new table.ScriptList(e.scripts)},{name:"features",type:"TABLE",value:new table.FeatureList(e.features)},{name:"lookups",type:"TABLE",value:new table.LookupList(e.lookups,subtableMakers)}])}var check=require("../check"),Parser=require("../parse").Parser,subtableParsers=new Array(9),table=require("../table");subtableParsers[1]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();return 1===t?{substFormat:1,coverage:this.parsePointer(Parser.coverage),deltaGlyphId:this.parseUShort()}:2===t?{substFormat:2,coverage:this.parsePointer(Parser.coverage),substitute:this.parseOffset16List()}:void check.assert(!1,"0x"+e.toString(16)+": lookup type 1 format must be 1 or 2.")},subtableParsers[2]=function(){var e=this.parseUShort();return check.argument(1===e,"GSUB Multiple Substitution Subtable identifier-format must be 1"),{substFormat:e,coverage:this.parsePointer(Parser.coverage),sequences:this.parseListOfLists()}},subtableParsers[3]=function(){var e=this.parseUShort();return check.argument(1===e,"GSUB Alternate Substitution Subtable identifier-format must be 1"),{substFormat:e,coverage:this.parsePointer(Parser.coverage),alternateSets:this.parseListOfLists()}},subtableParsers[4]=function(){var e=this.parseUShort();return check.argument(1===e,"GSUB ligature table identifier-format must be 1"),{substFormat:e,coverage:this.parsePointer(Parser.coverage),ligatureSets:this.parseListOfLists(function(){return{ligGlyph:this.parseUShort(),components:this.parseUShortList(this.parseUShort()-1)}})}};var lookupRecordDesc={sequenceIndex:Parser.uShort,lookupListIndex:Parser.uShort};subtableParsers[5]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(1===t)return{substFormat:t,coverage:this.parsePointer(Parser.coverage),ruleSets:this.parseListOfLists(function(){var e=this.parseUShort(),t=this.parseUShort();return{input:this.parseUShortList(e-1),lookupRecords:this.parseRecordList(t,lookupRecordDesc)}})};if(2===t)return{substFormat:t,coverage:this.parsePointer(Parser.coverage),classDef:this.parsePointer(Parser.classDef),classSets:this.parseListOfLists(function(){var e=this.parseUShort(),t=this.parseUShort();return{classes:this.parseUShortList(e-1),lookupRecords:this.parseRecordList(t,lookupRecordDesc)}})};if(3===t){var s=this.parseUShort(),r=this.parseUShort();return{substFormat:t,coverages:this.parseList(s,Parser.pointer(Parser.coverage)),lookupRecords:this.parseRecordList(r,lookupRecordDesc)}}check.assert(!1,"0x"+e.toString(16)+": lookup type 5 format must be 1, 2 or 3.")},subtableParsers[6]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();return 1===t?{substFormat:1,coverage:this.parsePointer(Parser.coverage),chainRuleSets:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(lookupRecordDesc)}})}:2===t?{substFormat:2,coverage:this.parsePointer(Parser.coverage),backtrackClassDef:this.parsePointer(Parser.classDef),inputClassDef:this.parsePointer(Parser.classDef),lookaheadClassDef:this.parsePointer(Parser.classDef),chainClassSet:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(lookupRecordDesc)}})}:3===t?{substFormat:3,backtrackCoverage:this.parseList(Parser.pointer(Parser.coverage)),inputCoverage:this.parseList(Parser.pointer(Parser.coverage)),lookaheadCoverage:this.parseList(Parser.pointer(Parser.coverage)),lookupRecords:this.parseRecordList(lookupRecordDesc)}:void check.assert(!1,"0x"+e.toString(16)+": lookup type 6 format must be 1, 2 or 3.")},subtableParsers[7]=function(){var e=this.parseUShort();check.argument(1===e,"GSUB Extension Substitution subtable identifier-format must be 1");var t=this.parseUShort(),s=new Parser(this.data,this.offset+this.parseULong());return{substFormat:1,lookupType:t,extension:subtableParsers[t].call(s)}},subtableParsers[8]=function(){var e=this.parseUShort();return check.argument(1===e,"GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"),{substFormat:e,coverage:this.parsePointer(Parser.coverage),backtrackCoverage:this.parseList(Parser.pointer(Parser.coverage)),lookaheadCoverage:this.parseList(Parser.pointer(Parser.coverage)),substitutes:this.parseUShortList()}};var subtableMakers=new Array(9);subtableMakers[1]=function(e){return 1===e.substFormat?new table.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new table.Coverage(e.coverage)},{name:"deltaGlyphID",type:"USHORT",value:e.deltaGlyphId}]):new table.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:2},{name:"coverage",type:"TABLE",value:new table.Coverage(e.coverage)}].concat(table.ushortList("substitute",e.substitute)))},subtableMakers[3]=function(e){return check.assert(1===e.substFormat,"Lookup type 3 substFormat must be 1."),new table.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new table.Coverage(e.coverage)}].concat(table.tableList("altSet",e.alternateSets,function(e){return new table.Table("alternateSetTable",table.ushortList("alternate",e))})))},subtableMakers[4]=function(e){return check.assert(1===e.substFormat,"Lookup type 4 substFormat must be 1."),new table.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new table.Coverage(e.coverage)}].concat(table.tableList("ligSet",e.ligatureSets,function(e){return new table.Table("ligatureSetTable",table.tableList("ligature",e,function(e){return new table.Table("ligatureTable",[{name:"ligGlyph",type:"USHORT",value:e.ligGlyph}].concat(table.ushortList("component",e.components,e.components.length+1)))}))})))},exports.parse=parseGsubTable,exports.make=makeGsubTable; + +},{"../check":2,"../parse":10,"../table":13}],20:[function(require,module,exports){ +"use strict";function parseHeadTable(e,a){var t={},r=new parse.Parser(e,a);return t.version=r.parseVersion(),t.fontRevision=Math.round(1e3*r.parseFixed())/1e3,t.checkSumAdjustment=r.parseULong(),t.magicNumber=r.parseULong(),check.argument(1594834165===t.magicNumber,"Font header has wrong magic number."),t.flags=r.parseUShort(),t.unitsPerEm=r.parseUShort(),t.created=r.parseLongDateTime(),t.modified=r.parseLongDateTime(),t.xMin=r.parseShort(),t.yMin=r.parseShort(),t.xMax=r.parseShort(),t.yMax=r.parseShort(),t.macStyle=r.parseUShort(),t.lowestRecPPEM=r.parseUShort(),t.fontDirectionHint=r.parseShort(),t.indexToLocFormat=r.parseShort(),t.glyphDataFormat=r.parseShort(),t}function makeHeadTable(e){var a=Math.round((new Date).getTime()/1e3)+2082844800,t=a;return e.createdTimestamp&&(t=e.createdTimestamp+2082844800),new table.Table("head",[{name:"version",type:"FIXED",value:65536},{name:"fontRevision",type:"FIXED",value:65536},{name:"checkSumAdjustment",type:"ULONG",value:0},{name:"magicNumber",type:"ULONG",value:1594834165},{name:"flags",type:"USHORT",value:0},{name:"unitsPerEm",type:"USHORT",value:1e3},{name:"created",type:"LONGDATETIME",value:t},{name:"modified",type:"LONGDATETIME",value:a},{name:"xMin",type:"SHORT",value:0},{name:"yMin",type:"SHORT",value:0},{name:"xMax",type:"SHORT",value:0},{name:"yMax",type:"SHORT",value:0},{name:"macStyle",type:"USHORT",value:0},{name:"lowestRecPPEM",type:"USHORT",value:0},{name:"fontDirectionHint",type:"SHORT",value:2},{name:"indexToLocFormat",type:"SHORT",value:0},{name:"glyphDataFormat",type:"SHORT",value:0}],e)}var check=require("../check"),parse=require("../parse"),table=require("../table");exports.parse=parseHeadTable,exports.make=makeHeadTable; + +},{"../check":2,"../parse":10,"../table":13}],21:[function(require,module,exports){ +"use strict";function parseHheaTable(e,a){var r={},t=new parse.Parser(e,a);return r.version=t.parseVersion(),r.ascender=t.parseShort(),r.descender=t.parseShort(),r.lineGap=t.parseShort(),r.advanceWidthMax=t.parseUShort(),r.minLeftSideBearing=t.parseShort(),r.minRightSideBearing=t.parseShort(),r.xMaxExtent=t.parseShort(),r.caretSlopeRise=t.parseShort(),r.caretSlopeRun=t.parseShort(),r.caretOffset=t.parseShort(),t.relativeOffset+=8,r.metricDataFormat=t.parseShort(),r.numberOfHMetrics=t.parseUShort(),r}function makeHheaTable(e){return new table.Table("hhea",[{name:"version",type:"FIXED",value:65536},{name:"ascender",type:"FWORD",value:0},{name:"descender",type:"FWORD",value:0},{name:"lineGap",type:"FWORD",value:0},{name:"advanceWidthMax",type:"UFWORD",value:0},{name:"minLeftSideBearing",type:"FWORD",value:0},{name:"minRightSideBearing",type:"FWORD",value:0},{name:"xMaxExtent",type:"FWORD",value:0},{name:"caretSlopeRise",type:"SHORT",value:1},{name:"caretSlopeRun",type:"SHORT",value:0},{name:"caretOffset",type:"SHORT",value:0},{name:"reserved1",type:"SHORT",value:0},{name:"reserved2",type:"SHORT",value:0},{name:"reserved3",type:"SHORT",value:0},{name:"reserved4",type:"SHORT",value:0},{name:"metricDataFormat",type:"SHORT",value:0},{name:"numberOfHMetrics",type:"USHORT",value:0}],e)}var parse=require("../parse"),table=require("../table");exports.parse=parseHheaTable,exports.make=makeHheaTable; + +},{"../parse":10,"../table":13}],22:[function(require,module,exports){ +"use strict";function parseHmtxTable(e,a,r,t,s){for(var i,l,n=new parse.Parser(e,a),p=0;t>p;p+=1){r>p&&(i=n.parseUShort(),l=n.parseShort());var d=s.get(p);d.advanceWidth=i,d.leftSideBearing=l}}function makeHmtxTable(e){for(var a=new table.Table("hmtx",[]),r=0;rn;n+=1){var h=s.parseUShort(),u=s.parseUShort(),c=s.parseShort();a[h+","+u]=c}return a}var check=require("../check"),parse=require("../parse");exports.parse=parseKernTable; + +},{"../check":2,"../parse":10}],24:[function(require,module,exports){ +"use strict";function parseLocaTable(r,a,e,s){for(var p=new parse.Parser(r,a),o=s?p.parseUShort:p.parseULong,t=[],c=0;e+1>c;c+=1){var n=o.call(p);s&&(n*=2),t.push(n)}return t}var parse=require("../parse");exports.parse=parseLocaTable; + +},{"../parse":10}],25:[function(require,module,exports){ +"use strict";function makeLtagTable(e){for(var a=new table.Table("ltag",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"numTags",type:"ULONG",value:e.length}]),r="",t=12+4*e.length,n=0;ns&&(s=r.length,r+=e[n]),a.fields.push({name:"offset "+n,type:"USHORT",value:t+s}),a.fields.push({name:"length "+n,type:"USHORT",value:e[n].length})}return a.fields.push({name:"stringPool",type:"CHARARRAY",value:r}),a}function parseLtagTable(e,a){var r=new parse.Parser(e,a),t=r.parseULong();check.argument(1===t,"Unsupported ltag table version."),r.skip("uLong",1);for(var n=r.parseULong(),s=[],l=0;n>l;l++){for(var p="",u=a+r.parseUShort(),g=r.parseUShort(),o=u;u+g>o;++o)p+=String.fromCharCode(e.getInt8(o));s.push(p)}return s}var check=require("../check"),parse=require("../parse"),table=require("../table");exports.make=makeLtagTable,exports.parse=parseLtagTable; + +},{"../check":2,"../parse":10,"../table":13}],26:[function(require,module,exports){ +"use strict";function parseMaxpTable(e,a){var r={},s=new parse.Parser(e,a);return r.version=s.parseVersion(),r.numGlyphs=s.parseUShort(),1===r.version&&(r.maxPoints=s.parseUShort(),r.maxContours=s.parseUShort(),r.maxCompositePoints=s.parseUShort(),r.maxCompositeContours=s.parseUShort(),r.maxZones=s.parseUShort(),r.maxTwilightPoints=s.parseUShort(),r.maxStorage=s.parseUShort(),r.maxFunctionDefs=s.parseUShort(),r.maxInstructionDefs=s.parseUShort(),r.maxStackElements=s.parseUShort(),r.maxSizeOfInstructions=s.parseUShort(),r.maxComponentElements=s.parseUShort(),r.maxComponentDepth=s.parseUShort()),r}function makeMaxpTable(e){return new table.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:e}])}var parse=require("../parse"),table=require("../table");exports.parse=parseMaxpTable,exports.make=makeMaxpTable; + +},{"../parse":10,"../table":13}],27:[function(require,module,exports){ +"use strict";function parseMetaTable(e,a){var r=new parse.Parser(e,a),t=r.parseULong();check.argument(1===t,"Unsupported META table version."),r.parseULong(),r.parseULong();for(var s=r.parseULong(),n={},p=0;s>p;p++){var l=r.parseTag(),u=r.parseULong(),o=r.parseULong(),v=decode.UTF8(e,a+u,o);n[l]=v}return n}function makeMetaTable(e){var a=Object.keys(e).length,r="",t=16+12*a,s=new table.Table("meta",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"offset",type:"ULONG",value:t},{name:"numTags",type:"ULONG",value:a}]);for(var n in e){var p=r.length;r+=e[n],s.fields.push({name:"tag "+n,type:"TAG",value:n}),s.fields.push({name:"offset "+n,type:"ULONG",value:t+p}),s.fields.push({name:"length "+n,type:"ULONG",value:e[n].length})}return s.fields.push({name:"stringPool",type:"CHARARRAY",value:r}),s}var types=require("../types"),decode=types.decode,check=require("../check"),parse=require("../parse"),table=require("../table");exports.parse=parseMetaTable,exports.make=makeMetaTable; + +},{"../check":2,"../parse":10,"../table":13,"../types":32}],28:[function(require,module,exports){ +"use strict";function getLanguageCode(e,a,r){switch(e){case 0:if(65535===a)return"und";if(r)return r[a];break;case 1:return macLanguages[a];case 3:return windowsLanguages[a]}return void 0}function getEncoding(e,a,r){switch(e){case 0:return utf16;case 1:return macLanguageEncodings[r]||macScriptEncodings[a];case 3:if(1===a||10===a)return utf16}return void 0}function parseNameTable(e,a,r){for(var n={},t=new parse.Parser(e,a),s=t.parseUShort(),m=t.parseUShort(),i=t.offset+t.parseUShort(),c=0;m>c;c++){var o=t.parseUShort(),u=t.parseUShort(),l=t.parseUShort(),g=t.parseUShort(),d=nameTableNames[g]||g,f=t.parseUShort(),p=t.parseUShort(),h=getLanguageCode(o,l,r),v=getEncoding(o,u,l);if(void 0!==v&&void 0!==h){var x;if(x=v===utf16?decode.UTF16(e,i+p,f):decode.MACSTRING(e,i+p,f,v)){var y=n[d];void 0===y&&(y=n[d]={}),y[h]=x}}}var b=0;return 1===s&&(b=t.parseUShort()),n}function reverseDict(e){var a={};for(var r in e)a[e[r]]=parseInt(r);return a}function makeNameRecord(e,a,r,n,t,s){return new table.Record("NameRecord",[{name:"platformID",type:"USHORT",value:e},{name:"encodingID",type:"USHORT",value:a},{name:"languageID",type:"USHORT",value:r},{name:"nameID",type:"USHORT",value:n},{name:"length",type:"USHORT",value:t},{name:"offset",type:"USHORT",value:s}])}function findSubArray(e,a){var r=e.length,n=a.length-r+1;e:for(var t=0;n>t;t++)for(;n>t;t++){for(var s=0;r>s;s++)if(a[t+s]!==e[s])continue e;return t}return-1}function addStringToPool(e,a){var r=findSubArray(e,a);if(0>r){r=a.length;for(var n=0,t=e.length;t>n;++n)a.push(e[n])}return r}function makeNameTable(e,a){var r,n=[],t={},s=reverseDict(nameTableNames);for(var m in e){var i=s[m];if(void 0===i&&(i=m),r=parseInt(i),isNaN(r))throw new Error('Name table entry "'+m+'" does not exist, see nameTableNames for complete list.');t[r]=e[m],n.push(r)}for(var c=reverseDict(macLanguages),o=reverseDict(windowsLanguages),u=[],l=[],g=0;gv&&(v=a.length,a.push(f)),x=4,b=encode.UTF16(p));var k=addStringToPool(b,l);u.push(makeNameRecord(h,x,v,r,b.length,k));var S=o[f];if(void 0!==S){var T=encode.UTF16(p),N=addStringToPool(T,l);u.push(makeNameRecord(3,1,S,r,T.length,N))}}}u.sort(function(e,a){return e.platformID-a.platformID||e.encodingID-a.encodingID||e.languageID-a.languageID||e.nameID-a.nameID});for(var U=new table.Table("name",[{name:"format",type:"USHORT",value:0},{name:"count",type:"USHORT",value:u.length},{name:"stringOffset",type:"USHORT",value:6+12*u.length}]),I=0;I=a.begin&&et;t++)a.panose[t]=i.parseByte();return a.ulUnicodeRange1=i.parseULong(),a.ulUnicodeRange2=i.parseULong(),a.ulUnicodeRange3=i.parseULong(),a.ulUnicodeRange4=i.parseULong(),a.achVendID=String.fromCharCode(i.parseByte(),i.parseByte(),i.parseByte(),i.parseByte()),a.fsSelection=i.parseUShort(),a.usFirstCharIndex=i.parseUShort(),a.usLastCharIndex=i.parseUShort(),a.sTypoAscender=i.parseShort(),a.sTypoDescender=i.parseShort(),a.sTypoLineGap=i.parseShort(),a.usWinAscent=i.parseUShort(),a.usWinDescent=i.parseUShort(),a.version>=1&&(a.ulCodePageRange1=i.parseULong(),a.ulCodePageRange2=i.parseULong()),a.version>=2&&(a.sxHeight=i.parseShort(),a.sCapHeight=i.parseShort(),a.usDefaultChar=i.parseUShort(),a.usBreakChar=i.parseUShort(),a.usMaxContent=i.parseUShort()),a}function makeOS2Table(e){return new table.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],e)}var parse=require("../parse"),table=require("../table"),unicodeRanges=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];exports.unicodeRanges=unicodeRanges,exports.getUnicodeRange=getUnicodeRange,exports.parse=parseOS2Table,exports.make=makeOS2Table; + +},{"../parse":10,"../table":13}],30:[function(require,module,exports){ +"use strict";function parsePostTable(e,a){var r,n={},s=new parse.Parser(e,a);switch(n.version=s.parseVersion(),n.italicAngle=s.parseFixed(),n.underlinePosition=s.parseShort(),n.underlineThickness=s.parseShort(),n.isFixedPitch=s.parseULong(),n.minMemType42=s.parseULong(),n.maxMemType42=s.parseULong(),n.minMemType1=s.parseULong(),n.maxMemType1=s.parseULong(),n.version){case 1:n.names=encoding.standardNames.slice();break;case 2:for(n.numberOfGlyphs=s.parseUShort(),n.glyphNameIndex=new Array(n.numberOfGlyphs),r=0;r=encoding.standardNames.length){var p=s.parseChar();n.names.push(s.parseString(p))}break;case 2.5:for(n.numberOfGlyphs=s.parseUShort(),n.offset=new Array(n.numberOfGlyphs),r=0;ra.value.tag?1:-1}),a.fields=a.fields.concat(t),a.fields=a.fields.concat(r),a}function metricsForChar(e,a,n){for(var t=0;t0){var i=e.glyphs.get(r);return i.getMetrics()}}return n}function average(e){for(var a=0,n=0;nf||void 0===a)&&f>0&&(a=f),f>m&&(m=f);var v=os2.getUnicodeRange(f);if(32>v)h|=1<v)o|=1<v)c|=1<v))throw new Error("Unicode ranges bits > 123 are reserved for internal usage");d|=1<0?ltag.make(w):void 0,L=post.make(),A=cff.make(e.glyphs,{version:e.getEnglishName("version"),fullName:E,familyName:C,weightName:N,postScriptName:O,unitsPerEm:e.unitsPerEm,fontBBox:[0,x.yMin,x.ascender,x.advanceWidthMax]}),F=e.metas&&Object.keys(e.metas).length>0?meta.make(e.metas):void 0,G=[b,M,S,T,B,R,L,A,k];U&&G.push(U),e.tables.gsub&&G.push(gsub.make(e.tables.gsub)),F&&G.push(F);var D=makeSfntTable(G),H=D.encode(),P=computeCheckSum(H),I=D.fields,j=!1;for(g=0;g=0&&255>=e,"Byte value should be between 0 and 255."),[e]},sizeOf.BYTE=constant(1),encode.CHAR=function(e){return[e.charCodeAt(0)]},sizeOf.CHAR=constant(1),encode.CHARARRAY=function(e){for(var n=[],t=0;t>8&255,255&e]},sizeOf.USHORT=constant(2),encode.SHORT=function(e){return e>=LIMIT16&&(e=-(2*LIMIT16-e)),[e>>8&255,255&e]},sizeOf.SHORT=constant(2),encode.UINT24=function(e){return[e>>16&255,e>>8&255,255&e]},sizeOf.UINT24=constant(3),encode.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},sizeOf.ULONG=constant(4),encode.LONG=function(e){return e>=LIMIT32&&(e=-(2*LIMIT32-e)),[e>>24&255,e>>16&255,e>>8&255,255&e]},sizeOf.LONG=constant(4),encode.FIXED=encode.ULONG,sizeOf.FIXED=sizeOf.ULONG,encode.FWORD=encode.SHORT,sizeOf.FWORD=sizeOf.SHORT,encode.UFWORD=encode.USHORT,sizeOf.UFWORD=sizeOf.USHORT,encode.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e]},sizeOf.LONGDATETIME=constant(8),encode.TAG=function(e){return check.argument(4===e.length,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},sizeOf.TAG=constant(4),encode.Card8=encode.BYTE,sizeOf.Card8=sizeOf.BYTE,encode.Card16=encode.USHORT,sizeOf.Card16=sizeOf.USHORT,encode.OffSize=encode.BYTE,sizeOf.OffSize=sizeOf.BYTE,encode.SID=encode.USHORT,sizeOf.SID=sizeOf.USHORT,encode.NUMBER=function(e){return e>=-107&&107>=e?[e+139]:e>=108&&1131>=e?(e-=108,[(e>>8)+247,255&e]):e>=-1131&&-108>=e?(e=-e-108,[(e>>8)+251,255&e]):e>=-32768&&32767>=e?encode.NUMBER16(e):encode.NUMBER32(e)},sizeOf.NUMBER=function(e){return encode.NUMBER(e).length},encode.NUMBER16=function(e){return[28,e>>8&255,255&e]},sizeOf.NUMBER16=constant(3),encode.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,255&e]},sizeOf.NUMBER32=constant(5),encode.REAL=function(e){var n=e.toString(),t=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(n);if(t){var o=parseFloat("1e"+((t[2]?+t[2]:0)+t[1].length));n=(Math.round(e*o)/o).toString()}var c,r,i="";for(c=0,r=n.length;r>c;c+=1){var a=n[c];i+="e"===a?"-"===n[++c]?"c":"b":"."===a?"a":"-"===a?"e":a}i+=1&i.length?"f":"ff";var f=[30];for(c=0,r=i.length;r>c;c+=2)f.push(parseInt(i.substr(c,2),16));return f},sizeOf.REAL=function(e){return encode.REAL(e).length},encode.NAME=encode.CHARARRAY,sizeOf.NAME=sizeOf.CHARARRAY,encode.STRING=encode.CHARARRAY,sizeOf.STRING=sizeOf.CHARARRAY,decode.UTF8=function(e,n,t){for(var o=[],c=t,r=0;c>r;r++,n+=1)o[r]=e.getUint8(n);return String.fromCharCode.apply(null,o)},decode.UTF16=function(e,n,t){for(var o=[],c=t/2,r=0;c>r;r++,n+=2)o[r]=e.getUint16(n);return String.fromCharCode.apply(null,o)},encode.UTF16=function(e){for(var n=[],t=0;t>8&255,n[n.length]=255&o}return n},sizeOf.UTF16=function(e){return 2*e.length};var eightBitMacEncodings={"x-mac-croatian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ","x-mac-cyrillic":"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю","x-mac-gaelic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ","x-mac-greek":"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­","x-mac-icelandic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-inuit":"ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł","x-mac-ce":"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ",macintosh:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-romanian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-turkish":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"};decode.MACSTRING=function(e,n,t,o){var c=eightBitMacEncodings[o];if(void 0===c)return void 0;for(var r="",i=0;t>i;i++){var a=e.getUint8(n+i);r+=127>=a?String.fromCharCode(a):c[127&a]}return r};var macEncodingTableCache="function"==typeof WeakMap&&new WeakMap,macEncodingCacheKeys,getMacEncodingTable=function(e){if(!macEncodingCacheKeys){macEncodingCacheKeys={};for(var n in eightBitMacEncodings)macEncodingCacheKeys[n]=new String(n)}var t=macEncodingCacheKeys[e];if(void 0===t)return void 0;if(macEncodingTableCache){var o=macEncodingTableCache.get(t);if(void 0!==o)return o}var c=eightBitMacEncodings[e];if(void 0===c)return void 0;for(var r={},i=0;i=128&&(r=t[r],void 0===r))return void 0;o[c]=r}return o},sizeOf.MACSTRING=function(e,n){var t=encode.MACSTRING(e,n);return void 0!==t?t.length:0},encode.INDEX=function(e){var n,t=1,o=[t],c=[];for(n=0;nc;c+=1){var r=parseInt(t[c],0),i=e[r];n=n.concat(encode.OPERAND(i.value,i.type)),n=n.concat(encode.OPERATOR(r))}return n},sizeOf.DICT=function(e){return encode.DICT(e).length},encode.OPERATOR=function(e){return 1200>e?[e]:[12,e-1200]},encode.OPERAND=function(e,n){var t=[];if(Array.isArray(n))for(var o=0;oc;c+=1){var r=e[c];t=t.concat(encode[r.type](r.value))}return wmm&&wmm.set(e,t),t},sizeOf.CHARSTRING=function(e){return encode.CHARSTRING(e).length},encode.OBJECT=function(e){var n=encode[e.type];return check.argument(void 0!==n,"No encoding function for type "+e.type),n(e.value)},sizeOf.OBJECT=function(e){var n=sizeOf[e.type];return check.argument(void 0!==n,"No sizeOf function for type "+e.type),n(e.value)},encode.TABLE=function(e){var n,t=[],o=e.fields.length,c=[],r=[];for(n=0;o>n;n+=1){var i=e.fields[n],a=encode[i.type];check.argument(void 0!==a,"No encoding function for field type "+i.type+" ("+i.name+")");var f=e[i.name];void 0===f&&(f=i.value);var d=a(f);"TABLE"===i.type?(r.push(t.length),t=t.concat([0,0]),c.push(d)):t=t.concat(d)}for(n=0;ns,"Table "+e.tableName+" too big."),t[u]=s>>8,t[u+1]=255&s,t=t.concat(c[n])}return t},sizeOf.TABLE=function(e){for(var n=0,t=e.fields.length,o=0;t>o;o+=1){var c=e.fields[o],r=sizeOf[c.type];check.argument(void 0!==r,"No sizeOf function for field type "+c.type+" ("+c.name+")");var i=e[c.name];void 0===i&&(i=c.value),n+=r(i),"TABLE"===c.type&&(n+=2)}return n},encode.RECORD=encode.TABLE,sizeOf.RECORD=sizeOf.TABLE,encode.LITERAL=function(e){return e},sizeOf.LITERAL=function(e){return e.length},exports.decode=decode,exports.encode=encode,exports.sizeOf=sizeOf; + +},{"./check":2}],33:[function(require,module,exports){ +"use strict";exports.isBrowser=function(){return"undefined"!=typeof window},exports.isNode=function(){return"undefined"==typeof window},exports.nodeBufferToArrayBuffer=function(r){for(var e=new ArrayBuffer(r.length),n=new Uint8Array(e),t=0;t/dev/null; then + echo -e "${GREEN}✓${NC} ($(du -h "${output}" | cut -f1))" + return 0 + fi + + # Try with wget as fallback + if wget -q -O "${output}" "${url}" 2>/dev/null; then + echo -e "${GREEN}✓${NC} ($(du -h "${output}" | cut -f1))" + return 0 + fi + + echo -e "${RED}✗ Failed${NC}" + rm -f "${output}" + return 1 +} + +# Download files +echo -e "${YELLOW}JavaScript Files:${NC}" +download_file "configurator.iife.js?v=mlaxicsg" +download_file "opentype.js" +echo "" + +echo -e "${YELLOW}CSS Files:${NC}" +download_file "configurator.css?v=mlaxicsg" +echo "" + +# Count downloaded files +DOWNLOADED=$(find "${OUTPUT_DIR}" -type f | wc -l) +echo -e "${GREEN}Download complete!${NC}" +echo "Total files downloaded: ${DOWNLOADED}" +echo "Location: ${OUTPUT_DIR}"